View Full Version : Listbox
matinebi
دوشنبه 11 آذر 1387, 18:47 عصر
یک لیست باکس دارم که با این کد از بانک مقدار میگیره
while not DataModule5.ADOQuery4.Eof do
begin
ListBox1.Items.Add(DataModule5.ADOQuery4['userid']);
DataModule5.ADOQuery4.Next;
end;
حالا میخوام با کلیک کاربر روی لیست باکس مقدار فیلد های بانک رو داشته باشم مثلا یه همچین کدی
DataModule5.ADOQuery4.SQL.Clear;
DataModule5.ADOQuery4.SQL.Add('select *');
DataModule5.ADOQuery4.SQL.Add('from usersetting');
DataModule5.ADOQuery4.SQL.Add('where(userid ='''+ListBox1.Items.Text+''')');
DataModule5.ADOQuery4.Active:=true;
لطف کنین مشکل کد دوم رو توضیح بدین
Edit1.Text:=DataModule5.ADOQuery4['userid'];
Edit2.Text:=DataModule5.ADOQuery4['userpass'];
Pr0grammer
دوشنبه 11 آذر 1387, 18:56 عصر
ببینید این کارتون رو راه میندازه؟! من که مشکلی نمی بینم!
DataModule5.ADOQuery4.SQL.Clear;
DataModule5.ADOQuery4.SQL.Text := 'select * from usersetting where userid = ' + QuotedStr(ListBox1.Items.Text);
DataModule5.ADOQuery4.ExecSQL;اگه نشد؛ مشخص کنید چه پیغام خطایی میده!
موفق باشید
Pr0grammer
دوشنبه 11 آذر 1387, 19:31 عصر
کد بالا رو ویرایش کردم، اشتباه از من بود؛ دوباره بررسی کنید.
خطا زمانی رخ میده که میخواد مقدار بانک رو داخل ادید بریزه (کد سوم)
ارور :مقدار null رو نمیتونه تو string بریزه
روی ADoQuery دابل کلیک کن؛ یه پنجره باز میشه، توی اون پنجره کلیک راست کن و AddFields رو بزن، حالا به جای اون دو خط، اینطوری استفاده کن :
Edit1.Text:=DataModule5.ADOQuery4userid.Text;
Edit2.Text:=DataModule5.ADOQuery4userpass.Text;
البته من این کد رو قسمت ListBox1Click نوشتم
مشکلی نداره.
matinebi
دوشنبه 11 آذر 1387, 20:18 عصر
کد بالا رو ویرایش کردم، اشتباه از من بود؛ دوباره بررسی کنید.
روی ADoQuery دابل کلیک کن؛ یه پنجره باز میشه، توی اون پنجره کلیک راست کن و AddFields رو بزن، حالا به جای اون دو خط، اینطوری استفاده کن :
Edit1.Text:=DataModule5.ADOQuery4userid.Text;
Edit2.Text:=DataModule5.ADOQuery4userpass.Text;
مشکلی نداره.
دیگه ارور نمیده ولی
توی ادید ها هیچی نشون نمیده
SYNDROME
سه شنبه 12 آذر 1387, 06:25 صبح
فکر کنم باید دستورا را به شکل زیر اصلاح کنید.
ListBiox.Items.strings[IndexItem];
IndexItem : شماره Item مورد نظر.
با قرار دادن Text همه مقادیر ListBox در نظر گرفته می شود/
موفق باشید
shervin farzin
چهارشنبه 13 آذر 1387, 18:38 عصر
سلام
معلومه كه Error ميده ، شما كه ItemIndex رو تعريف نكردين .
ItemIndex به تنهايي معني نداره ، شما بايد مشخص كنيد اين ItemIndex مربوط به چه ليستي
هست ، در مورد مشكل شما بايد اين طوري بنويسيد :
ListBox1.Items.Strings[ListBox1.ItemIndex]
matinebi
چهارشنبه 13 آذر 1387, 19:09 عصر
DataModule5.ADOQuery4.SQL.Clear;
DataModule5.ADOQuery4.SQL.Text := 'select * from usersetting where userid = ' + QuotedStr(ListBox1.Items.Strings[ListBox1.ItemIndex]);
DataModule5.ADOQuery4.ExecSQL;
Edit1.Text:=DataModule5.ADOQuery4userid.Text;
Edit2.Text:=DataModule5.ADOQuery4userpass.Text;
اما باز هم در ادید ها چیزی نشون نمیده
matinebi
چهارشنبه 13 آذر 1387, 21:26 عصر
مدیران لطفا پاسخ دهید
shervin farzin
چهارشنبه 13 آذر 1387, 21:46 عصر
سلام
يه اشتباه ديگه هم كدي كه نوشتي داره .
بعد از اين كه دستور SQL رو نوشتي چون اين دستور خروجي داره بايد به جاي ExecSQL از Open
استفاده كني تا نتيجه دستورت بتونه وارد Dataset بشه .
پس اون خط رو با كد زير عوض كن :
DataModule5.ADOQuery4.Open;
موفق باشيد .
matinebi
چهارشنبه 13 آذر 1387, 21:49 عصر
با تشکر از همه ی دوستان عزیز مشکل حل شد با راهنمایی شما عزیزان
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.