سؤال

لقد أزعجني هذا دائمًا بشأن أفضل طريقة للقيام بما يلي ...

باستخدام قاعدة بيانات بسيطة إلى عدة ديسيبل، عندما يكون لديك جدولين/شبكات في نموذج والجدول الثاني تمت تصفيته بواسطة الأول.

أين هو أفضل مكان لوضع رمز التصفية
أي:

procedure TForm1.tblCustormersAfterScroll(DataSet: TDataSet);
begin
  if tblCustormersCustormerID.AsString <> '' then
   begin
     tblCustormersThings.Filter := 'CustormerID = ' + tblCustormersCustormerID.AsString;
     tblCustormersThings.Filtered := true;
   end;
end;

يبدو أن AfterScroll يعمل في معظم الأوقات، ولكن لا يتم طردك في بعض الأحداث، على سبيل المثال بعد النشر.عادةً ما يكون لدي إجراء للقيام بتحديث الفلتر ووضعه في أي مكان يبدو أنه مطلوب.

لكنني كنت أتساءل عما إذا كانت هناك طريقة أفضل، يبدو أن هذا مجرد أشياء يجب أن تعرفها دلفي ...

لا أعتقد أن الأمر مهم ولكني أستخدم Delphi7 وNexusDB1

هل كانت مفيدة؟

المحلول

يجب عليك تعيين ماسترسورس وخصائص الحقول الرئيسية على الجانب "كثير".

يطلق عليها اسم العلاقة الرئيسية - التفصيلية، ويجب عليك مراجعة مساعدة NexusDB لمعرفة طريقة لوضع هذه العلاقة بين الجداول.

إذا كان جدولك يدعم الفهارس، فيمكنك إنشاء فهرس عليه هوية الزبون واستخدام أيضا مجموعة مجموعة() طريقة.

الطريقة التي تحدد بها عامل التصفية هي الطريقة الأبطأ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top