PDA

View Full Version : سوال: مشکل در نحوه عمکرد این کد . ado query



hentjanson
دوشنبه 27 خرداد 1387, 11:02 صبح
سلام بچه ها من از این کد استفاده کردم برای جستجو .
به حالت سرچ میره ولی چیزی نشون نمیده یعنی نتایج رو نشون نمیده در dbgrid
این کد منه که روی یک دکمه نوشتم .


procedure TForm1.BitBtn13Click(Sender: TObject);
begin
with ADOQuery3 do
begin
close;
sql.Clear;
sql.Add('select * from table1 where date1 between '+QuotedStr(MaskEdit12.Text)+ ' and '+QuotedStr(maskedit21.Text));
open;
end;
DBGrid1.DataSource := DataSource2;
end;

delphiprog3000
دوشنبه 27 خرداد 1387, 11:25 صبح
آیا دیتاسورس شما به Adoquery وصل میباشد؟

آیا مقادیری که وارد دیتابیس شده و در فیلد date1 قرار گرفته صحیح میباشند؟

Amir_Safideh
دوشنبه 27 خرداد 1387, 11:51 صبح
دلایل مختلفی میتونه وجود داشته باشه . علاوه بر دلایل ذکر شده در پست 2 دلیل دیگه ای که میتونه باعث بشه نوع داده فیلد date1 میتونه باشه . شما نوع داده این فیلد رو چی درنظر گرفتید . در ضمن کد اجرای کوئری رو هم به شکل زیر تغییر بده و نتیجه رو ببین .

procedure TForm1.BitBtn13Click(Sender: TObject);
begin
with ADOQuery3 do
begin
close;
sql.Clear;
sql.Add('select * from table1 where date1 between '+QuotedStr(MaskEdit12.Text)+ ' and '+QuotedStr(maskedit21.Text));
SQL;
open;
end;
DBGrid1.DataSource := DataSource2;
end;
-----------
موفق باشید .

hentjanson
دوشنبه 27 خرداد 1387, 12:01 عصر
من هر دو مورد رو چک کردم ارتباطات برقراره ولی کار نمیکنه چرا ؟

delphiprog3000
دوشنبه 27 خرداد 1387, 12:04 عصر
در ادامه صحبت دوستمون امیر.

من بیشتر از این روش استفاده میکنم . میتونید این روش رو هم تست کنید.


procedure TForm1.BitBtn13Click(Sender: TObject);
begin
with ADOQuery3 do
begin
close;
sql.Clear;
sql.text:='select * from table1 where date1 between '+QuotedStr(MaskEdit12.Text)+ ' and '+QuotedStr(maskedit21.Text);
open;
end;
DBGrid1.DataSource := DataSource2;
end;


البته باز هم نیاز به بررسی داره.
موفق باشید.........

hentjanson
دوشنبه 27 خرداد 1387, 12:10 عصر
سلام دوستان من هر دو مورد را امتحان کردم هیچی نشون نمیده بانک اکسس مقدار text هستش نوعش

delphiprog3000
دوشنبه 27 خرداد 1387, 12:11 عصر
نوع ذخیره کردن اطلاعات در فیلد date1 به چه صورت میباشد؟

میشه یک نمونه از کد درج اطلاعات و یک نمونه از داده ذخیره شده در فیلد date1 را اینجا قرار دهید.

موفق باشید..........

hentjanson
دوشنبه 27 خرداد 1387, 12:15 عصر
این تو حالت insert نوشتم


ADOTable1.FieldByName('date1').asstring:=maskedit1 9.Text;

و اینکه edit mask هم همون حالتی که گفتین گزاشتم برای این edit mask19
این مدلی ذخیره شده تو بانک 1385/01/02

hentjanson
دوشنبه 27 خرداد 1387, 12:51 عصر
احتمال دیگهای نمیدین اخه خیلی فوریه من همه ایا رو اعمال کردم ولی نشد
این عکس تغییرات منه میشه بگید کجایه کار ایراد داره

hentjanson
دوشنبه 27 خرداد 1387, 13:37 عصر
در موقع سرچ پیدا می کنه ولی نشون نمیده سطر های dbgrid خالی هستش انگار پیدا کرده ولی نمایش نمیده

Amir_Safideh
دوشنبه 27 خرداد 1387, 15:47 عصر
در موقع سرچ پیدا می کنه ولی نشون نمیده سطر های dbgrid خالی هستش انگار پیدا کرده ولی نمایش نمیده
در اینصورت شما مشکل اینجاست که شما قبلا در دی بی گرید ستون ها رو ایجاد کردید و خاصیت FieldName مربوط به ستونها رو برابر با نام فیلهای مورد نظر قرار ندادی .
برای اینکه مطمئن بشید یه دی بی گرید بزار روی فرمت و خاصیت DataSource مربوط به این دی بی گرید رو به صورت دستی برابر به DataSource2 قرار بده . . در دی بی گرید چیز دیگه ای رو تغییر نده . بعد یک بار برنامه رو اجرا کن و تست کن .
----------
موفق باشید .

babak_delphi
دوشنبه 27 خرداد 1387, 16:06 عصر
برای تست میتونید از DBEdit هم استفاده کنید

delphiprog3000
دوشنبه 27 خرداد 1387, 18:48 عصر
با سلام .

دوست من احتمال داره دستور between شما درست اعمال نمیشه. شما اطلاعات داخل فیلدهارو به این صورت در آورید. مثال:01/01/1387

در این مورد هم که دوستمون فرمودند فیلدهارو چک کنید و نام فیلدهارو با نام فیلدهای تیبلتون مچ کنید.

ولی بیشتر احتمال میدم که دستور between درست عمل نمیکند.

حالا بازم نشد برنامتون رو بزارید تا بشه راجبش نظر داد و عیب رو بر طرف کرد.

موفق باشید...........

SYNDROME
دوشنبه 27 خرداد 1387, 21:57 عصر
بعد از عمل Open مقدار ADO.RecordCount را در یک Lable بریزید.
اگر مقدار بیشتر از 0 بود مشکل در بر قراری ارتباط بین ADO و DBGrid است.
آیا بعد از Open کرسر کنار DBGrid ظاهر می شود؟
DataSource را به ADO متصل و DBGrid را به DataSource متصل کرده اید؟
موفق باشید

اصغر (پآچ)
سه شنبه 28 خرداد 1387, 00:25 صبح
سلام دوست من

ببین آخه تو فقط فیلد date1 رو به ADOQuery3 اضافه کردی حالا روی ADOQuery3 راست کلیک کن و ...Fields Editor رو انتخاب کن و یا date1 رو حذف کن و یا راست کلیک کن و Add all fields رو انتخاب کن تا بقیه فیلدهات اضافه بشن مشکلت حل میشه!

خودمم اول مونده بودم چرا چیزی نشون نمیده ولی با این روش فیلدهات نشون داده میشه!

موفق و موید باشی