PDA

View Full Version : مقدار یک فیلد=: Editbox



بمب منطقی
پنج شنبه 29 بهمن 1383, 02:47 صبح
با سلام
درADO - بانک -> Access
من می خوام مثلا رکوردی که فیلد Name آن برابر با x هست (بر فرض تعداد رکوردهایی که فیلد Name ان برابر x هست، فقط یکی هست) مقدار رکورد LName این رکورد رو در یک EditBox قرار بدم.چطور میتونم این کار رو انجام بدم.(حالا یا با SQL و یا با غیر SQL)
هر چی تو بخش گشتم جوابش رو پیدا نکردم.
با تشکر فراوان :flower:

vcldeveloper
پنج شنبه 29 بهمن 1383, 04:22 صبح
اگه منظورتون رو درست متوجه شده باشم...
این یکی از راه حل ها می تونه باشه:


if ADOQuery1.Locate('Name',X,[]) then
Edit1.Text := ADOQuery1.FieldByName('LName').AsString;

بمب منطقی
پنج شنبه 29 بهمن 1383, 15:05 عصر
پیغام خطای مربوطه بعد از اجرای دستور:

راستی علامت [] در دستور
ADOQuery1.Locate('Name',X,[]) چیکار میکنه

پنج شنبه 29 بهمن 1383, 16:35 عصر
سلام

من هم اگر درست فهمیده باشم :
روی ado ات دوبار کلیک کن و سپس تمام فیلدهارو add کن و حالا توی کد راحت میتونی استفاده کنی برای نمونه :
edit1.text:=adoquery1LName.value;

...........................

:موفق:

پنج شنبه 29 بهمن 1383, 16:43 عصر
راستی علامت [] در دستور
ADOQuery1.Locate('Name',X,[])
چیکار میکنه

در داخل این علامت شما نوع جستجو را تعیین میکنی که آیا به حروف بزرگ حساس باشد یا خیر و دو مقدار بیشتر نمیگیرد که یکیش loparticalery ( تو همین مایه ها هست ) که این برای غیر حساس بودن است و مقدار دیگرش الان یادم نیست ولی یک CRT+SPACE بزن دوتا مقدارش لیست میشن .


.....
در ضمن خطایی که برنامه شما داده مربوط به اینه که dataset یا همون ado تون بسته است .

بمب منطقی
جمعه 30 بهمن 1383, 02:42 صبح
با تشکر از اینکه وقتتون رو در اختیار من قرار دادید. :flower:


در ضمن خطایی که برنامه شما داده مربوط به اینه که dataset یا همون ado تون بسته است
منظورتون اینه ->ADODataset1.Open یا این ->ADOTable1.open
من کد رو به این صورت تغییر دادم ولی بازم خطا میگیره.
متن خطا: ADODataSet1:Missing CommandText property
در ضمن این کار رو هم انجام دادم:
روی ado ات دوبار کلیک کن و سپس تمام فیلدهارو add کن


procedure TForm6.Button1Click(Sender: TObject);
begin
Form1.Show;
ADOTable1.Active:=False;
ADOTable1.open;
ADODataset1.Open;
if ADODataset1.Locate('Vahede_kasb',ComboBox2.Text,[l oPartialKey]) then
Form1.Edit1.Text:=vartostr(ADODataset1.FieldValues ['Vahede_kasb']);
ADOTable1.Active:=True;
ADODataset1.Open;
end;

vcldeveloper
جمعه 30 بهمن 1383, 03:26 صبح
متن خطا: ADODataSet1:Missing CommandText property
این خطا ربطی به کد بالا نداره. شما باید مقدار CommandText رو چک کنید و ببینید که آیا در زمان باز کردن AdoDataSet مقدار درستی داره یا نه ؟(یا اینکه اصلا مقدار داره؟!)
برای این کار قبل از دستور AdoDataSet1.Open یه دستور مثل


ShowMessage(AdoDataSet1.CommandText)


قرار بدید.

بمب منطقی
جمعه 30 بهمن 1383, 13:51 عصر
خطای مربوطه بر میگرده به همین موضوع:

در ضمن خطایی که برنامه شما داده مربوط به اینه که dataset یا همون ado تون بسته است
یعنی وقتی من تایپ میکنم :
ADODataSet1.Open; چون من تو CommandText چیزی ننوشتم خطا میگیره. پس من باید برای اون خطایی که در بالا ذکر کردم فکری کنم. یعنی برای خطای Closed Dataset.
برای بسته نبودن DataSet باید چکار کنم.

در ضمن من تو برنامم برای ارتباط فیلدها با Object های داخل برنامم ،بجز DBGrid بقیه OBject ها رو از اشیای معمولی هستن(مثل Edit وMemoو...) و از Object های DB استفاده نکردم(مثل DBEdit و DBMemo و ...)

vcldeveloper
شنبه 01 اسفند 1383, 02:01 صبح
این که در CommandText چه بنویسی، بستگی داره به مقدار خصوصیت CommandType . برای اطلاعات بیشتر درباره CommandType می تونی به راهنمای دلفی مراجعه کنی.
اما در ساده ترین حالت می تونی CommandType رو cmdTable و CommandText رو نام جدول موجود در بانک اطلاعاتی که قصد اتصال به اون رو داری بذاری.
در ضمن می تونی بجای ADODataSet از ADOTable و ADOQuery هم استفاده کنی که کار باهاشون ساده تر هست.

بمب منطقی
شنبه 01 اسفند 1383, 02:35 صبح
با تشکر فراوان از جناب آقای کشاورز و جناب آقای دادوند. من مشکلم به این صورت حل شد:

Form1.Show;
ADOTable1.Active:=False;
ADOTable1.Open;
if adotable1.Locate('Vahede_kasb',ComboBox2.Text,[loP artialKey])then
Form1.Edit1.Text:=vartostr(ADOTable1.FieldValues[' Vahede_kasb']);
ADOTable1.Active:=True;


اما در ساده ترین حالت می تونی CommandType رو cmdTable و CommandText رو نام جدول موجود در بانک اطلاعاتی که قصد اتصال به اون رو داری بذاری.
در ضمن می تونی بجای ADODataSet از ADOTable و ADOQuery هم استفاده کنی که کار باهاشون ساده تر هست.
این مورد هم خیلی به من کمک کرد.

انشاالله یه روزی بتونم جبران کنم. خیلی ممنون که وقتتون رو در اختیار من قرار دادید :D
این گلها تقدیم به شما عزیزان :)
:flower: :flower: :flower: :flower:

Delphi Skyline
شنبه 01 اسفند 1383, 11:26 صبح
می شه او database desktop یک دیتابیس sql بوجود آورد (البته ببخشید که اینجا پرسیدم)