اذهب الي المحتوي
أوفيسنا

عرض البيانات وتعبئة Combobox مع خصائص الاتصال بتقنية Ado


alsihran
إذهب إلى أفضل إجابة Solved by ابوخليل,

الردود الموصى بها

السلام عليكم ورحمة الله 

عملت برنامج متصل بسيرفر على الانترنت 

واتصل البرنامج بالسيرفر تمام لكن ظهرت عندي مشكلة 

بطأ تحميل النماذج أذا كانت تحتوي على حقول مرتبطه بجداول اخرى وتحتوي على فرز 

ففكرت اني اعمل النماذج بدون جداول متصله واقوم بجلب البيانات من خلال عمل اتصال بالسيرفر  اثناء تحميل النموذج 

الامور اصبحت افضل لكن واجهتني مشكله عدم ظهور بيانات مربع التحرير والسرد لانه يحتوي حقل للمعرف وحقل للبيانات 

 وهو  الان حقل غير منظم اي ليس له عنصر تحكم يستند اليه 

طبع صعب وضع المثال الفعلي المرتيط بالسيرفر 

لكن عملت هذا المثال اتمنى يفي بالغرض 

المطلوب عرض اسم المدينة من خلال الكود بدون تحديد مصدر الصف في النموذج 

 

 

بدون عنوان.png

combo.rar

رابط هذا التعليق
شارك

مشاركة مع استاذي ابو خليل

ضع الكود التالي بدلا من الجملة القديمة في Sub Display

'Me.Txt_namcity.Value = rs!E_city
Dim strSQL As String
strSQL = "SELECT [tbl_city].[id_ciity], [tbl_city].[Name_city] FROM tbl_city"
Me.Txt_namcity.RowSource = strSQL
Me!Txt_namcity.ColumnCount = 2
Me!Txt_namcity.ColumnWidths = "0 ; 2 cm"

 

  • Like 2
رابط هذا التعليق
شارك

6 ساعات مضت, ابوخليل said:

تفضل.

الله يعطيك العافية استاذنا @ابوخليل

وكل عام وانت بخير 

الطريقة تعمل وهذه تصلح اثناء اضافة بيانات 

المشكلة اني فقدت عرض البيانات اثناء فتح النموذج 

هل يمكن تعديل جملة selcet

rs.Open "Select * from tbl_Employ", con, adopenDynamic, adLockBatchOptimistic

لعرض البيانات واظهار اسم المدينة اثناء فتح النموذج 

 

5 ساعات مضت, Eng.Qassim said:

مشاركة مع استاذي ابو خليل

شكرا لك اخي الكريم 

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

رابط هذا التعليق
شارك

4 دقائق مضت, ابوخليل said:

تفضل التعديل

 

ممتاز استاذنا هذا هو المطلوب 

4 دقائق مضت, ابوخليل said:

ولكنك تستخدم Ado للاتصال لذا يجب ان يكون الحل في المسار نفسه

هل يعني هذا ان التعديل الاخير لا يصلح للاتصال بالسيرفر على الانترنت ....؟

عموما سأجرب وإن شاء الله تنجح 

شاكر ومقدر لك استاذي الكريم و لا نستغني عن دعمك ارجو أن تتحملني 

رابط هذا التعليق
شارك

استاذنا @ابوخليل

معليش اعرف اني طرحت هذا السؤال الاضافي المفروض افتح له موضوع جديد

لكن عشان مايتشعب الموضوع 

هل يمكن وضع شرط للجملة 

Me.Txt_namcity.AddItem (rst.Fields(0).Value & ";" & rst.Fields(1).Value)

بمعنى 

لو كان عندي بالجدول حقل رقمي ثالث يحتوي على قيمه 

مثلاً حقل باسم txt 

واريد ان يضيف العناصر التي تكون حقل txt = 1

لان عندي بالنموذج اكثر من combobox 

وكل  combobox  ستكون له عناصر محدده من نفس الجدول 

رابط هذا التعليق
شارك

التغيير سيكون في هذا السطر

عملته لك حسب طلبك ويمكنك صنع متغير رقمي وجعله مكان الرقم 1 

rst.Open "Select * from tbl_city WHERE txt1 = 1", con, adopenDynamic, adLockBatchOptimistic

 

combo4.rar

رابط هذا التعليق
شارك

36 دقائق مضت, ابوخليل said:

لتغيير سيكون في هذا السطر

عملته لك حسب طلبك ويمكنك صنع متغير رقمي وجعله مكان الرقم 1 

الله يعطيك العافية استاذ 

لكن هذا الحل يستلزم تكرار الجملة مع متغيراتها 

وعندي على النموذج عدد 12 combobox 

وهذا يعني ان البرنامج سيذهب الى السيرفر 12 مرة يذهب ويحضر البيانات ثم يعود 

وسيصبح البرنامج ثقيل ونعود للمربع الاول الذي من اجله لجأت الى ADO

Option Compare Database
Dim con As ADODB.Connection
Dim rs, rst ,rse,rsf As ADODB.Recordset

Set rs = CreateObject("ADODB.Recordset")
Set rst = CreateObject("ADODB.Recordset")
Set rse = CreateObject("ADODB.Recordset")
Set rsf = CreateObject("ADODB.Recordset")
Set rs = New ADODB.Recordset
Set rst = New ADODB.Recordset
Set rse = New ADODB.Recordset
Set rstf = New ADODB.Recordset


rst.Open "Select * from tbl_city WHERE txt1 = 1", con, adopenDynamic, adLockBatchOptimistic
rse.Open "Select * from tbl_city WHERE txt1 = 2", con, adopenDynamic, adLockBatchOptimistic
rsf.Open "Select * from tbl_city WHERE txt1 = 3", con, adopenDynamic, adLockBatchOptimistic
rss.Open "Select * from tbl_city WHERE txt1 = 4", con, adopenDynamic, adLockBatchOptimistic

أمنى منك استاذ يكون فيه حل بالتعديل على هذه الجملة 

Me.Txt_namcity.AddItem (rst.Fields(0).Value & ";" & rst.Fields(1).Value)

شاكر ومقدر لك 

رابط هذا التعليق
شارك

  • أفضل إجابة

تفضل 

If Not (rst.BOF And rst.EOF) Then
  Do Until rst.EOF
If rst.Fields(2).Value = 1 Then
Me.Txt_namcity.AddItem (rst.Fields(0).Value & ";" & rst.Fields(1).Value)
 End If
  rst.MoveNext
Loop
End If

 

combo5.rar

  • Thanks 1
رابط هذا التعليق
شارك

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان
  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information