PDA

View Full Version : ایجاد ارتباط بین Combobox و DBEdit



cafedelphi
دوشنبه 11 دی 1391, 10:21 صبح
سلام دوستان

به کمکتون احتیاج دارم

۲ تا table ایجاد کردم که در table شماره ۱ فیلد های code و name و درtable شماره ۲ فیلد های code و.. وجود داره و بر روی فرم یک dbedit و یک combobox قرار دادم می خوام وقتی کاربر کد یک محصول رو وارد می کنه اسم محصول در combobox نمایش داده بشه و همچنین بلعکس وقتی نام یک محصول رو از combobox انتخاب می کنه کدش در dbedit نمایش داده بشه

دیتایس sql هست

cafedelphi
سه شنبه 12 دی 1391, 10:02 صبح
ممنون میشم راهنمایی کنید

یوسف زالی
سه شنبه 12 دی 1391, 10:32 صبح
سلام.
هرگز از فیلد سریال که Identity هست غافل نشید.


function IsNull(aVariant, Default: Variant): Variant;
begin
if VarIsNull(aVariant) then
Result := Default
else
Result := aVariant;
end;

procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
if ADOTable1.Locate('SN', IsNull(DBLookupComboBox1.KeyValue), []) then
Edit1.Text := ADOTable1.FieldValues['Code']
else
Edit1.Text := '';
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
begin
if ADOTable1.Locate('Code', Trim(Edit1.Text), []) then
DBLookupComboBox1.KeyValue := ADOTable1.FieldValues['SN']
else
DBLookupComboBox1.KeyValue := Null;
end;

cafedelphi
سه شنبه 12 دی 1391, 10:51 صبح
خیلی ممنون میشه یه توضیح مختصر بدید

یوسف زالی
سه شنبه 12 دی 1391, 10:58 صبح
دوست عزیز توضیح دیگه نمی خواد.
با تغییر ادیت کمبو عوض می شه و بر عکس.

cafedelphi
سه شنبه 12 دی 1391, 11:03 صبح
منظورم فیلد سریال بود حتما باید به دیتایس اضافه کنم ؟

یوسف زالی
سه شنبه 12 دی 1391, 11:45 صبح
این قضیه بر می گرده به تحلیل که باید در بخش خودش ببینید. اجالتا اون سریال هم به درد سرعت دادن به فیلتر کردن، هم به درد ارجاع یگانه به ردیفی خاص برای مثلا دیلیت و ... کاربرد داره.
اینجا هم کلید لوکاپ کمبوباکس هست.
به عنوان یک اصل:
هرگز برای ارجاع به ردیف های خاص از کلید های ترکیبی مخصوصا غیر عددی استفاده نکنید. مگر در مواقع فیلتر کردن.

cafedelphi
سه شنبه 12 دی 1391, 12:04 عصر
سپاسگذارم

در هنگام کامپیل در این خط به مشکل می خوره


if adotable1.Locate('sn',IsNull (DBLookupComboBox1.KeyValue),[]) then


و اینکه امکانش هست بدون اضافه کردن فیلد سریال این کار رو انجام داد ؟

http://upcity.ir/images/11216175135156358605.jpg

یوسف زالی
سه شنبه 12 دی 1391, 12:16 عصر
اون نمونه کد هست. می تونید اسم فیلدی که قراره لوکیت بشه رو عوض کنید.
مثلا Name. طبق نیاز خودتون اصلاحش کنید.

cafedelphi
سه شنبه 12 دی 1391, 12:48 عصر
فکر می کنم شکل دستوری خط مشخص شده (در پست قبلی) مشکل داره چون هنوز در هنگام کامپایل خطا میده