Minggu, 19 Mei 2013

Re: Bls: [belajar-access] QUERY MENJADIKAN ISI BEBERAPA RECORD MENJADI SATU RECORD

solusi alternatif, adalah dengan bermain query.
hampir sama dengan cara yang telah anda gunakan, tetapi kita gabungkan fungsi vba ke dalam query.

Dari simulasi table1, akan kita buat query seperti berikut

 

 

Dengan sql:

SELECT Table1.kode, Table1.nama, getNomor([kode]) AS nomor1

FROM Table1

GROUP BY Table1.kode, Table1.nama, getNomor([kode]);

 

 

 

 

Hasil running query, tampak bahwa nomor1 berisi gabungan dari nomor2 yang sesuai untuk P027

 

 

Berikut fungsi untuk getNomor:

 

 

Function getNomor(kode As String) As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strDummy As String
    
    On Error GoTo err_handle
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT nomor FROM table1 WHERE kode='" & kode & "'" _
        , dbOpenForwardOnly, dbForwardOnly, dbPessimistic)
    
    Do While Not rs.EOF
    
        strDummy = strDummy & rs(0) & ", "
        rs.MoveNext
    
    Loop
    
    getNomor = Left(strDummy, Len(strDummy) - 2)
    
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    
    Exit Function
err_handle:
    MsgBox Err.Description, vbInformation, "Error #" & Err.Number
    Set rs = Nothing
    Set db = Nothing
End Function



aksan kurdin

On 5/18/2013 10:24 AM, aksan kurdin wrote:
tadaaa.... :
gambar adalah seribu kata, dikata2in sendiri ya :)

aksan kurdin




On 5/16/2013 1:49 PM, Mas Uki wrote:
 
Alhamdulillah, ternyata sudah saya temukan solusinya, dengan menambahkan kode pada event afterupdate seperti berikut :

Private Sub IDTransSJ_AfterUpdate()
Dim db As Database
Dim rs As Recordset
Dim sql, sj As String

On Error Resume Next
' agar form yang mengandung tabel dengan Multivalue tersimpan recordnya
' sebab jika record belum disimpan, maka query dengan multivaluenya masih belum ada isinya
DoCmd.RunCommand acCmdSaveRecord

'buat recordset dari query hasil field multivalue yang sudah dicentang pengguna
Set db = CurrentDb
sql = "SELECT * FROM QDatadrPilihSJMaster"
Set rs = db.OpenRecordset(sql)

'simpan isi field Nomor (NoSJ) tiap record kedalam variabel
sj = ""
With rs
Do While Not .EOF
  sj = ![SJMASTER.NoSJ] & "|" & sj
  .MoveNext
Loop
rs.Close
End With

'mengisikan field Nomor dari variabel
NoSJ.Value = sj

End Sub

 


Best Regards,


Sukiono
PT. Kumala Kencana Cipta


Dari: Mas Uki <uqmas@yahoo.com>
Kepada: Group Access <belajar-access@yahoogroups.com>
Dikirim: Rabu, 15 Mei 2013 16:00
Judul: [belajar-access] QUERY MENJADIKAN ISI BEBERAPA RECORD MENJADI SATU RECORD

 
Assalamu'alaikum Wr. Wb.

Para Master Access, mohon pencerahan dan solusi, saya sedang membantu bagian akunting dengan membuat aplikasi kecil untuk membuat Invoice dan Faktur Pajak. Salah satu kriterianya adalah jika ada Customer dengan beberapa Surat Jalan sekaligus, maka beberapa Surat Jalan dapat dijadikan satu Invoice, untuk hal ini saya menggunakan fitur Multivalue yang ada di Access 2007 sehingga nanti pengguna tinggal centang Surat Jalan mana saja yang mau diproses jadi Invoice. Dengan ilustrasi data hasil query multivalue berikut, bagaimana caranya agar field Nomor isinya digabung menjadi satu (dengan pembatas karakter khusus)?

Hasil query dari pemilihan Multivalue
Kode Nama Nomor
P027 PT. KRISTAL BALI LESTARI 2013/SJ/05/0902
P027 PT. KRISTAL BALI LESTARI 2013/SJ/05/0928
P027 PT. KRISTAL BALI LESTARI 2013/SJ/05/0944

Ingin hasilnya menjadi :
Kode Nama Nomor
P027 PT. KRISTAL BALI LESTARI 2013/SJ/05/0902|2013/SJ/05/0928|2013/SJ/05/0944



Best Regards,


Sukiono
PT. Kumala Kencana Cipta
www.kumalahome.com
 




Tidak ada komentar:

Posting Komentar