السلام عليكم
هذا مثال يوضح كيف يمكن البحث وعرض البيانات باستخدام ComboBox أو DataCombo بطريقة ADO .
المكونات :
قاعدة بيانات تحتوي على جدول اسمه tbl مكون من اربعة حقول ( id , name , dept , ago ) ، و في الفيجول بيسك يوجد به ComboBox او DataCombo و ثلاثة TextBox .
طرقة عمله :
بعد فتح البرنامج وتعبئة Combo ، يختار المستخدم رقم الطالب من Combo فيقوم الحدث Click بالبحث على السجل اذا وجده يعرض بيانات هذا السجل في Text واذا لم يجد الرقم يعرض فراغ في Text .
ويمكن كتابة اي رقم في Combo ثم الضغط على (انتر) Enter ليبحث عنه في حقل رقم الطالب واذا لم يجده يعرض فراغ .
يوجد ملف ملحق يحتوي على المثال كامل .
وفي حال لا يمكن تنزيل الملف هذا الكود:
الكود باستخدام ComboBox
Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub Combo1_Click() 'عرض البيانات اذا كان رقم الطالب موجود Set rs = New ADODB.Recordset rs.Open "SELECT * FROM tbl WHERE id=" & Trim(Combo1.Text) & "", cn, adOpenStatic, adLockOptimistic If rs.RecordCount > 0 Then Set Text1.DataSource = rs Text1.DataField = "name" Set Text2.DataSource = rs Text2.DataField = "dept" Set Text3.DataSource = rs Text3.DataField = "ago" Else Text1.Text = "" Text2.Text = "" Text3.Text = "" End If End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call Combo1_Click Else If Not KeyAscii = 8 Then If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End If End If End Sub Private Sub Form_Load() Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" ' تعبئة Combo1 Set rs = New ADODB.Recordset rs.Open "SELECT id FROM tbl", cn, adOpenStatic, adLockOptimistic If Not rs.BOF Then rs.MoveFirst While Not rs.EOF Combo1.AddItem rs!id rs.MoveNext Wend End Sub
الكود باستخدام DataCombo
Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Private Sub dataCombo1_Click(Area As Integer) 'عرض البيانات اذا كان رقم الطالب موجود If Trim(DataCombo1.Text) <> "" Then Set rs = New ADODB.Recordset rs.Open "SELECT * FROM tbl WHERE id=" & Trim(DataCombo1.Text) & "", cn, adOpenStatic, adLockOptimistic If rs.RecordCount > 0 Then Set Text1.DataSource = rs Text1.DataField = "name" Set Text2.DataSource = rs Text2.DataField = "dept" Set Text3.DataSource = rs Text3.DataField = "ago" Else Text1.Text = "" Text2.Text = "" Text3.Text = "" End If End If End Sub Private Sub dataCombo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call dataCombo1_Click(0) Else If Not KeyAscii = 8 Then If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End If End If End Sub Private Sub Form_Load() Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" 'تعبئة DataCombo1 Set rs = New ADODB.Recordset rs.Open "SELECT id FROM tbl", cn, adOpenStatic, adLockOptimistic Set DataCombo1.RowSource = rs DataCombo1.ListField = "id" End Sub
والسلام عليكم
