Selasa, 02 Agustus 2011

Template Source Code VB6+Database Ms.Access

Berikut ini adalah contoh source code untuk menangani database, lengkap dengan  fungsi/prosedur menambah, menyimpan, mengedit, menghapus, navigasi, mencari pertama, mencari berikutnya, memfilter, dan menyortir data. Sangat cocok untuk digunakan sebagai template untuk menangani pemrograman database menggunakan coding yang memerlukan validasi data dan penanganan khusus lainnya.di visual basic 6, untuk mempraktekannya siapkan :
1. Buat 1 Project baru dengan 2 Form, beri nama frmData & frmInfo.
2. Pada form tersebut, buat control sesuai coding di bawah ini.
3. Tambahkan reference "Microsoft ActiveX Data Objects 2.0 Library"  dari menu Project->References...
4. Tambahkan component "Microsoft Common Dialog Control 6.0 (SP3)"  dari menu Project->Components...
5. Copy-kan coding berikut ke dalam editor form yang bertalian.

          '--------------- Coding di frmData ---------------------
          Dim db As Connection
          Dim WithEvents adoPrimaryRS As Recordset
          Dim WithEvents rsCariData As Recordset
          Dim cekID As Recordset

          Dim mbChangedByCode As Boolean
          Dim mvBookMark As Variant
          Dim mbEditFlag As Boolean
          Dim mbAddNewFlag As Boolean

          Dim mbDataChanged As Boolean
          Dim HasiBatal As Boolean
          Dim NomorData As Integer
          Dim Cari, Cari1, Hasil, Hasil1 As String


          Public Sub EnablePicture(InFrame As PictureBox, _
                     ByVal Flag As Boolean)
          'Untuk mengaktifkan/menon-aktifkan control dalam
          'satu picture/frame tertentu secara menyeluruh...

          Dim Contrl As Control
          On Error Resume Next 'Jika error, lanjutkan saja
            InFrame.Enabled = Flag
            'Utk setiap control yg ada di dalam picture/frame ybt

            For Each Contrl In InFrame.Parent.Controls
               If (Contrl.Container.Name = InFrame.Name) Then
                  If (TypeOf Contrl Is Frame) And Not _
                     (Contrl.Name = InFrame.Name) Then

                    EnablePicture Contrl, Flag
                  Else
                    If Not (TypeOf Contrl Is Menu) Then _
                       Contrl.Enabled = Flag
                  End If

               End If
            Next
          End Sub


          Private Sub cmdAbout_Click()
            MsgBox "(c) Masino Sinaga, 7 Mei 2002", vbInformation, "About"
          End Sub


          Private Sub cmdClearSearch_Click()
          'Membersihkan kriteria pencarian
          Dim Jawab As Integer
           If Len(Cari) = 0 Then
              MsgBox "Belum ada kriteria pencarian.", _

                     vbInformation, "Kriteria Masih Kosong"
              Exit Sub
           Else
              Jawab = MsgBox("Kriteria pencarian sebelumnya = " _

                      & Cari & "" & Chr(13) & _
                      "Anda yakin ingin menghapusnya?", _
                      vbQuestion + vbYesNo, "Reset Pencarian")
           End If

           If Jawab = vbYes Then
             cmdFindFirst.Enabled = True
             frmInfo.cmdFindFirst.Enabled = True
             Cari = ""
             Hasil = ""

             frmInfo.Text1 = ""
           End If
          End Sub


          Private Sub cmdFilter_Click()

          Dim kriteria As String
          On Error GoTo Pesan

            Set rsCariData = New Recordset
            kriteria = InputBox("Masukkan data apa saja yang diketahui:", "Saring/Filter Data")
            If kriteria = "" Then Exit Sub
            Set adoPrimaryRS = New Recordset
            adoPrimaryRS.Open "SHAPE " & _

                              "{select NIM,Nama,Nippos,Alamat," & _
                              "Tgl_lahir from t_mhs " & _
                              "WHERE NIM LIKE '%" & kriteria & "%' OR " & _
                              "Nama LIKE '%" & kriteria & "%' OR " & _

                              "Nippos LIKE '%" & kriteria & "%' OR " & _
                              "Alamat LIKE '%" & kriteria & "%' OR " & _
                              "Tgl_lahir LIKE '%" & kriteria & "%' " & _
                              "ORDER BY NIM} " & _

                              "AS ParentCMD " & _
                              "APPEND ({select NIM,Nama,Nippos," & _
                              "Alamat,Tgl_lahir from t_mhs " & _
                              "WHERE NIM LIKE '%" & kriteria & "%' OR " & _
                              "Nama LIKE '%" & kriteria & "%' OR " & _

                              "Nippos LIKE '%" & kriteria & "%' OR " & _
                              "Alamat LIKE '%" & kriteria & "%' OR " & _
                              "Tgl_lahir LIKE '%" & kriteria & "%' " & _
                              "ORDER BY NIM} " & _

                              "AS ChildCMD RELATE NIM TO NIM) " & _
                              "AS ChildCMD", db, _
                              adOpenStatic, adLockOptimistic
           

            If adoPrimaryRS.RecordCount > 0 Then
               Set grdDataGrid.DataSource = adoPrimaryRS.DataSource
               Dim oTextData As TextBox
               For Each oTextData In Me.txtFields
                   Set oTextData.DataSource = adoPrimaryRS.DataSource

               Next
            Else
               cmdRefresh_Click
               MsgBox "'" & kriteria & "' tidak ditemukan" & Chr(13) & _

                      "dalam data t_mhs!", vbCritical, "Tidak Ditemukan"
            End If
            Exit Sub
          Pesan:

               MsgBox "'" & kriteria & "' tidak ditemukan" & Chr(13) & _
                      "dalam data t_mhs!", vbCritical, "Tidak Ditemukan"
          End Sub

          Private Sub cmdSortASC_Click()

          Dim kriteria As String
          On Error GoTo Pesan
          Set rsCariData = New Recordset
            kriteria = InputBox("Masukkan field yang akan di-sortd ASCENDING:" & vbCrLf & _

                                "(Pilih salah satu: NIM atau Nama atau" & vbCrLf & _
                                "Nippos atau Alamat atau Tgl_lahir)", "Saring/Filter Data")
            If kriteria = "" Then Exit Sub
            Set adoPrimaryRS = New Recordset

            adoPrimaryRS.Open "SHAPE {select NIM,Nama,Nippos,Alamat," & _
                              "Tgl_lahir from t_mhs ORDER BY " _
                              & kriteria & " ASC} AS ParentCMD APPEND " & _
                              "({select NIM,Nama,Nippos,Alamat, " & _
                              "Tgl_lahir from t_mhs ORDER BY " _

                              & kriteria & " ASC} AS ChildCMD RELATE NIM " & _
                              "TO NIM) AS ChildCMD", db, _
                              adOpenStatic, adLockOptimistic
            Set grdDataGrid.DataSource = adoPrimaryRS.DataSource

            Dim oTextData As TextBox
            For Each oTextData In Me.txtFields
                Set oTextData.DataSource = adoPrimaryRS.DataSource
            Next

            Exit Sub
          Pesan:
               MsgBox "Field '" & kriteria & "' tidak ditemukan" & Chr(13) & _
                      "dalam data t_mhs! Ganti dengan field:" & vbCrLf & _
                      "NIM atau Nama atau Nippos atau Alamat" & vbCrLf & _

                      "atau Tgl_lahir", vbCritical, "Tidak Ditemukan"
          End Sub

          Private Sub cmdSortDESC_Click()

          Dim kriteria As String
          On Error GoTo Pesan
          Set rsCariData = New Recordset
            kriteria = InputBox("Masukkan field yang akan di-sortd DESCENDING:" & vbCrLf & _

                                "(Pilih salah satu: NIM atau Nama atau" & vbCrLf & _


                                "Nippos atau Alamat atau Tgl_lahir)", "Saring/Filter Data")
            If kriteria = "" Then Exit Sub

            Set adoPrimaryRS = New Recordset
            adoPrimaryRS.Open "SHAPE {select NIM,Nama,Nippos,Alamat," & _
                              "Tgl_lahir from t_mhs ORDER BY " _
                              & kriteria & " DESC} AS ParentCMD APPEND " & _
                              "({select NIM,Nama,Nippos,Alamat, " & _

                              "Tgl_lahir from t_mhs ORDER BY " _
                              & kriteria & " DESC} AS ChildCMD RELATE NIM " & _
                              "TO NIM) AS ChildCMD", db, _
                              adOpenStatic, adLockOptimistic

           
            Set grdDataGrid.DataSource = adoPrimaryRS.DataSource
            Dim oTextData As TextBox
            For Each oTextData In Me.txtFields

                Set oTextData.DataSource = adoPrimaryRS.DataSource
            Next
            Exit Sub
          Pesan:
               MsgBox "Field '" & kriteria & "' tidak ditemukan" & Chr(13) & _

                      "dalam data t_mhs! Ganti dengan field:" & vbCrLf & _
                      "NIM atau Nama atau Nippos atau Alamat" & vbCrLf & _
                      "atau Tgl_lahir", vbCritical, "Tidak Ditemukan"
          End Sub


          Private Sub cmdUnFilter_Click()
            cmdRefresh_Click
            EnablePicture picButtons, True

            cmdUpdate.Enabled = False
            cmdCancel.Enabled = False
          End Sub

          Private Sub rsCariData_MoveComplete(ByVal adReason As _

                      ADODB.EventReasonEnum, ByVal pError As _
                      ADODB.Error, adStatus As ADODB.EventStatusEnum, _
                      ByVal pRecordset As ADODB.Recordset)
              NomorData = rsCariData.AbsolutePosition

              lblStatus.Caption = "Data ke-" & CStr(NomorData) & "" & _
                                  "dari " & rsCariData.RecordCount
          End Sub


          'Untuk mencari sembarang data mulai record pertama
          'di seluruh field ybt
          Private Sub cmdFindFirst_Click()
          Dim adoCari As Recordset
            adoPrimaryRS.MoveFirst

            Set adoCari = New Recordset
            If Cari = "" Then
               Cari = UCase(InputBox("Masukkan data apa saja " & _
                      "yang diketahui: ", "Cari Data"))

            Else
               Cari = Cari1
            End If
            If StrPtr(Cari) = 0 Or Cari = "" Then Exit Sub

          Ulang:
            If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
               cmdLast_Click
               MsgBox "Data " & Cari & " tidak ditemukan!", _
                      vbCritical, "Tidak Ditemukan"

                  FileName = "Info.txt"
                  Open FileName For Output As #1
                       frmInfo.Text1 = "Data " & Cari & " tidak ditemukan!"
                       Print #1, frmInfo.Text1.Text

                  Close #1
                  Open FileName For Input As #1
                       frmInfo.Text1.Text = Input(LOF(1), 1)
                  Close #1

               Exit Sub
            End If
            For i = 0 To 4
              Hasil = UCase(txtFields(i).Text)
              If InStr(1, UCase(txtFields(i).Text), UCase(Cari)) > 0 Then

                 FileName = "Info.txt"
                 Open FileName For Output As #1
                   frmInfo.Text1.SelStart = Len(frmInfo.Text1.Text)
                   frmInfo.Text1 = "" & frmInfo.Text1.Text & "Ditemukan data '" & Cari & "' pada:" & vbCrLf & _

                                   "----------------------" & String(Len(Cari) + 1, "-") & "" & vbCrLf & _
                                   ""
                   Print #1, frmInfo.Text1.Text
                 Close #1

                 For j = 0 To 4

                    Hasil = UCase(txtFields(j).Text)
                    If InStr(1, UCase(txtFields(j).Text), UCase(Cari)) > 0 Then

                       Cari1 = Cari
                       'Jika ketemu, beritahu user di field
                       'mana saja data yg dicari berada
                       Open FileName For Output As #1
                         frmInfo.Text1.SelStart = Len(frmInfo.Text1.Text)

                         frmInfo.Text1 = "" & frmInfo.Text1.Text & "" & vbCrLf & _
                           "  Record ke-" & CStr(adoPrimaryRS.AbsolutePosition) & "" & vbCrLf & _
                           "  - Nama field: " & txtFields(j).DataField & "" & vbCrLf & _
                           "  - Isi field : " & txtFields(j).Text & "" & vbCrLf & _

                           "  - Kolom ke  : " & j + 1 & " di tabel."
                         cmdFindFirst.Enabled = False
                         frmInfo.cmdFindFirst.Enabled = False
                         Print #1, frmInfo.Text1.Text

                       Close #1
                       Open FileName For Input As #1
                         frmInfo.Text1.Text = Input(LOF(1), 1)
                         frmInfo.Text1.SelStart = Len(frmInfo.Text1.Text) + 1
                       Close #1

                       frmInfo.Show
                       SendKeys "{Home}+{End}"
                    Else
                    End If

                 Next j
                 Exit Sub
              Else
              End If

            Next i
            'Jika di record I tdk ketemu, maju ke record berikut
            adoPrimaryRS.MoveNext
            GoTo Ulang
          End Sub


          'Untuk mencari sembarang data pada record berikutnya
          'di seluruh field mulai record I s.d. terakhir
          'di mana kriteria pencarian telah diketahui

          'pada saat pencarian pertama di atas...
          Private Sub cmdFindNext_Click()
          Cari1 = Cari
          'Jika belum pernah pencarian pertama,

          If Len(Trim(Hasil)) = 0 Then
             'MsgBox "Klik dulu tombol Find First", vbCritical, "Find First"
             cmdFindFirst_Click
             Exit Sub
          End If

          'Jika sudah pernah dicari sebelumnya
          adoPrimaryRS.MoveNext
          Ulang:
            'Jika tdk ketemu

            If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
               cmdLast_Click
               MsgBox "Data " & Cari & " tidak ditemukan!", vbCritical, "Tidak Ditemukan"
               Exit Sub

            End If
            For n = 0 To 4
              Hasil = UCase(txtFields(n).Text)
              If InStr(1, UCase(txtFields(n).Text), UCase(Cari1)) > 0 Then
                 For m = 0 To 4

                    Hasil = UCase(txtFields(m).Text)
                    If InStr(1, UCase(txtFields(m).Text), UCase(Cari1)) > 0 Then
                       'Jika ketemu, beritahu user di field
                       'mana saja data yg dicari berada

                       FileName = "Info.txt"
                       Open FileName For Output As #1
                         frmInfo.Text1.SelStart = Len(frmInfo.Text1.Text)
                         frmInfo.Text1 = "" & frmInfo.Text1.Text & "" & vbCrLf & _

                           "  Record ke-" & CStr(adoPrimaryRS.AbsolutePosition) & "" & vbCrLf & _
                           "  - Nama field: " & txtFields(m).DataField & "" & vbCrLf & _
                           "  - Isi field : " & txtFields(m).Text & "" & vbCrLf & _
                           "  - Kolom ke  : " & m + 1 & " di tabel."
                         Print #1, frmInfo.Text1.Text

                       Close #1
                       Open FileName For Input As #1
                         frmInfo.Text1.Text = Input(LOF(1), 1)
                         frmInfo.Text1.SelStart = Len(frmInfo.Text1.Text) + 1

                       Close #1
                       frmInfo.Show
                       SendKeys "{Home}+{End}"
                    Else

                    End If

                 Next m
                 Exit Sub

              Else
              End If
            Next n
            adoPrimaryRS.MoveNext
            GoTo Ulang

          End Sub

          Private Sub cmdView_Click()
            frmInfo.Show

          End Sub


          Private Sub Form_Load()

          On Error GoTo Pesan
            HasilBatal = False
            Set db = New Connection
            db.CursorLocation = adUseClient
            'Jika Anda menggunakan database tanpa dipassword dalam satu folder

            'dengan aplikasi, Anda dapat menggunakan db.Open di bawah ini...
            'db.Open "PROVIDER=MSDataShape;Data PROVIDER=" & _
            '        "Microsoft.Jet.OLEDB.3.51;Data Source=" _
            '        & App.Path & "\mahasiswa.mdb;"

           
            'Jika Anda menggunakan database yang dipassword, dalam satu folder
            'dengan aplikasi, Anda dapat menggunakan db.Open di bawah ini...
            'db.Open "PROVIDER=MSDataShape;Data PROVIDER=" & _

            '        "Microsoft.Jet.OLEDB.3.51;Data Source=" _
            '        & App.Path & " \mahasiswa.mdb;Jet OLEDB:" & _
            '        "Database Password=passwordanda;"
           
            'Jika Anda menggunakan DSN (ODBC) untuk koneksi ke database,

            'gunakan db.Open di bawah...
            db.Open "PROVIDER=MSDataShape;Data PROVIDER=MSDASQL;" & _
                    "dsn=mahasiswa;uid=;pwd=;"
           

            Set adoPrimaryRS = New Recordset
            'Dalam contoh ini kita menampilkan data keseluruhan di grid bawah,
            'sementara untuk setiap data yang ditampilkan berada di atasnya...
            'Sesuaikan setiap field di bawah dengan field di database Anda...

            adoPrimaryRS.Open "SHAPE {select NIM,Nama,Nippos,Alamat," & _
                              "Tgl_lahir from t_mhs Order by NIM} " & _
                              "AS ParentCMD APPEND ({select NIM," & _
                              "Nama,Nippos,Alamat,Tgl_lahir FROM t_mhs " & _
                              "ORDER BY NIM } AS ChildCMD RELATE NIM " & _

                              "TO NIM) AS ChildCMD", db, _
                              adOpenStatic, adLockOptimistic
            Dim oText As TextBox
            'Hubungkan setiap textbox ke recordset

            For Each oText In Me.txtFields
              Set oText.DataSource = adoPrimaryRS
            Next
            'Hubungkan recordset ke grid (tabel)

            Set grdDataGrid.DataSource = adoPrimaryRS.DataSource
            mbDataChanged = False
            Kunci  'Kunci tampilan data di bagian atas
            grdDataGrid.Enabled = True
            'Jika database kosong, siap-siap untuk menambah data...

            If adoPrimaryRS.RecordCount < 1 Then
               MsgBox "Database masih kosong!", vbCritical, _
                      "Database Kosong"
               BukaKunci     'Buka kunci entrian terlebih dulu...

               cmdAdd_Click
            End If
            Exit Sub
          Pesan: 'Jika menggunakan DSN, berarti belum konek

            MsgBox Err.Number & " - " & Err.Description
            End  'dan langsung selesai dengan aplikasi
          End Sub

          Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

            'End
            Set adoPrimaryRS = Nothing  'Bersihkan memori
            db.Close 'Tutup database
            Set db = Nothing  'Bersihkan memori

          End Sub

          'Ini untuk memeriksa penekanan tombol di keyboard...
          Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

            If mbEditFlag Or mbAddNewFlag Then Exit Sub

            Select Case KeyCode
              Case vbKeyEscape

                cmdClose_Click
              Case vbKeyEnd
                cmdLast_Click
              Case vbKeyHome
                cmdFirst_Click

              Case vbKeyUp, vbKeyPageUp
                If Shift = vbCtrlMask Then
                  cmdFirst_Click
                Else

                  cmdPrevious_Click
                End If
              Case vbKeyDown, vbKeyPageDown
                If Shift = vbCtrlMask Then

                  cmdLast_Click
                Else
                  cmdNext_Click
                End If
            End Select

          End Sub

          'Normalkan mouse jika sudah selesai
          Private Sub Form_Unload(Cancel As Integer)

            Screen.MousePointer = vbDefault
          End Sub

          'Menampilkan record pada posisi aktif dari recordset...

          Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As _
                      ADODB.EventReasonEnum, ByVal pError As _
                      ADODB.Error, adStatus As ADODB.EventStatusEnum, _
                      ByVal pRecordset As ADODB.Recordset)
            NomorData = adoPrimaryRS.AbsolutePosition

            lblStatus.Caption = "Record ke-" & CStr(NomorData) & " dari " _
                                & adoPrimaryRS.RecordCount
          End Sub


          Private Sub adoPrimaryRS_WillChangeRecord(ByVal adReason As _
                      ADODB.EventReasonEnum, ByVal cRecords As Long, _
                      adStatus As ADODB.EventStatusEnum, _
                      ByVal pRecordset As ADODB.Recordset)

            'Selain di setiap prosedur, Anda juga bisa membuat validasi
            'di sini. Ini adalah event yang dipanggil ketika
            'kejadian berikut terjadi...
            Dim bCancel As Boolean
            Select Case adReason

            Case adRsnAddNew
            Case adRsnClose
            Case adRsnDelete
            Case adRsnFirstChange

            Case adRsnMove
            Case adRsnRequery
            Case adRsnResynch
            Case adRsnUndoAddNew

            Case adRsnUndoDelete
            Case adRsnUndoUpdate
            Case adRsnUpdate
            End Select
            If bCancel Then adStatus = adStatusCancel

          End Sub

          Private Sub cmdAdd_Click()
            On Error GoTo AddErr

            With adoPrimaryRS
              If Not (.BOF And .EOF) Then
                mvBookMark = .Bookmark
              End If

              BukaKunci     'Buka kunci entrian terlebih dulu...
              .AddNew
              lblStatus.Caption = "Add record"
              mbAddNewFlag = True
              SetButtons False

            End With
            EnablePicture picUtility, False
            grdDataGrid.Enabled = False  'Kunci tabel agar tdk error
            On Error Resume Next

            txtFields(0).SetFocus
            Exit Sub
          AddErr:
            MsgBox Err.Description

          End Sub

          Private Sub cmdDelete_Click()

            On Error GoTo DeleteErr
            If MsgBox("Yakin record ini mau dihapus", _
                      vbQuestion + vbYesNo, "Hapus Record") _
                      <> vbYes Then
               Exit Sub

            End If
            With adoPrimaryRS
              .Delete
              .MoveNext

              If .EOF Then .MoveLast
            End With
            Exit Sub
          DeleteErr:

            MsgBox Err.Description
          End Sub

          Private Sub cmdRefresh_Click()
            'Refresh sangat penting untuk aplikasi multi user

            On Error GoTo RefreshErr
            If HasilBatal = True Then
               SetButtons True
               HasilBatal = False

            End If
            cmdAdd.Enabled = True
            cmdEdit.Enabled = True
            cmdDelete.Enabled = True

            cmdRefresh.Enabled = True
            Set grdDataGrid.DataSource = Nothing
            Set adoPrimaryRS = New Recordset
            adoPrimaryRS.Open "SHAPE {select NIM,Nama,Nippos,Alamat," & _
                              "Tgl_lahir from t_mhs Order by NIM} " & _

                              "AS ParentCMD APPEND ({select NIM," & _
                              "Nama,Nippos,Alamat,Tgl_lahir FROM t_mhs " & _
                              "ORDER BY NIM } AS ChildCMD RELATE NIM " & _
                              "TO NIM) AS ChildCMD", db, _

                              adOpenStatic, adLockOptimistic
           
            Dim oText As TextBox
            'Hubungkan textbox dengan recordset

            For Each oText In Me.txtFields
              Set oText.DataSource = adoPrimaryRS
            Next
            Set grdDataGrid.DataSource = adoPrimaryRS.DataSource
            grdDataGrid.Enabled = True

            Exit Sub
          RefreshErr:
            cmdAdd.Enabled = False
            cmdEdit.Enabled = False

            cmdUpdate.Enabled = False
            cmdDelete.Enabled = False
            cmdCancel.Enabled = False
            cmdRefresh.Enabled = True

            mbEditFlag = False
            mbAddNewFlag = False
            adoPrimaryRS.CancelUpdate
            If mvBookMark <> 0 Then
                adoPrimaryRS.Bookmark = mvBookMark

            Else
                adoPrimaryRS.MoveFirst
            End If
            mbDataChanged = False

            HasilBatal = True
            cmdRefresh_Click  'Jadi, langsung otomatis refresh
            Exit Sub
          End Sub


          Private Sub cmdEdit_Click()
            On Error GoTo EditErr
            EnablePicture picUtility, False
            lblStatus.Caption = "Edit record"

            mbEditFlag = True
            SetButtons False
            BukaKunci 'Buka kunci textbox agar bisa diedit
            Exit Sub

          EditErr:
            MsgBox Err.Description
          End Sub


          Private Sub cmdCancel_Click()
            On Error Resume Next

            Kunci    'Kunci kembali textbox
            cmdRefresh_Click

            grdDataGrid.Enabled = True
            If HasilBatal = True Then
               EnablePicture picUtility, True
               Exit Sub
            End If

            SetButtons True
            mbEditFlag = False
            mbAddNewFlag = False
            adoPrimaryRS.CancelUpdate

            If mvBookMark > 0 Then
              adoPrimaryRS.Bookmark = mvBookMark
            Else
              adoPrimaryRS.MoveFirst

            End If
            mbDataChanged = False
            EnablePicture picUtility, True
          End Sub


          Private Sub cmdUpdate_Click()
          Dim i As Integer
            On Error GoTo UpdateErr
            For i = 0 To 4

              If txtFields(i).Text = "" Then
                 MsgBox "Semua data harus diisi!", _
                        vbCritical, "Isi Semua Data"
                 txtFields(i).SetFocus

                 Exit Sub
              End If
            Next i
            Set cekID = New Recordset
            cekID.Open "SELECT * FROM t_mhs WHERE NIM=" & _

                       "'" & Trim(txtFields(0).Text) & "'", db
            If cekID.RecordCount > 0 And mbAddNewFlag Then
               MsgBox "NIM sudah ada. Ganti dengan yang lain!", _
                      vbCritical, "NIM Sudah Ada"

               txtFields(0).SetFocus: SendKeys "{Home}+{End}"
               Set cekID = Nothing
               Exit Sub
            End If

            adoPrimaryRS.UpdateBatch adAffectAll
            EnablePicture picUtility, True
            If mbAddNewFlag Then
              adoPrimaryRS.MoveLast
            End If

            mbEditFlag = False
            mbAddNewFlag = False
            SetButtons True
            mbDataChanged = False

            Kunci  'Kunci kembali textbox entrian
            grdDataGrid.Enabled = True
            NomorData = adoPrimaryRS.AbsolutePosition
            lblStatus.Caption = "Record ke-" & CStr(NomorData) & _

                                " dari " & adoPrimaryRS.RecordCount
            Exit Sub
          UpdateErr:
            MsgBox Err.Description
          End Sub


          Private Sub cmdClose_Click()
            Unload Me
          End Sub


          Private Sub cmdFirst_Click()
            On Error GoTo GoFirstError
            adoPrimaryRS.MoveFirst

            mbDataChanged = False
            Exit Sub
          GoFirstError:
            MsgBox Err.Description
          End Sub


          Private Sub cmdLast_Click()
            On Error GoTo GoLastError
            adoPrimaryRS.MoveLast

            mbDataChanged = False
            Exit Sub
          GoLastError:
            MsgBox Err.Description

          End Sub

          Private Sub cmdNext_Click()

            On Error GoTo GoNextError
            If Not adoPrimaryRS.EOF Then adoPrimaryRS.MoveNext
            If adoPrimaryRS.EOF And adoPrimaryRS.RecordCount > 0 Then
              Beep
              adoPrimaryRS.MoveLast 'Jika mencapai akhir file...

            End If
            mbDataChanged = False 'Tampilkan record yang aktif
            Exit Sub
          GoNextError:

            MsgBox Err.Description
          End Sub

          Private Sub cmdPrevious_Click()

            On Error GoTo GoPrevError
            If Not adoPrimaryRS.BOF Then adoPrimaryRS.MovePrevious
            If adoPrimaryRS.BOF And adoPrimaryRS.RecordCount > 0 Then
              Beep
              adoPrimaryRS.MoveFirst 'Jika mencapai awal file...

            End If
            mbDataChanged = False 'Tampilkan record yang aktif
            Exit Sub
          GoPrevError:

            MsgBox Err.Description
          End Sub

          Private Sub SetButtons(bVal As Boolean)

            cmdAdd.Enabled = bVal
            cmdEdit.Enabled = bVal
            cmdUpdate.Enabled = Not bVal
            cmdCancel.Enabled = Not bVal
            cmdDelete.Enabled = bVal

            cmdClose.Enabled = bVal
            cmdRefresh.Enabled = bVal
            cmdNext.Enabled = bVal
            cmdFirst.Enabled = bVal

            cmdLast.Enabled = bVal
            cmdPrevious.Enabled = bVal
          End Sub


          Private Sub txtFields_KeyPress(Index As Integer, KeyAscii As Integer)
            Select Case Index  'Agar ketika ditekan enter dapat pindah...
                   Case 0 To 4
                        If KeyAscii = 13 Then SendKeys "{Tab}"
            End Select

          End Sub

          Sub Kunci()   'Kunci textbox dan grid
          Dim i As Integer

            For i = 0 To 4
              txtFields(i).Locked = True
            Next i
            grdDataGrid.Enabled = False

          End Sub

          Sub BukaKunci() 'Buka kunci textbox dan grid
          Dim i As Integer
            For i = 0 To 4

              txtFields(i).Locked = False
            Next i
            grdDataGrid.Enabled = True
          End Sub

          '--------------- Akhir coding di frmData -------------------

          '--------------- Coding di frmInfo ---------------------
          Private Sub cmdClearSearch_Click()

            'tombol cmdClearSearch di frmData diklik...
            frmData.cmdClearSearch.Value = True
          End Sub

          Private Sub cmdFindFirst_Click()

            'tombol FindFirst di frmData diklik...
            frmData.cmdFindFirst.Value = True
          End Sub


          Private Sub cmdFindNext_Click()
            'tombol FindNext di frmData diklik...
            frmData.cmdFindNext.Value = True
          End Sub


          Private Sub cmdOK_Click()

            Me.Hide
          End Sub


          Private Sub cmdSimpan_Click()
          On Error GoTo Batal  'Jika batal menyimpan file pergi ke Batal
          If Text1.Text <> "" Then
             With Dialog

               .DialogTitle = "Simpan sebagai file teks"
               .Filter = "*.txt|*.txt"  'Hanya file txt yg bisa disimpan
               .FileName = "HasilCari"
               .ShowSave                'Tampilkan kotak dialog simpan file

               Open .FileName For Output As #1  'Simpan ke file
                  Print #1, Text1.Text
               Close #1  'Tutup file
             End With:   Exit Sub

          Else
             MsgBox "Belum ada hasil pencarian!", vbCritical, "Kosong"
             Exit Sub
          End If
          Batal:  'Label jika batal menyimpan

             Exit Sub   'Langsung keluar dari prosedur ini
          End Sub
          '--------------- Akhir coding di frmInfo -------------------

Tags:
contoh program vb6, contoh fungsi di vb6, cara penggunaan fungsi vb, tutorial vb6, download tutorial vb6, vb6 tutorial download, dasar dasar vb6, belajar vb6, cara mudah belajar vb6, vb6 artikel download, vb6 blog, contoh program vb6, artikel vb6, semua tentang vb6, vb6 api, cara menggunakan module, cara menggunakan class module

Ditulis Oleh : Wahyu Aji // 19.07
Kategori:

0 komentar:

Posting Komentar