PDA

View Full Version : سوال: استفاده از يك كوئري ساخته شده در خود دلفي



mehdimdp
شنبه 20 تیر 1388, 00:24 صبح
سلام
چطور ميتونم در يك adoquery كه در خود دلفي مينوسم . يك adoquery ديگه رو كه اونم در دلفي نوشته ام رو صدا بزنم يا مثلا حتي join كنم؟
با تشكر

Ali.Afzal
یک شنبه 21 تیر 1388, 13:15 عصر
با سلام،

شما بهتره که از یک ADO استفاده کنید و اگر نیازی به JOIN کردن دارید از دستور Group خود SQL استفاده کنید!

mehdimdp
دوشنبه 22 تیر 1388, 16:39 عصر
من همچنان منتظر پاسخ هستم.

p_ooya
دوشنبه 22 تیر 1388, 17:40 عصر
سلام
چطور ميتونم در يك adoquery كه در خود دلفي مينوسم . يك adoquery ديگه رو كه اونم در دلفي نوشته ام رو صدا بزنم يا مثلا حتي join كنم؟
با تشكر
ممکنه کمی واضحتر توضیح بدید؟

mehdimdp
دوشنبه 22 تیر 1388, 21:36 عصر
مثلا در بانك اطلاعاتيمون يك كوئري با نام A داريم كه داراي ركوردهايي هست.
حالا در يك كوئريه ديگه ميتونيم از A استفاده كنيم.
مثلا در كوئري B بنويسيم select * from a و ...
حالا من ميخوام در خود دلفي (ديتاماژول) بك كوئري بسازم و در بقيه كوئري هام از اون استفاده كنم.
درحال حاضر، من كوئري a رو در خود اكسس ايجاد كردم و در دلفي ازش استفاده مي كنم.
ولي الان ميخوام اون كوئري رو از بانكم حذف كنم و در خود دلفي اونو ايجاد كنم.

Ali.Afzal
دوشنبه 22 تیر 1388, 23:00 عصر
با سلام،

من یک سوالی از شما دارم :

شما با دلفی کار می کنید یا با اکسس؟!!!

معمولا کوئری را در دلفی می زنند و به اکسس وصلش می کنند!

راهش همانطور که گفتم استفاده از ADOQuery هست.

ConnectionString را تنظیم کنید بعد متن SQL را درون آن بنویسید. به همین سادگی!!

با تشکر.

mehdimdp
سه شنبه 23 تیر 1388, 10:20 صبح
با سلام،

من یک سوالی از شما دارم :

شما با دلفی کار می کنید یا با اکسس؟!!!

معمولا کوئری را در دلفی می زنند و به اکسس وصلش می کنند!

راهش همانطور که گفتم استفاده از ADOQuery هست.

ConnectionString را تنظیم کنید بعد متن SQL را درون آن بنویسید. به همین سادگی!!

با تشکر.

آقا مثل اينكه مشكل از منه كه نميتونم منظورم رو درست بيان كنم.
من خودمم ميدونم كه بايد از adoquery استفاده كنم. ناسلامتي 3-4 سالي هست كه با ado كار مي كنم.
شما يك بار ديگه سوال من رو بخون :
فرض مي كنيم adoquery1 را نوشته ايم كه در اون سري مقاديري select شده.
حالا من ميخوام يك adoguery2 ديگه بنويسم كه در اون ازadoquery1 استفاده كنم.
اصلا مهمترين دليل من براي اين كار اينه كه من 10تا فايل اكسس مشترك و يك جور دارم كه در همه ي چندتا كوئريه يك جور وجود داره
حالا هروقت بخوام يه كد به يك كوئري اضافه كنم ، ميباست 10 بار اين كار رو انجام بدم.
در دلفي نتونستم يك adoquery رو در يك adoqurery ديگه صدا بزنم.
آقاي كشاورز كجايييييييييييييييييييييي ؟

mohammad_alikhani
سه شنبه 23 تیر 1388, 15:26 عصر
اگر منظورتان به این صورت است که در adoqurery دوم، مثلا بنویسید، Select * From adoqurery1، فکر نمی کنم. تا آنجایی که من بلد هستم، می تونید دو تا adoqurery رو با هم Master Detail کنید.
البته اگر منظور شما رو درست متوجه شده باشم.

mehdimdp
سه شنبه 23 تیر 1388, 18:31 عصر
اگر منظورتان به این صورت است که در adoqurery دوم، مثلا بنویسید، Select * From adoqurery1، فکر نمی کنم. تا آنجایی که من بلد هستم، می تونید دو تا adoqurery رو با هم Master Detail کنید.
البته اگر منظور شما رو درست متوجه شده باشم.

شما دقيقا منظور منو درست متوجه شديد .

يعني هيچ راهي براي اين كار وجود نداره؟

Yasersadegh
سه شنبه 23 تیر 1388, 18:53 عصر
با سلام خدمت دوستان


شما دقيقا منظور منو درست متوجه شديد .

يعني هيچ راهي براي اين كار وجود نداره؟


بنده خودم تا حالا اين كارو نكردم و پيش نيومده ولي خوب فكر مي كنم كه شما مي تونيد محتويات adoquery1 رو در يه dataTable در دلفي برزيد و بعد در كوئري دوم بنويسيد Select * From dataTable1!!
فكر مي كنم كه يه همچين كاري بتونيد انجام بديد!!:متفکر:
موفق باشيد:چشمک:

p_ooya
سه شنبه 23 تیر 1388, 19:04 عصر
شما دقيقا منظور منو درست متوجه شديد .

يعني هيچ راهي براي اين كار وجود نداره؟

امیدوارم که من هم منظور شما و درست متوجه شده باشم. 3 راه حل به ذهن این حقیر میرسه که احتمالاً هیچ کدومشون به شما کمک نخواهد کرد ولی گفتنش هم ضرری نداره.

1. می تونید یه چرس و جوی تو در تو انجام بدید. وقتی می خواین روی نتایج یک query، کوئری دیگه ای بگیرین، خب یه select تو در تو بنویسید :

Select [your desired fields] from [your desired table] where [query field] in ( select * from...)
مثال :

Select Name , Family
From Students
Where Student ID IN ( Select Student ID
From Selection
Where Course ID = 1012 AND Term = 1 AND Year = ' 85 - 86 ' ) ;
2. اگه مشکلتون حل نشد، می تونید نتیجه کوئری اول رو یک فایل متنی موقت ذخیره کنید و سپس روی فایل متنی پرس و جو انجام بدید. این مطلب رو اینجا (http://www.sqlservercentral.com/Forums/Topic335844-219-1.aspx) دیدم.
3. راه حل نا مناسب : query اول رو بگیرید. در یک حلقه روی رکوردست نتیجه، پرس و جو کنید. البته من روی راه حل سوم فکر نکرده ام و ممککنه عملی نباشه.



while not(adoquery1.eof) do
begin
with adoquery2 do begin
...
end;
end;اگه باز مشکلت حل نشد، بگو باز از این راه حل های حکیمانه ام( :لبخند: )بهت بدم.

mohammad_alikhani
سه شنبه 23 تیر 1388, 22:26 عصر
البته Select تو در تو زدن با ado یکم سخت خواهد شد. چون شما چیزی به نام Macro ندارید باید همه چیز ها رو با پارامتر ها به دستور پرس و جوی خودتون اضافه کنید. البته راه حل های p_ooya عزیز واقعا حکیمانه بود. به نظر من بهترین راه، مورد شماره 1 باشه. من خودم خیلی پیش آماده که ازش استفاده کردم.