PDA

View Full Version : خاصیتی شبیه recordset در adoqueryبرای clientdataset



mohsen_borzooei
شنبه 16 دی 1385, 10:16 صبح
سلام
در adoquery وقتی که یه دستور selectمی نویسیم نتیجه آن در recordset ذخیره شده و ما میتونیم از اون استفاده کنیم .
حالا من تو یه برنامه تحت شبکه از client dataset با استفاده از خاصیت commandtextاون دستور select رو اجرا کردم اما نتیجه اونو نمی دونم کجا ذخیره شده .
لطفا در صورت امکان مرا راهنمائی کنید .
با تشکر .

darvishiali
شنبه 16 دی 1385, 14:33 عصر
بهترین روش برای کار با ClientDataSet اینه که نتیجه یه کوئری (دیتاست) رو بریزی تو DataSetProvider و بعد خصوصیت ProviderName اون ClientDataSet رو تنظیم کنی به اون DataSetProvider. امتحان کن، اگه نتونستی باهاشون کار کنی، پیغام بذار. (برای این کار لازم نیست هیچ کدی بنویسی! فقط خصوصیت DataSet مربوط به DataSetProvider رو نام ADOQuery بذار و خصوصیت ProviderName مربوط به ClientDataSet رو نام DataSetProvider. حالا اگه ClientDataSet رو Open کنی، همون دیتاست نتیجه کوئری توشه، ولی در سمت Client و بصورت Offline. یعنی تا زمانی که ClientDataSet رو ApplyUpdate نکنی، تغییرات توی DB ذخیره نمیشه! )

mohsen_borzooei
یک شنبه 17 دی 1385, 08:53 صبح
بهترین روش برای کار با ClientDataSet اینه که نتیجه یه کوئری (دیتاست) رو بریزی تو DataSetProvider و بعد خصوصیت ProviderName اون ClientDataSet رو تنظیم کنی به اون DataSetProvider. امتحان کن، اگه نتونستی باهاشون کار کنی، پیغام بذار. (برای این کار لازم نیست هیچ کدی بنویسی! فقط خصوصیت DataSet مربوط به DataSetProvider رو نام ADOQuery بذار و خصوصیت ProviderName مربوط به ClientDataSet رو نام DataSetProvider. حالا اگه ClientDataSet رو Open کنی، همون دیتاست نتیجه کوئری توشه، ولی در سمت Client و بصورت Offline. یعنی تا زمانی که ClientDataSet رو ApplyUpdate نکنی، تغییرات توی DB ذخیره نمیشه! )
دوست عزیز سلام
مطالب شما برای من نامفهومه . منظورت اینه که من تو برنامه کلاینت یه ClientDataSet بذارم و تو برنامه سرور یه DataSetProvider بعدش این دوتا رو با خاصیت ProviderName به هم وصل کنم البته باید بگم که این کارهارو من انجام دادم و توی برنامه کلاینت ام از SocketConnection استفاده کردم و اونو از یه طرف به سرور و از طرف دیگه به ClientDataSet وصل کردم . حال من نمی دونم که اون دستور select رو کجا بنویسم و چه جوری از نتیجه اون استفاده کنم .
با تشکر.

mohsen_borzooei
یک شنبه 17 دی 1385, 09:23 صبح
سلام
دوستمون آقای کشاورز در یه تاپیک دیگه ای به این صورت عنوان کرده اند:(در clientdataset )

روش دوم هم (اگه واقعا نیاز دارید از CommandText استفاده کنید) برای دستوراتی که RecordSet برمی گردونند بهتره.
این موضوع همون مشکل منه که چون این تاپیک در این موضوع بود به اینجا نقل قولش کردم .

حال من نمی دونم که اون دستور select رو کجا بنویسم و چه جوری از نتیجه اون استفاده کنم .

باتشکر.

mohsen_borzooei
یک شنبه 17 دی 1385, 11:11 صبح
اگه ممکنه در این مشکل منو راهنمایی کنید
با تشکر.

MNosouhi
یک شنبه 17 دی 1385, 12:27 عصر
در adoquery وقتی که یه دستور selectمی نویسیم نتیجه آن در recordset ذخیره شده و ما میتونیم از اون استفاده کنیم .
حالا من تو یه برنامه تحت شبکه از client dataset با استفاده از خاصیت commandtextاون دستور select رو اجرا کردم اما نتیجه اونو نمی دونم کجا ذخیره شده .
اصلا چه احتیاجی داری که این رو بدونی ، خاصیت Dataset از عتصر Datasource رو به ClientDataset قرار بده و بعد dbgrid رو هم به datasource وصل کن و نتیجه دستوری رو که در commandtext نوشته بودی رو ببین.
اگه منظورت این نیست ، بیشتر توضیح بده.

mohsen_borzooei
یک شنبه 17 دی 1385, 12:54 عصر
با سلام
منظور من دیدن نتیجه در dbgrid نیست
من می خوام بعد از اجرای دستور select به تک تک فیلدهای که با دستور selectبازیابی کرده ام دستیابی داشته باشم دقیقا مثل خاصیت recordset که به صورت زیر استفاده می شود :
Recordset.Fields[0].Value

mzjahromi
یک شنبه 17 دی 1385, 12:59 عصر
ClientDataSet1.Fields[0].As...

mohsen_borzooei
یک شنبه 17 دی 1385, 13:12 عصر
سلام
من کد زیر رو قبلا برای پر کردن یه combobox نوشته بودم حالا تو برنامه جدیدم که از ClientDataSet استفاده کرده ام ایچنین کاری رو می خوام انجام بدم که با خطا مواجه می شم اگه منو راهنمایم کنید ممنونتون می شم

with ADOQuery1 do
begin
ComboBox11.Items.Clear;
SQL.Clear;
SQL.Add('select name_doc from mosh_doc');
Open;
while not Recordset.EOF do
begin
ComboBox11.Items.Add(Recordset.Fields[0].Value);
Recordset.MoveNext;
end;
ComboBox11.ItemIndex:=0;
end;

mzjahromi
یک شنبه 17 دی 1385, 13:18 عصر
with ClientDataSet1 do
begin
ComboBox11.Items.Clear;
CommandText:='select name_doc from mosh_doc';
Open;
while not EOF do
begin
ComboBox11.Items.Add(Fields[0].Value);
MoveNext;
end;
ComboBox11.ItemIndex:=0;
end;

mohsen_borzooei
یک شنبه 17 دی 1385, 14:03 عصر
MoveNext;
next;
با تشکر مشکلم حل شد .