231
detail_pengecekan where id_barang LIKE _ txtCari.Text order by datetime
Adodc1.Refresh DataGrid1.Refresh
ElseIf boxKategori.Text = NAMA BARANG Then Adodc1.RecordSource = select id_barang KODE BARANG, nama_barang NAMA
BARANG, id_op ID OP,username USERNAME, kegiatan KEGIATAN, datetime TANGGAL, datetime JAM, qty QTY,sisa PERSEDIAAN, satuan SATUAN from
detail_pengecekan where nama_barang LIKE _ txtCari.Text order by datetime
Adodc1.Refresh DataGrid1.Refresh
ElseIf boxKategori.Text = KEGIATAN Then Adodc1.RecordSource = select id_barang KODE BARANG, nama_barang NAMA
BARANG, id_op ID OP,username USERNAME, kegiatan KEGIATAN, datetime TANGGAL, datetime JAM, qty QTY,sisa PERSEDIAAN, satuan SATUAN from
detail_pengecekan where kegiatan LIKE _ txtCari.Text order by datetime
Adodc1.Refresh DataGrid1.Refresh
End If End Sub
Private Sub txtCari_KeyPressKeyAscii As Integer KeyAscii = AscUCaseChrKeyAscii
End Sub Private Sub Form_UnloadCancel As Integer
Do Until Me.Top = -9000 DoEvents
Me.Move Me.Left, Me.Top - 50 DoEvents
Loop End Sub
Private Sub txtJam1_Change cmdTampil.Enabled = True
End Sub Private Sub txtJam2_change
cmdTampil.Enabled = True End Sub
Private Sub txtTgl1_change cmdTampil.Enabled = True
End Sub Private Sub txtTgl2_Change
cmdTampil.Enabled = True End Sub
M. Form Laporan Data Barang
Private Sub cmdExcel_Click Dim rst As New ADODB.Recordset
Dim xlApp As Object Dim xlWb As Object
Dim xlWs As Object Dim recArray As Variant
Dim strDB As String
232
Dim fldCount As Integer Dim recCount As Long
Dim iCol As Integer Dim iRow As Integer
Buka koneksi dengan database Call konekDB
txtTgl1.Caption = Formattgl1.Value, yyyy-mm-dd txtTgl2.Caption = Formattgl2.Value, yyyy-mm-dd
Buka recordset berdasar tabel barang rsRating.Open select id_barang KODE BARANG, nama_barang NAMA BARANG,
tipe_barang TIPE BARANG, SUMqty as PENGAMBILAN, sisa PERSEDIAAN, satuan SATUAN from laporan_barang where datetime BETWEEN _
txtTgl1.Caption AND txtTgl2.Caption group by id_barang order by pengambilan desc, koneksi
Buat objek Excel dan tambahkan suatu workbook Set xlApp = CreateObjectExcel.Application
Set xlWb = xlApp.Workbooks.Add Set xlWs = xlWb.worksheets2 Sheet1
Menampilkan Excel dan memberi kontrol ke pemakai selama Excel dijalankan
xlApp.Visible = True xlApp.UserControl = True
Copy judul field ke baris pertama dari worksheet xlWs.Cells1, 1.Value = TANGGAL = Formattgl1.Value, dd MMMM yyyy -
Formattgl2.Value, dd MMMM yyyy fldCount = rsRating.Fields.Count
For iCol = 1 To fldCount xlWs.Cells2, iCol.Value = rsRating.FieldsiCol - 1.Name
Next Cek versi Excel
If ValMidxlApp.Version, 1, InStr1, xlApp.Version, . _ - 1 8 Then
EXCEL 2000 atau 2002: Gunakan CopyFromRecordset Copy recordset ke worksheet, mulai sel A2
xlWs.Cells3, 1.CopyFromRecordset rsRating Else
EXCEL 97 atau sebelumnya: Gunakan GetRows kemudian copy array ke Excel
Copy recordset ke suatu array recArray = rsRating.GetRows
Catatan: GetRows nilai kembaliannya adalah array berbasis 0 dimana dimensi pertama berisi field dan dimensi kedua berisi
record. Kita akan mentranspose array tersebut sehingga dimensi pertama berisi record
Menentukan jumlah record recCount = UBoundrecArray, 2 + 1 + 1 karena array berbasis 0
233
Array untuk mencek isi data apakah tidak valid ketika menyalin array ke worksheet Excel
For iCol = 0 To fldCount - 1 For iRow = 0 To recCount - 1
Perhatikan field Datetanggal If IsDaterecArrayiCol, iRow Then
recArrayiCol, iRow = _ FormatrecArrayiCol, iRow
Perhatikan array field objek OLE ElseIf IsArrayrecArrayiCol, iRow Then
recArrayiCol, iRow = Array Field End If
Next iRow record berikutnya Next iCol field berikutnya
Transpose dan Copy array ke worksheet, mulai sel A2
xlWs.Cells2, 1.ResizerecCount, fldCount.Value = _ TransposeDimrecArray
End If rst.Open select id_barang KODE BARANG, nama_barang NAMA BARANG,
tipe_barang TIPE BARANG, sisa PERSEDIAAN, satuan SATUAN from barang order by id_barang, koneksi
tambahkan suatu worksheet Set xlWs = xlWb.worksheets1 Sheet2
Menampilkan Excel dan memberi kontrol ke pemakai selama Excel dijalankan
xlApp.Visible = True xlApp.UserControl = True
Copy judul field ke baris pertama dari worksheet fldCount = rst.Fields.Count
For iCol = 1 To fldCount xlWs.Cells1, iCol.Value = rst.FieldsiCol - 1.Name
Next Cek versi Excel
If ValMidxlApp.Version, 1, InStr1, xlApp.Version, . _ - 1 8 Then
EXCEL 2000 atau 2002: Gunakan CopyFromRecordset Copy recordset ke worksheet, mulai sel A2
xlWs.Cells2, 1.CopyFromRecordset rst Else
EXCEL 97 atau sebelumnya: Gunakan GetRows kemudian copy array ke Excel
Copy recordset ke suatu array recArray = rst.GetRows
Catatan: GetRows nilai kembaliannya adalah array berbasis 0 dimana dimensi pertama berisi field dan dimensi kedua berisi
234
record. Kita akan mentranspose array tersebut sehingga dimensi pertama berisi record
Menentukan jumlah record recCount = UBoundrecArray, 2 + 1 + 1 karena array berbasis 0
Array untuk mencek isi data apakah tidak valid ketika menyalin array ke worksheet Excel
For iCol = 0 To fldCount - 1 For iRow = 0 To recCount - 1
Perhatikan field Datetanggal If IsDaterecArrayiCol, iRow Then
recArrayiCol, iRow = _ FormatrecArrayiCol, iRow
Perhatikan array field objek OLE ElseIf IsArrayrecArrayiCol, iRow Then
recArrayiCol, iRow = Array Field End If
Next iRow record berikutnya Next iCol field berikutnya
Transpose dan Copy array ke worksheet, mulai sel A2
xlWs.Cells2, 1.ResizerecCount, fldCount.Value = _ TransposeDimrecArray
End If Auto-fit lebar kolom dan tinggi baris
xlApp.Selection.CurrentRegion.Columns.AutoFit xlApp.Selection.CurrentRegion.Rows.AutoFit
Tutup objek ADO rst.Close
rsRating.Close koneksi.Close
Set rst = Nothing Set koneksi = Nothing
Lepaskan referensi Excel Set xlWs = Nothing
Set xlWb = Nothing Set xlApp = Nothing
End Sub Function TransposeDimv As Variant As Variant
Fungsi untuk metranspose array berbasi 0 v Dim X As Long, Y As Long, Xupper As Long, Yupper As Long
Dim tempArray As Variant Xupper = UBoundv, 2
Yupper = UBoundv, 1 ReDim tempArrayXupper, Yupper
For X = 0 To Xupper For Y = 0 To Yupper
235
tempArrayX, Y = vY, X Next Y
Next X TransposeDim = tempArray
End Function Private Sub cmdKeluar_Click
Unload Me End Sub
Private Sub Form_Load tgl1.Value = FormatDate, dd MMMM yyyy
tgl2.Value = FormatDate, dd MMMM yyyy End Sub
Private Sub Form_UnloadCancel As Integer Do Until Me.Top = -9000
DoEvents Me.Move Me.Left, Me.Top - 50
DoEvents Loop
End Sub
N. Form Pencarian Data Barang