PDA

View Full Version : چرا query هیچ کار نمی کند؟



dkhatibi
شنبه 27 مرداد 1386, 07:46 صبح
مراحل ساخت یک برنامه ی ساده به شرح زیر است.
یک datamodule و روی اون adoquery، adoTable و datasource قرار گرفته و ارتباطها با بانک sql server برقرا شده است.
روی فرم 1 یک dbgrid گذاشته ایم.و datasource اونو به datamodule1.datasource1 تنظیم کرده ایم.
مشکلی نیست با active کردن adotable فیلدها و رکوردها در dbgrid به نمایش در می آیند.
table مذکور دارای فیلدی به نام lname است.


datamodule1.adoquory1.sql.text('select lname from datamodule1.ADOTable1.TableName');
DataModule1.ADOQuery1.ExecSQL;

به شکلهای زیر هم به کار گرفته شده.


DataModule1.ADOQuery1.SQL.Add('select lname from '+datamodule1.ADOTable1.TableName);
DataModule1.ADOQuery1.ExecSQL;

و


DataModule1.ADOQuery1.SQL.Add('select lname from :'+datamodule1.ADOTable1.TableName);
DataModule1.ADOQuery1.ExecSQL;

که آخری خطای زیر را میده


-----------------------
Parameter object is improperly defined. Inconsistent or incomplete information was provided.
---------------------------

Batman
شنبه 27 مرداد 1386, 08:07 صبح
با سلام
جناب خطیبی فکر کنم باید به جای execsql از open استفاده کنی
موفق باشید

mzjahromi
شنبه 27 مرداد 1386, 08:25 صبح
هدفتون از کوئری آخر چیه؟
اون : رو واسه چی گذاشتین؟

ghabil
شنبه 27 مرداد 1386, 09:12 صبح
خب معلومه که میده ":" برای چیه ؟! مگه اسم جدول پارامتره؟!

dkhatibi
شنبه 27 مرداد 1386, 12:44 عصر
آخه مشکل اینه که هیچ کدوم جواب نمی دن.
تمام دستورات را برای یک انتخاب فیلد lname به کار می برم.

ghabil
شنبه 27 مرداد 1386, 13:14 عصر
خب چرا ExecSQL؟ پرا Open نکردی Select رو؟

ahmad1358
شنبه 27 مرداد 1386, 13:42 عصر
DataModule1.ADOQuery1.SQL.text:='select lname from ' + '''+datamodule1.adotable1.tablename + '''';
DataModule1.ADOQuery1.open;

SYNDROME
شنبه 27 مرداد 1386, 13:52 عصر
با سلام




DataModule1.ADOQuery1.SQL.text:='select lname from ' + '''+datamodule1.adotable1.tablename + '''';
DataModule1.ADOQuery1.open;


دوست عزیز این کد خطا دارد .
اینجوری بنویس


DataModule1.ADOQuery1.SQL.text:='select lname from ' + datamodule1.adotable1.tablename;
DataModule1.ADOQuery1.open;

موفق باشید

dkhatibi
شنبه 27 مرداد 1386, 14:21 عصر
شاید انتظاری که من دارم اشتباه است.
من انتظار دارم با انجام این دستور dbgrid من که در حال حاضر دارای تمام فیلدهای جدول است. با انجام این query تنها تک فیلد داشته باشد. آیا من تصور درستی دارم.
برای رسیدن به این تصور چه راهی را پیشنهاد می کنید؟

Hamid.Kad
شنبه 27 مرداد 1386, 14:53 عصر
انتظار شما صحیحه. باید فقط مقادیر lname رو فقط در dbgrid ببینید. شاید تنظیمات DataSource رو انجام ندادید.
می تونید خاصیت Columns از DbGrid رو کلیک کنید و به ازای هر فیلدی که می خواهید در dbgrid نشنون داده بشه یه Item اضافه کرده و فیلدش رو مشخص کنید

SYNDROME
شنبه 27 مرداد 1386, 18:35 عصر
با سلام
آیا Query شما درست شده است؟

شاید انتظاری که من دارم اشتباه است.
من انتظار دارم با انجام این دستور dbgrid من که در حال حاضر دارای تمام فیلدهای جدول است. با انجام این query تنها تک فیلد داشته باشد. آیا من تصور درستی دارم.
برای رسیدن به این تصور چه راهی را پیشنهاد می کنید؟
برای این کار شما می توانید کلیه فیلدها را پاک کنید و با توجه به نیاز فیلدهای مورد نظر را Addکنی و یا در زمانهای مناسب فیلدهایی را که نمی خواهی Visibleآن را falseکنی.
موفق باشید

dkhatibi
شنبه 27 مرداد 1386, 21:35 عصر
درسته این روشها درستن اما پرس وجو چرا جواب نمی ده؟

SYNDROME
یک شنبه 28 مرداد 1386, 13:59 عصر
با سلام

درسته این روشها درستن اما پرس وجو چرا جواب نمی ده؟
یعنی چی جواب نمی دهد؟
شاید مقادیر مورد نظر در بانک وجود ندارد.
بیشتر توضیح دهید.
موفق باشید

dkhatibi
دوشنبه 29 مرداد 1386, 22:26 عصر
حاصل کد زیر کل جدول در dbgrid است . حال آنکه من هیچ lname='q' ندارم.


DataModule1.DataSource1.DataSet:=DataModule1.ADOTa ble1;
form1.DBGrid1.DataSource:=DataModule1.DataSource1;
DataModule1.ADOTable1.Active:=true;
DataModule1.ADOQuery1.SQL.text:='select * from ' + datamodule1.adotable1.tablename + ' where lname=''q''' ;
DataModule1.ADOQuery1.open;

SYNDROME
چهارشنبه 31 مرداد 1386, 14:04 عصر
با سلام
مقدار Textمربوط به ADOرا با F5بگیر.
ببین چه مقداری دارد؟
سپس آن را در QueryَAnalyzerتست کن.
ببین چی جواب می دهد؟
موفق باشید

dkhatibi
جمعه 02 شهریور 1386, 09:34 صبح
با تشکر از همه
مشکل حل شد.
مشکل از این بود که من datasource ی که به dbgridنسبت داده بودم dataset ش tableبود نه query.