المشاركات : 27
المواضيع 8
:
: 0
الإنتساب : Mar 2012
السلام عليكم
أنشأت برنامجا في الدلفي على شكل مخدم زبون و اردت من خلاله البحث في قاعدة البيانات الموجودة في ال sql كما يلي
بعد الاتصال الناجح بقاعدة البيانات اود البحث عن تواريخ في قاعدة البيانات من خلال فورم في دلفي حيث انني اضع edit1 و edit2 الاول اضع فيه التاريخ الاول و الثاني اضع فيه التاريخ الثاني و dataset و ADOQuery1 و اتحصل على جميع التواريخ التي هي بين التارخ الاول و الثاني في dbgrid
فماهي الجملة الصحيحة التي أكتبها في (TStrings) الخاص ب ADOQuery1 كي يتم البحث
وكذلك في فورم اخراود بمجرد كتابة الحروف الاولى لاي اسم يظهر في ال dbgrid جميع الاسماء التي المكونة من تلك الحروف مثللا عند كتابة الحروف الاولى محم تظهر لي في dbgrid اسم محمد و محمود وعند تكملة الكتابة محمد تختفي كلمة محمود
عذرا على الاطالة
و بارك الله فيكم
المشاركات : 224
المواضيع 35
:
: 24
الإنتساب : Jan 2009
اولا قم بانشاء بارامترين (a,b)في مكون adoquery من نوع ftString ثم اكتب هذا الكود
كود :
adoquery1.SQL.Text:='select * from table where date between :a and :b ';
adoquery1.Parameters.ParamByName('a').Value:=datetostr(d1.Date);
adoquery1.Parameters.ParamByName('b').Value:=datetostr(d2.Date);
adoquery1.open;
بالتوفيق
المشاركات : 88
المواضيع 25
:
: 0
الإنتساب : May 2012
السلام عليكم
استخدم مكون DateTimePicker بدلا من EDIT
كود :
procedure TForm1.Button7Click(Sender: TObject);
begin
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.text :=('SELECT * FROM TABLE where DATE between #'+FormatDateTime('mm/dd/yyyy',DateTimePicker1.date)+'#'+'and #'+FormatDateTime('mm/dd/yyyy',DateTimePicker2.date)+'#') ;
Open;
end;
end;
المشاركات : 27
المواضيع 8
:
: 0
الإنتساب : Mar 2012
لم تنجح معي لانه لم يتم تحويل DateTimePicker1.date الى string و بالتالي لا يتعرف عليه ال sql هل من طريقة اخرى
المشاركات : 19
المواضيع 1
:
: 0
الإنتساب : Jun 2010
تحية طيبة
بما ان ADOQuery تملك الخاصية filter يمكن استعمالها مباشرة دون تعليمات sql
مثال
جدول يتكون من nom .date1
كود :
[align=left]select nom,date1 from table1[/align]
للفلترة حسب الاسم من الخاصية onChange ل edite1 نكتب الكود التالي
كود :
[align=left]procedure Form1.Edit1Change(Sender: TObject);
begin
IF edit1.GetTextLen<> 0 then
begin
ADOQuery1.Filter:='nom='''+Edit1.Text+'*''';
ADOQuery1.Filtered:=true;
end
else
ADOQuery1.Filtered:=false;
end;[/align]
للفلترة بين تاريخين
كود :
[align=left]procedure Tform1.Button1Click(Sender: TObject);
begin
ADOQuery1.Filter := '(Date1>='+QuotedStr(DateToStr(DateTimePicker1.Date))+') and (Date1<='+QuotedStr(DateToStr(DateTimePicker2.Date))+')';
end;[/align]
المشاركات : 27
المواضيع 8
:
: 0
الإنتساب : Mar 2012
حفظك الله و بارك فيك و في أهلك اخي tarek.inf شكرا على الاهتمام سأجرب و سأعلمك بالنتيجة
للتنبيه يجب اضافة للفلترة بين تاريخين في اخر الكود قبل ; end مايلي
ADOQuery1.Filtered:=true;
حتى تصبح النتيجة تامة و صحيحة
بارك الله فيكم ونفعكم و نفع الناس بعلمكم الى كل من
محمد الدرة
you_per7
tarek.inf
المشاركات : 211
المواضيع 16
:
: 8
الإنتساب : Jan 2012
كمال المجاني كتب :لم تنجح معي لانه لم يتم تحويل DateTimePicker1.date الى string و بالتالي لا يتعرف عليه ال sql هل من طريقة اخرى
أولا الحمد لله الذي وفقك للحل الصحيح أما فيما يخص تحويل التاريخ الى سترينغ فيمكن اضافة الامر datetostr
datetostr(DateTimePicker1.Date);
كما هو موضح في هذا الاستعلام من مشاركة الأخ "you_per7 "
procedure TForm1.Button7Click(Sender: TObjec
t);
begin
with ADOQuery1 do begin
Close;
SQL.Clear;
SQL.text :=('SELECT * FROM TABLE where DATE between #'+datetostr(FormatDateTime('mm/dd/yyyy',DateTimePicker1.date))+'#'+'and #'+FormatDateTime('mm/dd/yyyy',DateTimePicker2.date)+'#') ;
Open;
end;
المشاركات : 27
المواضيع 8
:
: 0
الإنتساب : Mar 2012
بارك الله فيك و حفظك من كل مكروه شكرا على الاهتمام اخي makhlouf فيما يخص الكود الذي اعطاني اياه الاخ you_per7 و الذي اعطيتنيه انت الفرق بينهما هو في datetostr سأجربه
ولكم جزيل الشكر
المشاركات : 13
المواضيع 1
:
: 0
الإنتساب : Aug 2011