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

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



لماذا لا يتم الفلترة - محمد .م.م - 30-12-2015

وضعت هذا الكود
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
ماسبب هذه الرسالة ولماذا لاتحدث الفلترة


RE: لماذا لا يتم الفلترة - لؤي - 31-12-2015

السلام عليكم


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

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




RE: لماذا لا يتم الفلترة - hamzabenz - 31-12-2015

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

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


كود :
[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]



RE: لماذا لا يتم الفلترة - Mr.DOS - 31-12-2015

السلام عليكم

للبحث استعمل

كود :
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] 




RE: لماذا لا يتم الفلترة - Effector - 31-12-2015

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

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