PDA

View Full Version : مشکل در کار با ADOCommand1->CommandText



Roozbeh
جمعه 13 بهمن 1385, 11:14 صبح
درود به همه شما دوستان
من دارم رو یک پروژه دانشجویی کار میکنم که باید با استفاده از CB و SQLserver2000 انجام بدم.
مشکل من در حال حاضر در استفاده از ADOCommand است.به این ترتیب که من نمیتونم نتیجه یک جستجو رو به یک مثلا ادیت باکس بیارم.به عنوان مثال:
این قطعه کد:

DataModule1->ADOCommand1->CommandText="select max([shomare moshtarak])as max from moshtarekin";
DataModule1->ADOCommand1->CommandType=cmdText;
که در رویداد آن کلیک یک دکمه هست به این شکلی که نوشتم جواب میده ولی من باید جواب اونو در یک ادیت باکس بیارم تا کاربر ببینه و وقتی اینطوری مینویسم:

IDeEdit->Text=DataModule1->ADOCommand1->CommandText="select max([shomare moshtarak])as max from moshtarekin";

پیغام میده که :

[C++ Error] eshterakUnit.cpp(66): E2492 Properties may only be assigned using a simple statement, e.g. "prop = value;"
حتی کل عبارت سمت راست مساوی (ideEit->text)رو هم که داخل پرانتز میزارم بازم همین پیغام رو میده.

بیشتر گزارشهایی که باید بگیرم باید یه جایی نمایش داده شوند و من همین مشکل رو دارم.خوشحال میشم راهنمایی کنید.
سپاسگزارم.

Mahyaa
جمعه 13 بهمن 1385, 16:11 عصر
سلام
شئ TADOCommand معمولا برای اجرای دستورات DDL در SQL استفاده میشه یا اجرای پروسه هایی که هیچ رکورد ستی رو برنمیگردونند .

برای کوئری که شما نوشتید ، میتونید از یک TADODataSet یا TADOQuery استفاده کنید .

پیشنهاد میکنم برای استفاده از اونها ، Help خود C++ Builder رو ببینید . خیلی خوب توضیح داده و کمک زیادی میکنه .

فقط در حد یک توضیح کوچک میتونم بگم که کدی که برای نمایش مقدار بازگشتی کوئری نوشتید ، با استفاده از TADODataSet تقریبا این شکلی میشه :


IDeEdit->Text = DataModule1->ADODataSet1->FieldByName("max")->AsString;

برای نمایش و Navigate کردن اطلاعات داخل بانک هم میتونید (برای راحت تر شدن کار) از کنترلهایی که در تب DataControls قرار دارند ، استفاده کنید . مثل DBEdit ، Grid و ...
که البته برای اتصال این کنترلها به کامپوننتهای دیتابیس (AdoDataSet , Table و ..) لازمه که از یک TDataSource استفاده کنید که در تب DataAccess قرار داره .

برای شروع ، به نظر من مثالهای خود بورلند رو ببینید ، بهتره . مسیرش هم فولدر Examples در فولدر خود CBuilder6 هستش . مثالهای ADO و DBTasks کمک میکنه .

Roozbeh
شنبه 14 بهمن 1385, 16:37 عصر
با سپاس از شما دوست گرامی مشکل من تقریبا حل شد.
اما الان پرسشی درمورد رویداد Oncalc در ADOtable دارم که دستور زیر را من در آن مینویسم اما عمل نمیکند:

DataModule1->karkardADOTable->FieldValues["karkard"]=StrToInt(DataModule1->karkardADOTable->FieldValues["bazdide fely"])-
StrToInt(DataModule1->karkardADOTable->FieldValues["akharin bazdid"]);

آیا در این مورد هم کار خاصی باید انجام دهم؟