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

كيف يمكن ربط اثر من جدول tdbgrid

مغلق
بدأه slhslm في 30 نوفمبر 2001 · 7 رد · 1,248 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هل من الممكن ربط اكثر من جدول في Tdbgrid pro

السلام عليكم

عندي فورم عليه tdbgrid pro 7 وكذلك VB data control

الملف فيه اكثر من جدول مثلا وضعت جدول لرقم العميل واسمه وارقام المناطق والمندوبين والاقسام لكي يكون البحث سريع نوعا ما عن جدول مليان بالبيانات

واخر للعناوين وملخقاتها

واخر لجميع مبالغ تخص العميل وربطتها بمفتاح رئيسي رقم العميل

السؤال هل من الممكن عند ادخال البيانات باستخدام tdbgrid ربط الثلاثة جداول بهده الدالة tdbgrid

بحيث يمكنني من ادخال البيانات الى 3 جداول في نفس الوقت

وشكرا

والله من وراء القصد

__________________

اللهم زدني علما

#2

اذا كانت الجداول الثلاثة مربوطه ببعض اعمل Query ثم اربطه بData Control ثم بالTrue DB Grid

#3

ممكن لواتكرمت مثال اوتوضيح اكثر تعرف انا مبتدئ في هده اللغة

وسؤالي يعكس ذلك

انا عايز ادخل بيانات الى tdbgrid وليس استعلام

وشكرا

#4

أخى الكريم بعد عمل Setup لـ tdbgrid ستجد دليل بإسم Samples

به مجموعة من الامثلة يمكنك ان تفتح أى مثال وتعرف كيف تم الربط

#5

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

اذا كنت تستخدم data control

1 - قم بوضع داتا كونترول على الفورم data1 ثم من الخصائص databaseName ادخل اسم ملف البيانات ثم خاصية recordSource ادخل اسم الجدول الرئيسى

2 - ثم داتا كونترول لكل جدول اخر وغير الخصائص عاليه ليتم الاتصال بملف البيانات لكل جدول data2 مثلا للمندوبين وهكذا

3 - ثم قم بوضع tdbgrid pro 7 على الفورم واوصلها بالداتا data1 من خاصية data Source ل tdbgrid1

4 - ثم قم بوضع tdbgrid2 على الفورم واوصلها ب data2 اى بوصلها بجدول المندوبين مثلا وهكذا لكل جدول اخر ضع tdbgrid لكل جدول فرعى اخر.

بعد انشاء الوصلات اللازمة كالمبين عاليه هناك حدث يسمى

RowColChang ل tdbgrid1

هذا الحدث يتم عمله بعد ان تقوم الجريد باحضار البيانات ووضع الموشر على اول سطر ويكون رقم السطر bookmark للسجل الذى يقف عليه المؤشر موضوعا فى LastRow فى هذا الحدث

مثال

private sub tdbgrid1_rowColChange(lastrow as variant ,lastcol as integer) وهذة المتغيرات التى تمرر للحدث تحتوى على رقم السجل الذى يقف عليه المؤشر ورقم العامود ( الحقل).

وللتأكد من ارتباط الجداول يتم اخذ رقم السجل فى متغير String وليس variant حيث انه فى الفيجوال بيسك عند مقارنة رقم السجل برقم سجل اخر يفضل او الافضل ان يكون رقم السجل موضوع فى متغير نصى string.

وعند ارتباط الجداول يجب ان نأخذ رقم السجل الذى يقف عليه المؤشر فى الجدول الرئيسى tdbgrid1 ونحفظة فى متغير نصى وبعد ذلك ناخذ رقم المندوب من السطر الذى يقف عليه المؤشر ونذهب الى data2 المربوطه بجدول المندوبين مثلا ونعمل استعلام برقم المندوب الذى اخذناه من الجدول الرئيسى ونعمل refresh لكى يعرض جدول المندوبين فقط بيانات حركة المندوب مثلا واليك المثال بفرض ان رقم العميل Cust_ID فى الجدول الرئيسى والجداول الفرعية وبفرض انه من نوع Long Integer

سوف نحتفظ برقم العميل فى متغير من نوع long واسم LngCust_Id

ملحوظة

=====

عند استدعاء rowcolchan event الغريد لاول مرة يكون رقم السطر الاخير هو lastrow ورقم العامود الاخير lastcol

عندما تستقر الغريد يكون رقم السجل الحالى هو bookmark من الخصائص والعامود هو col ايضا من الخصائص

Private Sub TDBGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Intege

dim CustCode as long

المتغير bk1 رقم السجل من الجدول الرئيسى

Dim bk1 As String, bk2 As String

' يجب التاكد من وجود سجل عند استدعاء الغريد ولذلك نقارن ان السطر الاخير يحتوى على بيانات

If IsNull(LastRow) Then

bk1 = ""

Else

bk1 = LastRow

End If

bk2 = TDBGrid1.Bookmark

If bk1 <> bk2 Then

Screen.MousePointer = vbHourglass

احفظ رقم العميل من السجل الحالى للغريد الاساسية

Lngcust_ID = Data1.Recordset(Cust_Id)

انشيء استعلام على الجدول الفرعي Data2.RecordSource = "SELECT * FROM المندوبين WHERE Cust_id = " + Chr$(34) + LngCust_id + Chr$(34)

Data2.Refresh

Screen.MousePointer = vbDefault

End If

End Sub

ويمكن عمل ذلك لباقى الجداول الفرعية

على فكرة انا استعمل tdbgrid حديثا يعنى هذا اول تصميم لى فى برنامج .

فى حالة استخدامك dataenvironment طبعا اسهل استدعاء البيانات وفى حالة الاتصال المباشر عن طريق ado

يجب استعمال tdbgrid pro 7 for (OlEDB) وايضا فى حالة استعمال adodc يجب ان يكون الغريد tdbgridpro 7 for OLEDB

اى استخدم dataControl العادية مع tdbgrid pro 7

واستخدم adodc فى حالة استخدام tdbgridpro 7 OLEDB

ولك تحياتى

#6

شكرا اخوي محمد

ولكن موضوعي هو ربط اكثر من جدوال في ملف ب tdbgridواحدة

لوافترضنا عندي اللاسم في جدول والرصيد في جدول والعنوان في جدوال

كيف ممكن اظهار جميعهم في tdbgrid واحدة

وشكرا

واعتذر عن تاخري لظروف

(f)

#7

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

لكى يتم ربط كل الجداول فى جدول واحد يجب ان تتبع الاتى

1 - اضف 1 داتا كونترول للجدول الرئيسى ولنفرض انه جدول العملاء

والذى يحتوى على حقل كود العنوان مثلا

2 - اضف اداة tdbgrid1على الفورم وقم بوصلها مع الداتا 1

3 - اضف داتا كونترول ثانية على الفورم داتا 2 للجدول الفرعى وليكن

جدول العناوين واربطة كالاتى

databaseName اى اختار قاعدة البيانات

recordsource اختار جدول العناوين

4 - اضف tdbgrid 7 DropDown واوصلها مع داتا 2

خاصية datasource اختار Data2 داتا2

خاصية listfield اختار حقل كود العنوان

5 - اهم شىء الان هو كيفية ربط الجريد الاولى مع الثانية

من خصائص tdbgrid1 الاولى اذهب الى columns ثم تحرك الى حقل العنوان وستجد به خاصية dorpdown قم باختيارها سوف يظهر لك الان اسم tdbdropdown1 ثم اختارها

والان اصبح الجدول جاهز للاستخدام كجدول واحد

غير خاصية visible لداتا1 وداتا2 الى false

لى سؤال عن طباعة العربى مع tdbgrid تواجهنى مشكلة ان الحروف العربية تكون متداخلة وغير صحيحة هل واجهتك هذة المشكلة وهى نفس المشكلة التى تواجهنى مع الكريستال ريبورت 8.5 هل واجهتك هذة المشكلة .

اذا لم تواجهك هل انت تستخدم نسخة ويندوز العربية او التى تدعم العربية

حيث اننى استخدم arabic enabled واعتقد انها المشكلة ولكنى غير متأكد.

ولك تحياتي

#8

شكرا اخوي محمد

انت الان استغليت وجود downtdbgrid وربطة فيها الجدول الثاني ولكن

لو قلنا انه عندك 3 جداول فيهل بيانات تخص عميل واحد في كل جدول معلومات يتطلب ظهورها في tdbgrid واحدة وكما شرحت سابقا

جدول رقم 1 فيه اسم العميل

جدول رقم 2 فيه عنوان العميل

جدول رقم 3 فيع رصيد العميل

tdbgrid1 كالتالي

رقم العميل --- اسم العميل ---- عنوان العميل ----- الرصيد

5556465 خالد علي الرياض 145000

9879798 صالح علي جدة 113000

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

انا اشأت 1 داتكونترول

والان باحاول طريقة unbound columns in bound mode

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

معاليش ترى تعبتك معايا لكن في رأي ان التعليم هو افضل واسرع من خلال تبادل الخبرات

بخصوص العربي انا ما حصل معاي اي مشكلة ركبت الفيجول واشتغل 100% في كل نواحي ومتطلبات العربي

الويندوز التي باستخدمها xp-windows

الفيجول بيزك professional

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

انا شغال على برنامج حسابات ومخازن وباحاول ان انتهي منه والان انجزت 5% منه تقريبا وفي امر مهم وقفني عن تكملة البرنامج

سمعت بعض الاخوان الله يعينهم في حديث عن عملية multi users

ان الفيجوال لايستطيع التحكم في عدد اكثر من 5 يبحثون ويكتبون ويعدلون في جدول واحد

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

للذهاب الى الاوراكل

اذا عندك فكرة فانصحني جزاك الله خير

والله من وراء القصد

(f)

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…