PDA

View Full Version : #2 . Query گرفتن از یک Query موجود



Spritchou
چهارشنبه 23 اسفند 1385, 10:39 صبح
سلام
اول بگم که عنوان قبلی رو که دوستمون iranianprogrammers نوشته بود ، دیدم ، توی آرشیو هم کلی گشتم .

ببینید من یه SP یا یه دونه Query دارم که بنا به دلایلی کلی طول میکشه که جواب بده ، در ضمن توی اون هم نمی تونم تغییر بدم :عصبانی++: (محدودیت ریاست :ناراحت: )
حالا یه فرم دارم که توی یه دونه Grid از این Query یا Sp استفاده می کنم .
تا اینجا مشکلی نیست .
اگه بخوام از این Data یک Query بزنم باید چکار کنم ؟
مثلا : 1. ردیف های با فیلد فلان ...
2. Sum یک فیلد از این Query ...

یه سری چیزا در مورد ClientDataSet دیدم ، ولی دقیقا متوجه نشدم چکار کنم AdoQuery دومی که می نویسم ؟!

DB --> Query1 --> ClientDataSet--> Query2

لطف می کنید کمک کنید ؟

ghabil
چهارشنبه 23 اسفند 1385, 21:48 عصر
تو هم از DBISAM استفاده میکنی یا SQLServer؟ اگر SQLServer که تو همون سوالی که IranianProgramer پرسیده بود یک لینک دادم برای جواب بهش ، اگر DBISAM دقیقا بگو میخوای چیکار کنی...
در مورد ClientDataSet یک امکان بسیار عالی داره که میتونید فیلدهاتون رو توش تعریف کنید و بعد CreateDataSet کنیدش بعد دیتارو توش پر کنید و بعد روی همون دیتا کوئری بزنید ، فکر میکنم قبلا توضیح دادمش یک سرچی بزن.

Spritchou
پنج شنبه 24 اسفند 1385, 08:09 صبح
سلام
آره منم از Sql-Server استفاده می کنم و ADO .
اون لینکی هم که فرمودین ، دیدم کلی جای دیگه هم توی سایت عینا این مطلب نوشته شده :


بهترین روش برای کار با ClientDataSet اینه که نتیجه یه کوئری (دیتاست) رو بریزی تو DataSetProvider و بعد خصوصیت ProviderName اون ClientDataSet رو تنظیم کنی به اون DataSetProvider. امتحان کن، اگه نتونستی باهاشون کار کنی، پیغام بذار. (برای این کار لازم نیست هیچ کدی بنویسی! فقط خصوصیت DataSet مربوط به DataSetProvider رو نام ADOQuery بذار و خصوصیت ProviderName مربوط به ClientDataSet رو نام DataSetProvider. حالا اگه ClientDataSet رو Open کنی، همون دیتاست نتیجه کوئری توشه، ولی در سمت Client و بصورت Offline. یعنی تا زمانی که ClientDataSet رو ApplyUpdate نکنی، تغییرات توی DB ذخیره نمیشه! )


ولی هیچ جا ننوشتید که این Query‌ دومی که توی Client-DataSet می نویسیم ، چه ساختاری داره.
ببینید من نمی دونم باید از چه Table ای Select بزنم .
منطقا واسه اینکه فکر من پیاده بشه ، باید بتونم از همون Client-DataSet ، یا یه بخشی از اون Select جدید بزنم .
یعنی اول Data رو از اولین Query یا Sp‌ بگیرم ، بریزم توی یه Local-Table به اسم Client_DataSet بعد عملیات زیر رو انجام بدم :


Select * From MyClient_DataSet Where Const
:متفکر:

ghabil
جمعه 25 اسفند 1385, 12:30 عصر
سلام
آره منم از Sql-Server استفاده می کنم و ADO .
اون لینکی هم که فرمودین ، دیدم کلی جای دیگه هم توی سایت عینا این مطلب نوشته شده :

:متفکر:

من بیشتر منظورم این بود :

1)
خب چرا نمیذاری همین کار رو دیتا بیس برات بکنه یعنی QUerit رو کامل تر کنی مثلا :
Select * from (Select * from table where field1=2) where field2=1
این مثلا یک کوئری از کوئری .

کلا اگر از SQLServer استفاده میکنی خیلی بعیده حالتی پیش بیاد که نتونی با کورئری مقدارش رو بگیری ، اگر دقیقا بگی میخوای چی کار کنی شاید بیشتر بشه بهت کمک کرد .

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