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


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

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

أدبني الدهر فأراني نقص عقلي وإذا ما ازددت علما زادني علما بجهلي
الرد
#3
السلام عليكم
اولا هذا ليس كود الفلترة بل هو كوذ من ادل تحديد البيانات التي تظهر من قاعدة البيانات على كل 

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


كود :
[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]
I just got here !
الرد
#4
السلام عليكم

للبحث استعمل

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

الفاشلون نوعان : الأول : فكر ولم يفعل .. والآخر: فعل ولم يفكر
الرد
#5
ظهور رساله module project1.exe read of address 00000000

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


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم