لجلب معطيات حقل من جدول الى اخر
#1
هذا كود وضعته لجلب من جدول إلى أخر لكنه يجلب كل القيم حتى لو كانت مكررة
IF table1Cde.value='1' and table1SCde.value='1-01' then
table2.insert;
أقصد بهذا الكود ما يلي
إذا كان الحقلين الموجودين في الجدول 1 يحملاني هذه القيمة أضف هذا السطر في الجدول الثاني
بشرط إن كان الحقلين متكررين بنفس القيمة في الجدول 1 أضف أحدهما فقط في الجدول الثاني
وهكذا إلى أن ينتهي
كما هو موضح في الصورة
هنا السؤال مطروح
ما ذا يجب علي أن أفعل ما هو الكود المناسب لكي أضيف أحد السطور
الرد
#2
استخدم المكون tbatchmove
الرد
#3
gigi كتب :استخدم المكون tbatchmove

شكرًا أخي العزيز
فعلاً
لكن المشكلة ليست في استعمال المكون أعلم أن المكون يصلح لمثل هذه العمليات لكن المشكل هو تكرار محتو الحقل

للتوضيح أكثر
الجدول1 مكون من أربع حقول وهي :
الحفل الأول : N
الحقل الثاني : Cde
الحقل الثالث : SCde
الحقل الرابع : Montant
المكون ديبقريد1 تابع لجدول1 يحتوي على 08 تسجيلات أي 08 أسطر و 04 أعمدة
التسجيل الأول مكرر مرتين واختلافهما في الحفل N و Montant فقط
الحقول التي أحتاج إلى إضاقتها في الجدول2 هي Cde , SCde فقط
المطلوب هو :
إذا كان الحقل Cde و SCde الموجود في السطر الأول للديبقريد1 مكرر في سطر أخر يجب أن يضيفه في
الجدول 2 مرة واحدة وليس مرتين كما هو موضح في المرفق أنظر للمرفق ولا تخف المرفق مفحوص وخالي من الفيروسات
هذا ما اردت توضيحه
ملاحظة صغير عن المرفق
المرفق عبارة عن صورة 010.bmp
لأنني لم أعرف كيف أدمج صورة في الموضوع
الرد
#4
العفو .....

المشكلة اني اتصفح الموقع من خلال هاتفي النقال فلا استطيع الرد بشكل وافي هذا عدا اني لم افهم قصدك ولكن متى ماتمكنت من الدخول من خلال الحاسوب احاول ذلك لكن اظن لو عملت فيلتر في الجدول الثاني معتمد على قيمة من الجدول الاول وتعمل شرط if لعدد السجلات للجدول الثاني لو اكثر من 1 هنا قم باخد البيانات بحلقة for تبدأ من صفر وتنتهي بعدد السجلات ناقص واحد

اتمنى ان تجد الحل بهذه الطريقة
الرد
#5
قم بعمل ترتيب للجدول بالاعتماد على الحقلين الثاني والثالث
كود :
Select * From Table1 Sort by CDE, SCDE; In Delphi Query1.Open; While Not Query1.EOF Do Begin {Keep Previous Values} Montant:=Query1Montant.AsInteger; CDE:=Query1CDE.AsInteger; SCDE:=Query1SCDE.AsString; Query1.Next; {Compare Previous and Next Values} IF (CDE=Query1CDE.AsInteger) And (SCDE=Query1SCDE.AsString) Then Begin {Write the Code To Insert Your Values In The Second Table} End; While (CDE=Query1CDE.AsInteger) And (SCDE=Query1SCDE.AsString) Do {Skip Same Rows} Query1.Next; End;
الرد
#6
tempuser كتب :قم بعمل ترتيب للجدول بالاعتماد على الحقلين الثاني والثالث

مشكور على هذه المعلومة
لكن أود ان اطرح سؤال
أنا لا اتعامل في برنامجي مع مكون Query ولم اتعامل معه قط بل اتعامل مع المكون Table و DataSource
وإن كان من الضروري إستعمال المكون Query وضح لي طريقة التعامل معه
وجزاكم الله عنا كل خير
الرد
#7
اداة الجدول تشبه في عملها الى حد كبير اداة الاستعلام ولا يوجد فروقات كبيرة بنهم إلا أن أداة الاستعلام يفضل استخدمها للقراءة وعدم التعديل

يتم التعامل معها كما تتعامل مع أداة الجدول وسوف أقوم بالتوضيح

اضاف مكون TQuery

غير تسميته الىQuery1

نفرض ان اسم الجدول لديك هو TblSource

اختر المكون السابق Query1

به الخاصية SQL اضغط على الزر '...' يضهر محرر اكتب به
كود :
Select * From TblSource Order By CDE, SCDE;
اضغط<OK>

بعد ذلك تعامل معها وكأنها TTable
الرد
#8
جزاكم الله عنا كل خير
بدأت أستوعب نوعًا ما التعامل مع Query
لكن الشيءالذي لم أفهمه هو بعد أن ربطت Query1 مع Datasource1
كيف يتم تصفية كل ما سيضاف الى T_DESTINATION
إليك هذا المثال المرفق
الرد
#9
[B][FONT="Arial Black"]بسم الله الرحمن الرحيم
السلام على من اتبع الهدى
انصحك يااخي باستعمال المكون patchmove من القائمة BDE فهو مكون رائع يقوم بالعمليات التالية
1-نسخ جميع التسجيلات من قاعدة بيانات الى اخرى
2-نسخ التسجيلات الناقصة من قاعدة بيانات الرئيسة الى التابعة ....الخ فعليك بتجربته [B]
[/B][/B]
سبحان الله و بحمده عدد خلقه و رضا نفسه و زنة عرشه و مداد كلماته
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم