PDA

View Full Version : مشکل عجیب در دلفی با Query



Mbr
یک شنبه 18 مرداد 1383, 12:14 عصر
با سلام
من در یک برنامه می خواهم از یک AdoQuery در تمام قسمتهای برنامه استفاده کنم ولی وقتی که در یک قسمت برنامه از این AdoQuery را بصورت فعالی در می آورم بقیه فرمهایی که این AdoQuery به آنها متصل شده اند نیز ÷یغام خطا می دهند . چکار کنم
کمکم کنید .

(امید)
یک شنبه 18 مرداد 1383, 12:19 عصر
...÷یغام خطا می دهند . چکار کنم ...
بهترین کار اینه که پیغام خطا و SQL کوری رو بنویسی..
:wink:

Mbr
یک شنبه 18 مرداد 1383, 12:29 عصر
سلام امید جان
ببینید زمانی که من در Query چهار خط دستور Sql برای جستجو نوشته ام و این دستورات فقط مربوط به این گزارش می شود ولی برای Query بعدی از دستورات دیگری استفاده کرده باشم در اینصورت زمانی که اولین Query در حالت فعال قرار می گیرد دومین Query نیز فعال می شود ولی چون دومین کوری دستوراتش فرق می کند ÷یغام خطا صادر می گردد .

Mbr
یک شنبه 18 مرداد 1383, 14:20 عصر
با سلام
دوستان عزیز در این مورد مرا یک نفر راهنمایی نماید .

(امید)
یک شنبه 18 مرداد 1383, 14:34 عصر
بازم بهترین کار رو نکردین که 8-) قرار شد خطا رو هم بنویسید. . :wink:


در اینصورت زمانی که اولین Query در حالت فعال قرار می گیرد دومین Query نیز فعال می شود ولی چون دومین کوری دستوراتش فرق می کند ÷یغام خطا صادر می گردد .

فعال شدن یک query ربطی به فعال شدن query دیگه ای نداره .
نمی دونم چطور از query استفاده کردین . active بودن یک query رو خودتون می تونید تو برنامه set کنید . هنوز سوالتون مبهمه .

یک پیشنهاد هم دارم که اصلا ربطی به سوال شما نداره . به جای BDE از ADO استفاده کنید.

Mbr
یک شنبه 18 مرداد 1383, 18:46 عصر
امید جان سلام
من از ADo استفاده کرده ام در ثانی من در سوالم نوشته ام که یک Query دارم در نتیجه زمانی که این Query را فعال کنم بقیه فرمهایی که به این Query متصل هستند نیز فعال می شوند

v_shalchian
یک شنبه 18 مرداد 1383, 22:03 عصر
من احتمالا منظور شما را متوجه شدم.
به نظر من این که شما نوشته اید اصلا مشکل عجیب نیست.بلکه طبیعی است.
وقتی برنامه اجرا میشود به طور پیش فرض فرمها ساخته می شوند.و در حافظه قرار می گیرند.بنابراین هر رویدادیی از فرمهای دیگر حتی زمانی که اونها رو نمی بینیم همون لحظه اجرا میشه.
پس شما باید برنامه تون رو طوری تغییر بدید که این اتفاق نیفته.

SReza1
یک شنبه 18 مرداد 1383, 23:00 عصر
اینکه شما از یک query استفاده میکنید عجیبه!! و عجیبتر اینکه شما تمام فرمها را در صفحه به صورت active دارید!!! شما با توجه به طراحی بهرته که در زمان runtime فرم رو create کنید و یا اینکه بیخیال یه query بشی!! :shock:

orion188
دوشنبه 19 مرداد 1383, 00:23 صبح
سلام
همونطور که دوستان گفتن ، استفاده از یک Query در اینجا به هیچ وجه درست نیست. شما میتونین توی یک DataModule یک سری Query ایجاد کنین ، با اسامی گویا. و به هر کدوم دستور SQL خودش رو نسبت بدین.

اما سوال من اینه : شما توی فرمهای دیگه چطور از این Query ها استفاده میکنین که خطا میده؟ میشه یه مقدار توضیح بدین؟

موفق باشید

Mbr
دوشنبه 19 مرداد 1383, 10:38 صبح
با سلام
ابتدا به دوستان عرض کنم که این برنامه ای که من برای این موسسه نوشته ام تقریبا 110 تا فرم داره که از این فرمها تعداد 90 تا فرم برای جستجوی اطلاعات به عناوین و شکلهای مختلف است . در نتیجه نمی توانم برای هر فرم از یک Query استفاده کنم در اینصورت 90 تا Query دارم . با این مثال متوجه می شوید :
Query اول با توجه به دستورات زیر است :
Adoquery1.sql.text:='select * from hafez ' ;
adoquery1.active:=true;

ًQuery2 دوم با توجه به دستورات زیر است :
Adoquery1.sql.text:='select * from kanoon ';

حال زمانی که Query اول فعال شود این Query2 نیز فعال می شود و در نتیجه فرم مربوط به Query2 نیز فعال شده و ÷یغام خطایی مبنی بر اینکه فیلدهای موجود در Query1 در این Query وجود ندارد .
متشکرم

object
سه شنبه 20 مرداد 1383, 01:21 صبح
سلام ببخشید
اما کارت OBJECT ORIENTED نیست
تو باید یک کلاس برای اجرای Query هات درستمیکردی
هر کدوم از گزارشات باید اون کلاس رو صدا میکردند و در لحظه صدا می کردن و اونوقت اون کلاس خودش با استفاده از کلاس صدا زننده یک دستور SQL مناسب رو ایجاد و بعد اجرا میکرد
اگر از من میشنوی اساس طراحیت رو تغییر بده و عوضش کن چون بعدا خیلی خیلی خیلی به مشکل برخورد میکنی
درست مثل الان که شدیدا موضوع رو پیجوندی
اگر طلبه بودی با من تماس بگیر

_alish_
سه شنبه 20 مرداد 1383, 10:05 صبح
Mbr
همانطور که دوستان گفتند کارت اشتباه است
اما مشکلت، فکر کنم فیلدی در فرمهای دیگر به DataSet ، Query تو وصل می شوند که وقتی برنامه را اجرا می کنی (حال نمی دونم در Create فرمهات چی نوشتی) که آن Object می خواد به فیلد مربوطه اش وصل شود که نمی تواند آنرا پیدا کند و در این حالت Exception رخ می دهد
البته بهتر بود Error را می نوشتی تا بهتر نظر می دادیم

Mbr
سه شنبه 20 مرداد 1383, 11:50 صبح
با سلام خدمت دوستان عزیز
با تشکر و لطفی که فرمودید و جواب سوالم را دادید الان به اشتباه خودم پی بردم اگر لطف کنید و یک مثال بیا مقداری توضیحات درباره این طریقه برنامه نویسی یعنی بصورت کلاس بندی شده و object orint بنویسیى ممنون می شوم .
با تشکر