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

نسخة كاملة : لماذا لا يتم الفلترة
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
وضعت هذا الكود
PHP كود :
procedure TForm2.Button13Click(Sender: TObject);
begin
      ADOQuery1
.close;
 
     ADOQuery1.sql.clear;
 
  ADOQuery1.SQL.text :=('SELECT * FROM ww  where s like '+QuotedStr('%'+Edit7.text +'%')) ;
 
      ADOQuery1.Open;
end; 

ولكن عند الضغط على Button13 لاينفذ وتظهر تلك الرسالة
access violation at address 004bb57c in module project1.exe read of address 00000000
ماسبب هذه الرسالة ولماذا لاتحدث الفلترة
السلام عليكم


PHP كود :
begin
ADOQuery1
.SQL.Clear;
ADOQuery1.SQL.Add ('Select * from etudiant where code like '+QuotedStr(Edit1.Text));
ADOQuery1.Open;
end; 

أظن أن الخطأ في محاولتك تحويل % إلى عدد حقيقي

السلام عليكم
اولا هذا ليس كود الفلترة بل هو كوذ من ادل تحديد البيانات التي تظهر من قاعدة البيانات على كل 

الخطأ في هذا الكود هنا بدل 


كود :
[align=left][font=monospace] ADOQuery1.SQL.text :=('SELECT * FROM ww  where s like '+QuotedStr('%'+Edit7.text +'%')) ;[/font][/align]
ضع

كود :
[align=left][font=monospace]ADOQuery1.SQL.Add:=('SELECT * FROM ww  where s like '+QuotedStr('%'+Edit7.text +'%')) ;[/font][/align]

-----------------------------------------------------------------------------------------------------------
الطريقة الأفضل لعمل فلترة هي ان تقوم بتكديك كل بيانات قاعد البانات ثم تقوم بالفلترة في edit الخاص بالبحجث بالفلترة 
1- في الكود السابق ضع

كود :
[align=right][align=left][font=monospace]ADOQuery1.SQL.text :=('SELECT * FROM ww);[/font][/align] [/align]
ثم في edit7 في الحدث OnChange ضع 
كود :
[align=left]if edit7.text <> '' then[/align] [align=left]begin[/align] [align=left][font=monospace]ADOQuery1.Filtered:= false;[/font][/align] [align=left][font=monospace][font=monospace]ADOQuery1.filter:='s LIKE ' + quotedstr(edit7.text +'%');[/font][/font][/align] [align=left][font=monospace][font=monospace][font=monospace]ADOQuery1.[/font][font=monospace]Filtered[/font][font=monospace]:= true;[/font][/font][/font][/align] [align=left]end else[/align] [align=left]begin[/align] [align=left][font=monospace]ADOQuery1.[/font][font=monospace]Filtered[/font][font=monospace]:= false;[/font][/align] [align=left]end;[/align]
السلام عليكم

للبحث استعمل

كود :
ADOQuery1.Close; ADOQuery1.sql.Clear; ADOQuery1.SQL.add('SELECT * FROM TableName WHERE FieldName  LIKE  "'+Edit1.text+'" '); ADOQuery1.open;

اما للفلترة ضع نفس الكود فالحدث Onchange للعنصر Edit.text
اختلاف بسيط


PHP كود :
[font=monospace]ADOQuery1.Close;[/font]
[
font=monospace]ADOQuery1.sql.Clear;[/font]
[
font=monospace]ADOQuery1.SQL.add('SELECT * FROM TableName WHERE FieldName  LIKE  "'+Edit1.text+'%" ');[/font]
[
font=monospace]ADOQuery1.open;[/font] 

ظهور رساله module project1.exe read of address 00000000

تعبر عن وجود كائن لم يتم خلقه في البرنامج اي محاوله البرنامج الحصول على مؤشر بالذاكره فارغ .
nil pointer