الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما الخطأ فى هذا الاستعلام

مغلق
بدأه كفاح في 4 أبريل 2006 · 4 رد · 736 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

احتاج الى القيام بعمل استعلام عن طريق رز امر وتيكست وعرض النتيجة فى MSFlexGrid وقمت بكتابة هذا الكود فى الزر الامر

Data1.Recordset = "select *from [Customer]where [CustomerID]like'" & Text1.Text & "%'"
Data1.Refresh
Call flex

وهذا كود استيل لل MSFlexGrid

Sub flex()
On Error Resume Next
MSFlexGrid1.ColWidth(1) = 800
MSFlexGrid1.ColWidth(2) = 3000
MSFlexGrid1.ColWidth(3) = 1000
MSFlexGrid1.ColWidth(4) = 1500
MSFlexGrid1.ColWidth(5) = 2000
MSFlexGrid1.ColWidth(6) = 1500
MSFlexGrid1.ColWidth(7) = 1500
MSFlexGrid1.ColWidth(8) = 2500
MSFlexGrid1.ColWidth(9) = 1500
MSFlexGrid1.ColWidth(10) = 1500
MSFlexGrid1.Row = 0
MSFlexGrid1.TextMatrix(0, 1) = "رقم العميل"
MSFlexGrid1.Row = 1
MSFlexGrid1.TextMatrix(0, 2) = "أسم العميل"
MSFlexGrid1.Row = 2
MSFlexGrid1.TextMatrix(0, 5) = "العنوان"
MSFlexGrid1.Row = 3
MSFlexGrid1.TextMatrix(0, 4) = "المدينة"
MSFlexGrid1.Row = 4
MSFlexGrid1.TextMatrix(0, 3) = "البلد"
MSFlexGrid1.Row = 5
MSFlexGrid1.TextMatrix(0, 6) = "رقم الهاتف"
MSFlexGrid1.Row = 6
MSFlexGrid1.TextMatrix(0, 7) = "رقم الجوال"
MSFlexGrid1.Row = 7
MSFlexGrid1.TextMatrix(0, 9) = "فاكس"
MSFlexGrid1.Row = 8
MSFlexGrid1.TextMatrix(0, 8) = "بريد الاليكترونى"
MSFlexGrid1.Row = 9
MSFlexGrid1.TextMatrix(0, 10) = "الصفحة الشخصية"
End Sub

وهذا الكود استخدمتة فى الاتصال وموجود فى Module

Global Con As New ADODB.Connection
Global rsCustomers As New Recordset

برجاء المساعدة فى معرفة الخطا الذى يظهر عند الاستعلام وكيف اقوم بعمل استعلام بالاسم الخاص بالعميل

نص الخطا invalid use of property ويظهر هذا الخطا فى Recordset

وشكرا لكم

الفريق المصري للبرمجة

تحليل وتصميم برامج قواعد بيانات لاتصال بينا masry4u@hotmail.com

#2

سأفترض استخدام dao

أولا بالنسبة للكود الأول:

يجب أن يكون كالتالي:

Data1.Recordsource = "select * from Customer where CustomerID like '" & Text1.Text & "'  % "
Data1.Refresh
Call flex

الكود اللأول كان فيه خطأ هو

data1.recordset

المفروض أن يكون

data1.recordsource

و أيضا وجود الأقواس

----------------------------

بالنسبة للكود الثاني:

أولا تعليمة

MSFlexGrid1.Row

غير ضرورية و لا داعي لوجودها

و ثانيا:

بعد استدعاء السجل المحدد سيتم ملء المعلومات الجديدة في الشبكة

و العملية لن تتم بالكود السابق لأنه لا يحتوي على القسم الذي يربط

قاعدة البيانات بالشبكة من الأصل..

و الكود الصحيح هو كالتالي:

Sub flex()
On Error Resume Next
MSFlexGrid1.ColWidth(1) = 800
MSFlexGrid1.ColWidth(2) = 3000
MSFlexGrid1.ColWidth(3) = 1000
MSFlexGrid1.ColWidth(4) = 1500
MSFlexGrid1.ColWidth(5) = 2000
MSFlexGrid1.ColWidth(6) = 1500
MSFlexGrid1.ColWidth(7) = 1500
MSFlexGrid1.ColWidth(8) = 2500
MSFlexGrid1.ColWidth(9) = 1500
MSFlexGrid1.ColWidth(10) = 1500

الكود السابق لتحديد القياسات و هو اختياري..

ثم ربط الشبكة مع قاعدة البيانات:

rec = Data1.Recordset.RecordCount
If rec = 0 Then Exit Sub
Data1.Recordset.MoveLast
rec = Data1.Recordset.RecordCount
MS1.Rows = rec + 1
rr = 1
Data1.Recordset.MoveFirst
 Do
    t(0) = Data1.Recordset.Fields(0) 
    t(1) = Data1.Recordset.Fields(1): If IsNull(t(1)) Then t(1) = "" 
    t(2) = Data1.Recordset.Fields(2): If IsNull(t(2)) Then t(2) = ""  
    t(3) = Data1.Recordset.Fields(3): If IsNull(t(3)) Then t(3) = "" 
    t(4) = Data1.Recordset.Fields(4): If IsNull(t(4)) Then t(4) = ""  
    t(5) = Data1.Recordset.Fields(5): If IsNull(t(5)) Then t(5) = "" 
    t(6) = Data1.Recordset.Fields(6): If IsNull(t(6)) Then t(6) = ""  
    t(7) = Data1.Recordset.Fields(7): If IsNull(t(7)) Then t(7) = ""  

  MS1.RowData(rr) = t(0) 
  MS1.TextMatrix(rr, 6) = t(1) 
  MS1.TextMatrix(rr, 5) = t(2) 
  MS1.TextMatrix(rr, 4) = t(3)  
  MS1.TextMatrix(rr, 3) = t(4) 
  MS1.TextMatrix(rr, 2) = t(5) 
  MS1.TextMatrix(rr, 1) = t(6)
  MS1.TextMatrix(rr, 0) = t(7) 
       
   Data1.Recordset.MoveNext
rr = rr + 1

Loop Until rr > rec

فس حال استخدام ado فقط يجب إضافة العبارة:

.value بعد fields() يعني يصبح:

data1.recordset.fields(x).value

هذا بالنسبة لعرض النتيجة

----------------------------

للاتصال لا حاجة للموديول:

للـ dao:

If Right(App.Path, 1) = "\" Then ap = App.Path + "DATA\" Else ap = App.Path + "\DATA\"
Data1.DatabaseName = ap + "اسم قاعدة البيانات" '
Data1.RecordSource = "اسم الجدول"

للـ ado:

        Dim DPA As String
        DPA = System.IO.Directory.GetCurrentDirectory + "\data\اسم قاعدة البيانات"
        data1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DPA + ";Persist Security Info=Fals"
        data1.RecordSource = "select * from اسم الجدول"
        data1.Refresh()

أرجوأن أكون قد أوضحت

مع الملاحظة أني قد استخدمت 8 حقول فقط

أرجو الانتباه إلى الفرق في أعداد الحقول

(h) (h) (h) (h) (h)

lxcs.png

syria-flag_small.jpg

#3

السلام عليكم

اخى SalehRam DTPort اشكرك جدا على المساعد

لكن تم ايجاد اخطاء اثناء العمل البحث لم يتم وفى نفس الوقت يحدث خطأ قمت بأرفق المشروع بقاعدة البيانات حتى تتضح الرؤية برجاء توضيح الخطأ وارجوا من الله ان يوفقنا جميعا

mytest.zip

الفريق المصري للبرمجة

تحليل وتصميم برامج قواعد بيانات لاتصال بينا masry4u@hotmail.com

#4

للرفع

الفريق المصري للبرمجة

تحليل وتصميم برامج قواعد بيانات لاتصال بينا masry4u@hotmail.com

#5

آسف كان لدي خطأ في الكود الأخير

و التصحيح:

If Right(App.Path, 1) = "\" Then ap = App.Path + "DATA\" Else ap = App.Path + "\DATA\"
DPA = ap + "اسم قاعدة البيانات"
data1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DPA + ";Persist Security Info=Fals"
data1.RecordSource = "select * from اسم الجدول"
data1.Refresh()

هذا الكود الخاص بالـ ado

lxcs.png

syria-flag_small.jpg

هذا الموضوع مغلق.

مواضيع مشابهة