PDA

View Full Version : مشکل در کار با query



Roozbeh
سه شنبه 15 فروردین 1385, 20:38 عصر
درود
دوستان من یه برنامه نوشتم که در اون 3 تا فرم دارم و یک دیتا ماژول که در اون 3 تا دیتا بیس تعریف شده.در هر فرم یک DBGrid دارم که به یکی از دیتا بیس ها وصل شده.3تا هم Query تعریف کردم و دیتا سورس هرکدوم رو به یکی از از دیتا سورسها متصل کردم.حالا در رویداد یک باتن در فرم یک وقتی کویری رو به دیتاسورس جدول همون فرم متصل میکنم به این صورت:

void __fastcall TmainForm::midshiwButtonClick(TObject *Sender)
{
TQuery *Q1=DataModule1->studentQuery;
DataModule1->DataSource1->DataSet=Q1;
Q1->Close();
Q1->SQL->Clear();
Q1->SQL->Add("select *from choos where id=");
Q1->SQL->Add(midshowEdit->Text);
Q1->Open();
بعد از کلیک روی باتن این خطا رو میده:Debugger exception notification
و وقتی ok میکنم میاد اول خط Q1->Close();
و این خط رو آبی نشون میده.
اما همین که در رویداد باتن فرم1 کویری رو به دیتا سورس جدولی که در این فرم نیست (فرمهای 2یا3) متصل میکنم دیگه این خطا رو نمیگیره و فقط در DBGrid فرم یک اطلاعات DBGrid فرمی که کویری رو به اون متصل کردم نشونمیده.

من در برنامه های قبلی وقتی فقط یک دیتابیس و کوری داشتم ،در هر فرمی با همین کد نویسی
فیلتر میکردم و هیچ ایرادی پیش نمیومد.
امیدوارم منظورم رو رسونده باشم و خوشحان میشم اگر راهنمایی کنید.

mzjahromi
چهارشنبه 16 فروردین 1385, 08:27 صبح
میشه متن خطا رو کامل بنویسید؟

Roozbeh
چهارشنبه 16 فروردین 1385, 16:43 عصر
سلام
اینم متن خطا:

Project mainProject .exe raised exception class EDatabaseError with message 'DataSource1:Circular datalinls are not allowed' .
Process stopped.Use Step or Run to continue.

mzjahromi
چهارشنبه 16 فروردین 1385, 16:56 عصر
این خطا زمانی رخ میدهد که مثلا DataSource یک Quey برابر با DataSource1 و DataSet اون DataSource هم Query1 باشد. یعنی حالت زیر


Query1.DataSource:=DataSource1;
DataSource1.DataSet:=Query1;

صد در صد شما یه همچین اشتباهی کردید
خاصیت DataSource مر بوط به Q1 رو برابر با Nil قرار بدید.

Roozbeh
چهارشنبه 16 فروردین 1385, 18:58 عصر
mzjahromi جان
سپاسگزارم.شما درست میگفتید.

Roozbeh
چهارشنبه 16 فروردین 1385, 18:59 عصر
mzjahromi جان
سپاسگزارم.شما درست میگفتید.