delphi4arab منتديات دلفي للعرب
فلترة في Database Desktop - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : فلترة في Database Desktop (/showthread.php?tid=10389)

الصفحات: 1 2


فلترة في Database Desktop - samnaj00 - 19-08-2019

السلام عليكم ورحمة الله وبركاته
السادة الكرام مشرفين وأعضاء
جزاكم الله كل خير
اعمل محاسباً على برنامج محاسبة قاعدة بياناتهDatabase Desktop paradox
واحببت قاعدة البيانات هذه بسبب صغر حجمها مقارنة مع قواعد SQL و اكسس الضخمتين

وان شاء الله تعالى عزمت على انشاء برنامج محاسبة

لكن أرجو نصيحة اصحاب الخبرة فيما اذا كان هل يوجد قاعدة بيانات تشبه Database Desktop من حيث صغر حجم البيانات وسهولة التعامل مثلاً interBase او absolute


*أولى العقبات التي واجهتها هي فلترة البيانات في dbgrid وقد بحثت عنها كثيراً ولم اجد لها حلاً

فهذا الكود يعمل مع ADOTable بشكل ممتاز عند بحث بأي حرف من الكلمة
كود :
    if Edit3.Text <> '' then   begin   AdoTable1.Filter:='nom like  ('+''''+'%'+Edit3.Text+'%'+''''+')';   AdoTable1.Filtered:=true;   end; if Edit3.Text='' then   begin   AdoTable1.Filtered:=false;   end;
بينما لايعمل مع Table وتظهر رسالة operation not applicable
كود :
    if Edit1.Text <> '' then   begin   Table1.Filter:='nom like  ('+''''+'%'+Edit1.Text+'%'+''''+')';   Table1.Filtered:=true;   end; if Edit1.Text='' then   begin   Table1.Filtered:=false;   end;

المثال في المرفقات
فأرجو الحل جزاكم الله خيراً
ملاحظة : ضع المجلد المرفق في القرص الاول C لكي يعمل ملف الاكسس
اعمل على دلفي7 و 2010


RE: فلترة في Database Desktop - أبو معاذ - 19-08-2019

وعليكم السلام ورحمة الله وبركاته ،
أهلا وسهلا بك بينا مفيدا و مستفيدا إن شاء الله.

نصحية فقط أخي الحبيب ،
ابتعد عن البارادوكس فالدعم لها منعدم و مشاكلها كثيرة.
لماذ لا تستعمل Firebird فهي قاعدة بيانات مجانية و ذات كفاءة عالية ، ومن السهل التعامل بها حتى في الشبكة المحلية.
وهناك أيضا قاعدة بيانات Sqlite قاعدة بيانات خفيفة و ظريفة ومجانية ، لكن لا تعمل على الشكبة.

بالنسبة لabsolute لم اـعامل معها، لكنها غير مجانية.
أما الفلترة فحاول أخي الحبيب لماذا لا تستخدم أوامر SQL ليكون برنامجك أكثر احترافية.
بالتوفيق.


RE: فلترة في Database Desktop - samnaj00 - 19-08-2019

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

اعمل على برنامج محاسبة ممتاز ذي كفاءة عالية. قاعدة بياناته برادوكس . ومع ذلك ساحاول بالانتقال الى غير برادوكس عملاً بنصيحتك

(19-08-2019, 01:38 PM)أبو معاذ كتب : أما الفلترة فحاول أخي الحبيب لماذا لا تستخدم أوامر SQL ليكون برنامجك أكثر احترافية.
بالتوفيق.
حاولت أن اجربهامع برادوكس فلم تعمل ..


RE: فلترة في Database Desktop - merouane - 19-08-2019

لاحظ أن النجمة في الأخير يعني اسم يبدأ بـ الحرف المكتوب (لم تنجح حرف في الوسط)
PHP كود :
if Edit1.Text <> '' then
  begin
Table1
.Filter:='nom ='''+Edit1.Text+'*''';
  Table1.Filtered:=true;
  end;
if 
Edit1.Text='' then
  begin
  Table1
.Filtered:=false;
  end; 

إما هكذا (حذار من FilterOptions -> foCaseInsensitive=true)

أو تعتمد على TQuery
SQL
كود :
select nom from test where Nom like :name

وتضيف Params جديد اسمه name
الكود 
PHP كود :
Query1.Close;
Query1.ParamByName('name').Value := '%'+edit1.Text+'%';
Query1.Open; 

من الأحسن تغيير قاعدة البيانات كما قال أخونا أبو معاذ
(absolute نسخة منها مجانية)


RE: فلترة في Database Desktop - samnaj00 - 21-08-2019

(19-08-2019, 06:45 PM)merouane كتب : لاحظ أن النجمة في الأخير يعني اسم يبدأ بـ الحرف المكتوب (لم تنجح حرف في الوسط)
PHP كود :
if Edit1.Text <> '' then
  begin
Table1
.Filter:='nom ='''+Edit1.Text+'*''';
  Table1.Filtered:=true;
  end;
if 
Edit1.Text='' then
  begin
  Table1
.Filtered:=false;
  end; 

 جميل لكن البحث العشوائي افضل بكثير


(19-08-2019, 06:45 PM)merouane كتب : أو تعتمد على TQuery
SQL
كود :
select nom from test where Nom like :name

وتضيف Params جديد اسمه name
الكود 
PHP كود :
Query1.Close;
Query1.ParamByName('name').Value := '%'+edit1.Text+'%';
Query1.Open; 
[quote pid='49181' dateline='1566236745']
الكود ممتاز ويعمل بشكل جيد
لكن لايمكن التعديل على الجدول مباشرة
فأنا اريد الاضافة والتعديل على الجدول بالاضافة الى البحث في الجدول

بالنسبة لـ absolute
ما المقصود بالمجانية وغير مجانية
قمت بتنزيل نسخة من absolute_d7_791
فهل يعني اذا قمت بعمل على قاعدة بيانات سيحصل مشاكل في البرنامج او ما شابه سواء كنت متصلاً بالنت أو لم اتصل؟
واذا كان كذلك فأين النسخة الجانية؟
[/quote]

جزاكم الله كل خير


RE: فلترة في Database Desktop - merouane - 21-08-2019

في موقعهم الرسمي
النسخة التي يمكنك تحميلها، مع الإشارة إلى أن رخصتها للاستعمال الشخصي (Free for personal use).

للأعمال التجارية و/أو المؤسساتية
كبداية: sqlite
وللأيام القادمة (حجم كبير جدا، شبكات): FireBird


RE: فلترة في Database Desktop - samnaj00 - 22-08-2019

بحثت عن نسخة absolute للاستخدام الشخصي فلم اجدها

(21-08-2019, 04:58 PM)samnaj00 كتب :
(19-08-2019, 06:45 PM)merouane كتب : أو تعتمد على TQuery
SQL
كود :
select nom from test where Nom like :name

وتضيف Params جديد اسمه name
الكود 
PHP كود :
Query1.Close;
Query1.ParamByName('name').Value := '%'+edit1.Text+'%';
Query1.Open; 
هذا الكود يعمل تمام مع جدول برادوكس لكنه لم يعمل مع absolute
الملف في المرفقات


RE: فلترة في Database Desktop - merouane - 22-08-2019

الخطأ هنا
PHP كود :
procedure TForm1.FormCreate(Sender: TObject);
begin
absQuery1
.Close;
absQuery1.SQL.text:='select * from dtest';
absQuery1.Open;
end; 
عندما تغير قيمة نص SQL للـ absQuery1 عند إنشاء الواجهة تكون محوت ما كان سابقا.
احذف هذا الكود من برنامجك ثم جرب.

(22-08-2019, 03:35 PM)samnaj00 كتب : بحثت عن نسخة absolute للاستخدام الشخصي فلم اجدها

هي نفسها الموجودة للتحميل في الموقع
http://www.componentace.com/download/download.php?editionid=1


RE: فلترة في Database Desktop - samnaj00 - 24-08-2019

(22-08-2019, 06:16 PM)merouane كتب : احذف هذا الكود من برنامجك ثم جرب.

جزاك الله خيراً
قمت بالحذف والتعديل

(22-08-2019, 06:16 PM)merouane كتب : هي نفسها الموجودة للتحميل في الموقع
http://www.componentace.com/download/download.php?editionid=1

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


بالنسبة للبحث في الجدول عملت على البحث اما بالاسم او بالرقم id  وذلك عن طريق RadioGroup.
وقد نجه الامر في فلترة الجدول ولم ينجح في فلترة sql
الملف في المرفقات


RE: فلترة في Database Desktop - merouane - 24-08-2019

الرسالة عادية.

________________________________

في البرمجة عليك التركيز، وأنصحك بالبساطة إذا تعقدت عليك.

(احذف params للـ ABSQuery2)
PHP كود :
procedure TForm1.Edit3Change(Sender: TObject);
begin
  ABSQuery2
.Close;
  case RadioGroup2.ItemIndex of
    0
: ABSQuery2.SQL.Text := 'select * from dtest where name like ''%' + Edit3.Text + '%''';
    1: ABSQuery2.SQL.Text := 'select * from dtest where id like ''%' + Edit3.Text + '%''';
  end;
  ABSQuery2.Open;
end;