PDA

View Full Version : یه مشکل کوچک با Ado



ictboy
یک شنبه 13 اسفند 1385, 10:28 صبح
با سلام و خسته نباشد خدمت دوستان گرامی
من یه مشکل با ADO دارم. البته قبل درج یه سری تو سایت زدم ولی به نتیجه ای نرسیدم و این تاپیک رو ایجاد کردم. من در حال نوشتن برنامه ای هستم که بانکم Access هست و در اون می خوام با ADOQuery و دستورات SQL یک سری رکوردها از جدولی به جدول دیگر اضافه کنم ولی با پیغام خطا مواجه می شم. من از کد زیر برای این کار استفاده می کنم.



For i:=0 to LBSelUser.Items.Count Do ***لیست باکس اعضای انتخاب شده***
Begin
With DataModuleBank.ADOQuery3 Do
Begin
DataSource:=Nil;
DataSource:=DataModuleBank.DataSourceUser; ***دیتا سورس جدول اعضا***
Close;
SQL.Clear;
SQL.Add('Insert into temp Select * From Users Where (((Users.FLName) = "'+LBSelUser.Items[i]+'"))');
Open;
End;//With
End;//For
end;


پیغام های خطا :
1:
Current provider does not support returning multiple recordsets from a single execution

2:
ADOQuery3 : CommandText does not return a result set


البته با بلوک TRy Except یه جورایی قابل کنترل است ولی می خوام بدونم اشکال کارم کجاست؟
متشکرم

m-khorsandi
یک شنبه 13 اسفند 1385, 11:29 صبح
2:
ADOQuery3 : CommandText does not return a result set

وقتی از Update ، Delete یا Insert استفاده می‌کنی به خاطر اینکه RecordSetیی برگردانده نمی‌شه
باید از ExecSQL یا ExecProc استفاده کنی.



Current provider does not support returning multiple recordsets from a single execution
این پیغام رو کجا می‌گیری؟ روی چه خطی؟ از NextRecordSet استفاده کردی؟

ictboy
یک شنبه 13 اسفند 1385, 12:49 عصر
متشکرم از اینکه جواب دادید. لطف می کنید کمی بیشتر توضیح دهید . از NextRecordset استفاده نکردم

m-khorsandi
یک شنبه 13 اسفند 1385, 13:00 عصر
SQL.Add('Insert into temp Select * From Users Where (((Users.FLName) = "'+LBSelUser.Items[i]+'"))');
Open;
از دستور Insert برای نوشتن کوئریت استفاده کردی و برای اجراش باید از ExecSQL استفاده کنی به این دلیل که موقعی از Open استفاده میکنیم که منتظر برگشت مجموعه‌ای از رکوردها (Record Set) باشیم، پس وقتی برگشتی نداریم و قرار هست ویرایش/حذف/درج اطلاعات انجام بشه از ExecSQL استفاده می‌کنیم.


Current provider does not support returning multiple recordsets from a single execution
این خطا رو کجا میگیری؟