PDA

View Full Version : سوال: تبدیل فیلتر گرید جانوس به Select command



ali190
پنج شنبه 29 دی 1390, 22:13 عصر
با سلام و عرض خسته نباشید
در پروژه پیوستی فیلتر گرید جانوس رو میخواستم به Select Command تبدیل کنم تا مثلاً بتونم از این Select command در پاس دادن مقادیر فیلتر شده به کریستال ریپورت استفاده کنم
مشکل اینجاست که در Select Command ساخته شده عبارات String فاقد تک کوتیشن در اطراف عبرات هستند
میخواستم بدونم امکانش هست این عبارات رو به Select command استاندارد تبدیل کنیم؟
در پروژه پیوستی بعد از انام فیلتر بر روی دکمه "تبدیل به Select command" کلیک کنید
ممنون و متشکر
یاعلی

rahmana
جمعه 30 دی 1390, 02:26 صبح
با سلام خدمت شما
برای انجام این کار چندین روش وجود دارد که یکی از آنها روشی است که خودت انجام دادی برای اصلاح کارت پس از شرطت وقبل از " یک تک کوتیشن اضافه کن و بعد از تبدیل پارامتر به رشته در انتها بازهم یک تک کوتیشن بین " " قرار بده و انرا به کل رشته اضافه و بعد ارسال کن.
روش بعدی فقط ارسال پارامتر به گزارش و استفاده از parameter field هاو filter ها می باشد که خیلی ساده تر می باشد.
روش سوم قراردادن منبع مشخص شده با تمام محدویت ها و فیلتر ها به عنوان منبع گزارش

من فایل پیوست را باز کردم ولی چون فایل ابزاری را که استفاده کردی در دسترس نداشتم نتوانستم برنامه را اجرا کنم فقط کدها را مشاهده کردم.
اگر سوالی داشتید می توانید به ایملم ارسال کنید

با تشکر سید رحمان احمدی

ali190
جمعه 30 دی 1390, 07:25 صبح
سلام
ابزار های استفاده شده در پروژه رو آپلود کردم
اگر امکانش هست تغییرات رو باهم بر روی نمونه اعمال کنیم
راستی در مرود روش اول ، منظورتون رو اصلاً متوجه نشدم
میشه بیشتر توضیح بدید
ممنونم
یاعلی

zarrinnegar
جمعه 30 دی 1390, 22:38 عصر
فیلتر جانوس روی گرید اعمال میشه و دستوراتش رو گرید میفهمه و بیرون از اون به همون صورت کارایی نداره

مثلا شما اطلاعات پرسنل را بر اساس نام خانوادگی شامل احمدی و حقوق خالی نباشد را انتخاب کنید
و خروجی آن را مطابق دستور زیر ببینید

MessageBox.Show(FilterEditor1.FilterCondition.ToSt ring());


میبینید که به این صورت مینویسد

(([Person_Family] Contains احمدی) And ([Salary] Isn't empty ))


خوب در این صورت میبینید که دیکد کردن این دستورات کار دارد
اول که کلمه احمدی باید داخل یک جفت تک کوتیشن قرار گیرد و بعد و قبل از آن علامت درصد گذاشته شود و کلمه Contain به Like تبدیل شود و بعد از آن کلمه empty به Null و کلمه Isn't به Not تبدیل شده و در نهایت دستور Sql آن بصورت زیر ساخته شود

select * from Person where Person_Family like '%احمدی%' and Salary Is Not Null


این قسمتی از کار است باید تمامی اپراتور ها و شرط ها و غیره از نوع جانوس باید تبدیل به نوع معادل آن در sql شود
شدنی است ولی کار دارد
یک نکته مهم هم دارد و آن اینست که باید در هنگام تبدیل ، تشخیص داده شود که این فیلد از نوع رشته ای است یا عددی و یا Boolean و یا .... که مناسب با آن بتوان این تبدیل را انجام داد
و مهم تر از اینها این است که همه این کار ها باید در داخل حلقه ای قرار گیرد که به تعداد Condition ایجاد شده موارد را تبدیل کند