ورود

View Full Version : انتخاب فیلدهای جدول در زمان اجرای برنامه توسط کاربر؟



taha2005
دوشنبه 20 آذر 1385, 08:45 صبح
سلام دوستان
من یک جدول دارم با حدود 70 فیلد در طول اجرای برنامه هر کابر ممکن است بخواهد فیلدهای خاصی از جدول را انتخاب کند به همین علت من فیلدها را در یک checklist box گذاشتم و کد زیر را برای آن نوشتم

for i:= 0 to 70do
begin
if CheckListBox1.Checked[i]=true then
begin
ADOQuery1.Close;
ADOQuery1.SQL.Text:='select ………. from table1 ';
ADOQuery1.Open;
end;
end;

حالا مشکل من اینجاست که در دستور select به جای نام فیلد چه چیزی را جایگزین کنم؟

m-khorsandi
دوشنبه 20 آذر 1385, 18:35 عصر
نام فارسی فیلدها رو در اختیار کاربر گذاشتی؟

محمد دادودنیا
سه شنبه 21 آذر 1385, 01:50 صبح
لست فیلدهای انتخابی رو (نام انگلیسی فیلد) رو توی یه StringList بریز
بعد با



ItemA.Delimiter:=','
S:= ItemA.DelimitedText

WS:='Select '+S +'From Table';


اونو به یه رشته تیدل کن و توی Select استفاده کن

taha2005
سه شنبه 21 آذر 1385, 15:16 عصر
از راهنماییتون کمال تشکر را دارم
به نظر شما کد بالا مشکلی داره که یه همچین اروری را به من میده:

iman_pc_love
سه شنبه 21 آذر 1385, 15:21 عصر
یه فیلدها رو نمیتونه پیدا کنه

taha2005
شنبه 25 آذر 1385, 22:47 عصر
شما هم برای انتخاب یک یا چند فیلد از جدول از این دستورات استفاده می کنید؟

ADOQuery1.Close;
ADOQuery1.SQL.Text:='select fieldsname from table1 ';
ADOQuery1.Open
اگه این دستورات درسته چرا به من ارور میده و میگه نمی تونه این فیلدها رو پیدا کنه
اگه هم غلطه بگین چی کم داره و دستش چی هست؟
ممنون میشم اگه جواب بدین

MNosouhi
شنبه 25 آذر 1385, 23:44 عصر
برای اینکه دستور بالا درست باشه باید جدولی به اسم Table1 داشته باشید که فیلدی با نام FileName داشته باشه.
همچنین باید بسته به اینکه از TQuery استفاده می کنید یا AdoQuery مقدار DatabaseName یا ConnectionString رو به صورت صحیح مقداردهی کرده باشید.

taha2005
یک شنبه 26 آذر 1385, 08:39 صبح
دوست عزیز من از adoquery استفاده میکنم و مطمئنم که تمام تنظیمات و نام جدول و فیلدهام درسته ؟به نظر شما حالا علت ارور چیه؟

MNosouhi
یک شنبه 26 آذر 1385, 10:06 صبح
برنامتون رو بزارید.
یا حداقل بگید چه خطایی نشون میده.

taha2005
یک شنبه 26 آذر 1385, 15:51 عصر
من عکس خطا رو بالا ضمیمه کردم اگه چند تا پست قبل رو نگاه کنید می بینید
در ضمن برنامه من فعلا هیچی نداره جز یه دستور ساده select

MNosouhi
یک شنبه 26 آذر 1385, 16:58 عصر
خب علتش اینه که در adoquery1 شما فیلدی با نام number وجود نداره.

taha2005
یک شنبه 26 آذر 1385, 23:01 عصر
ببینید db من master خود sqlserver هست و جدولم هم spt_values از جداول پیش فرض sql هست
شما این دستورات رو امتحان کنید نتیجش رو به من بگید

MNosouhi
دوشنبه 27 آذر 1385, 00:52 صبح
ببینید db من master خود sqlserver هست و جدولم هم spt_values از جداول پیش فرض sql هست
شما این دستورات رو امتحان کنید نتیجش رو به من بگید

من کد زیر رو بدون مشکل روی سیستمم امتحان کردم:


ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select Number');
ADOQuery1.SQL.Add('from spt_values');
ADOQuery1.Open

taha2005
دوشنبه 27 آذر 1385, 09:34 صبح
من عینا دستورات شما را از همین جا کپی کردم و توی دلفی پیست
ولی این دفعه به جای اینکه بگه numberپیدا نمی کنه می گه name پیدا نمیکنه
الان مطمئن شدم من یه چیزی رو بد تنظیم می کنم اگه اشکال نداره تنظیمات لازم رو هم بگین
ببخشید من اینقد بیسوادم

MNosouhi
دوشنبه 27 آذر 1385, 09:49 صبح
فقط باید connectionstring رو تنظیم کنید.

taha2005
دوشنبه 04 دی 1385, 21:44 عصر
با سلام دوباره
من هنوز مشکل دارم
کد بالا چند بار دیگه امتحان کردم بالاخره یک بار جواب داد ولی بعد چند بار امتحان با فیلدهای مختلف باز هون ارور قبلی رو داد
چی کار کنم؟ دیگه واقعا خنگ شدم:عصبانی++: :عصبانی++:

MNosouhi
دوشنبه 04 دی 1385, 21:47 عصر
دوست عزیز برنامت رو یزار تا برات درستش کنم.

taha2005
چهارشنبه 06 دی 1385, 09:37 صبح
از اینکه می خواین وقت بزارین ممنون

MNosouhi
چهارشنبه 06 دی 1385, 10:09 صبح
روی adoquery دایل کلیک کنید و همه فیلدهایی رو که اضافه کردید رو حذف کنید . همین.
علت : جدول مذکور 6 فیلد دارد و شما با دابل کلیک بر adoQuery و add all fiels همه رو اضافه کرده اید . اما در query که نوشتید فقط number رو انتخاب کرده اید ، در حالی که adoquery انتظار دارد که همه فیلدها که اولین آنها name است را در اختیار داشته باشد.
یک توصیه : وقتی میخاید برنامتون رو آپلود کنید ، لازم نیست همه فایل های برنامتون رو بفرستید ، فقط فایل های با پسوند dpr,dcu,pas,dfm کفایت می کند . اینطوزی حجم برنامتون از 350 کیلو بایت میرسه به 5 کیلوبایت.