delphi4arab منتديات دلفي للعرب

نسخة كاملة : فلترة في Database Desktop
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته
السادة الكرام مشرفين وأعضاء
جزاكم الله كل خير
اعمل محاسباً على برنامج محاسبة قاعدة بياناته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
وعليكم السلام ورحمة الله وبركاته ،
أهلا وسهلا بك بينا مفيدا و مستفيدا إن شاء الله.

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

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

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

(19-08-2019, 01:38 PM)أبو معاذ كتب : [ -> ]أما الفلترة فحاول أخي الحبيب لماذا لا تستخدم أوامر SQL ليكون برنامجك أكثر احترافية.
بالتوفيق.
حاولت أن اجربهامع برادوكس فلم تعمل ..
لاحظ أن النجمة في الأخير يعني اسم يبدأ بـ الحرف المكتوب (لم تنجح حرف في الوسط)
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 نسخة منها مجانية)
(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]

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

للأعمال التجارية و/أو المؤسساتية
كبداية: sqlite
وللأيام القادمة (حجم كبير جدا، شبكات): FireBird
بحثت عن نسخة 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
الملف في المرفقات
الخطأ هنا
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/dow...ditionid=1
(22-08-2019, 06:16 PM)merouane كتب : [ -> ]احذف هذا الكود من برنامجك ثم جرب.

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

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

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


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

________________________________

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

(احذف 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; 
الصفحات : 1 2