ورود

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 عصر
با تشکر از همه ی دوستان عزیز مشکل حل شد با راهنمایی شما عزیزان