ورود

View Full Version : سوال: چند تا مشکل کوچک در دلفی



lolojoon
جمعه 08 شهریور 1387, 07:56 صبح
با سلام خدمت همه دوستان عزیزم

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

1 - چه کدی باید بنویسم که وقتی روی یک dbgrid کلیک کردم محتویات همون رکورد کلیک شده را در فیلدهای یک فرم دیگه قرار بده ( مثلا روی مشخصات یک حساب کلیک کردم اون رکورد را به فرم تصحیح مشخصات انتقال بده و کاربر بتونه مشخصات را تصحیح کنه )

2 - من یه DbLookup گذاشتم که لیست شماره حساب ها را ازش بگیرم ولی اصلا با بانک ارتباط برقرار نمی کنه ؟

hadisalahi2
جمعه 08 شهریور 1387, 09:30 صبح
1- برای ارتباط دو فرم با یکدیگر شما باید یونیت های اونها در پروژه خودتون اضافه کنید. مثلا اگه میخواهید از فرم 1 اطلاعاتی رو به سمت فرم 2 بفرستید باید در فرم 1 از منوی File دستور USe Unit رو استفاده کنید و سپس در پنجره ای که باز میشه Unit 2 رو انتخاب کنید . با این کار کلیه متغیرها و موضوعات داخل فرم 2 از فرم 1 قابل مقدار دهی هستند.
حالا برای انتقال اطلاعات یک رکورد از dbgrid به فرم 2 باید ، از اون عنصری که dbgrid اطلاعات رو میخونه استفاده کنید. مثلا اگه اطلاعات رو از داخل ADOTable میخونه باید کد زیر رو بنویسید ، این کد رو برای هر فیلدی می تونید استفاده کنید.



Form2.Edit1.text:=adoTable['Code]
یا
from2.edit1.text:=ADOquery1['code']


2 - برای این عنصر هم باید خاصیت Datasource اون رو هم با نام یک عنصر Datasource که به یک جدول یا کوئری وصله ارتباط بدید.
یا حق

behzad_dr
جمعه 08 شهریور 1387, 15:26 عصر
دوست من سلام ..

پاسخ سوال اول شما :
راه منطقی اینه که شما اولا از DBEDIT استفاده کنی .. که اگر استفاده می کنید ..

مشکل شما رو من دقیقا متوجه شدم .. اما چیزی که عنوان نشده اینه که dbgrid شما مستقیما به اون تیبل حاوی اطلاعات وصله یا اینکه نه به ADOQuery ؟

اگر مستقیما به تیبل حاوی اطلاعات متصله ! که شما مشکلی نداری فقط کافیه DATASOURCE شما درست متصل شده باشه و حتی اگر بخوای کاربر بتونه با کیبرد روی گرید حرکت کنه و اطلاعاتشو ببینه .. در option گریدت rowselect رو true کن و می بینی که اطلاعات شما در dbedit های شما نمایش داده میشه ..

اگر dbgrid شما به ADOQuery ای متصله که حاوی اطلاعاته .. بهتره از locate استفاده کنی
مثلا اگر بخوای با دابل کلیک کردن موس اطلاعات مورد نظر شما نمایش داده بشه از کد زیر در رویداد ONDBCLICK گرید استفاده کن :

DataModule1.ADOTable4.Locate('serial_fact',DataMod ule1.ADOQuery1['serial_fact'],[]);

behzad_dr
جمعه 08 شهریور 1387, 15:38 عصر
پاسخ سوال دوم :

در رابطه با DBLOOKUPCOMBOBOX که پنج قمست مهم داره ..

1. LISTSOURCE : باید DATASET ای رو انتخاب کنی که می خواهی داده های شما از روی تیبل اون لیست بشه .. (تیبل مبدا)

2.LISTFIELD : باید فیلدی رو انتخاب کنی که می خواهی نمایش داده بشه ..

3.KEYFIELDD: باید فیلد کلید اون تیبل رو بگی که مد نظره و می خوای در تیبل دیگه ذخیره بشه ..
------------------------
4. DATASOURCE : باید DATASOURCE ای رو انتخا کنی که فیلد مقصد در اون است .. (تیبل مقصد)

5. DATAFIELD : فیلد مقصد است که می خوای اون فیلد کلیدی که در KEYFIELD انتخاب کردی در اینجا ذخیره شود ..
امیدوارم به پاسختون رسیده باشید ..