PDA

View Full Version : سوال: اجراي كوئري



dadsara
دوشنبه 02 دی 1387, 12:12 عصر
سلام
من در فرم ضميمه مي خواهم بازدن كليد موجود بر روي فرم عمليات زير اتفاق بيافتد :
1- در تكست باكس موجود ،‌ يك Select فرض كنيد مشابه نمونه روي ليبل نوشته شده است با فشردن كليد موجود مي خواهم اين كوئري اجرا شود
** نكته اينكه هيچ كوئري در بانك وجود ندارد **
2- بعد از مشاهده و اجراي كوئري هنگام بسته شدن آن پيامي مبني بر اينكه آيا مي خواهيد آنرا ذخيره نمائيد؟ ظاهر شود.

يك سوال ديگر اينكه :
3- آيا كدي وجود دارد مبني براينكه اگر كوئري وجود دارد آنرا حذف كن و الا يك كوئري با نام X بساز ؟

dadsara
سه شنبه 03 دی 1387, 12:30 عصر
سلام و خسته نباشيد خدمت همه دوستان
لطفا اگر كسي به راه حلي رسيده است ، راهنمائي كند

شاپرک
چهارشنبه 04 دی 1387, 12:13 عصر
بهتر نیست سوال هاتون رو یکی یکی بپرسید ؟
از دوستان راهنمایی بخواهید نه اینکه فایل بذارید و انتظار داشته باشید دوستان چیزهایی رو که لازم دارید براتون انجام بدن !!!
با این روش چیزی یاد نمیگیرید .
حالا اگه خواستید سوال اولتون رو توضیح بدید تا هر کسی میتونه راهنمایی کنه

dadsara
چهارشنبه 04 دی 1387, 15:59 عصر
بهتر نیست سوال هاتون رو یکی یکی بپرسید ؟
از دوستان راهنمایی بخواهید نه اینکه فایل بذارید و انتظار داشته باشید دوستان چیزهایی رو که لازم دارید براتون انجام بدن !!!
با این روش چیزی یاد نمیگیرید .
حالا اگه خواستید سوال اولتون رو توضیح بدید تا هر کسی میتونه راهنمایی کنه
سلام
دوست عزیز من در تاپیکهائی که دوستان دیگر مطرح می کنند بارها دیده ام عنوان شده " اگر نمونه فایل را قرار بدی بهتر می شود راهنمائی کرد " در حالیکه شخص جنابعالی برعکس این نظر را دارید ،
- من قصد دارم یک تکست باکس روی فرم داشته باشم و داخل آن یک Select نوشته شده است و با زدن یک کلید آن کوئری اجر شود
در ضمن یادآوری می کنم که در نمونه های موجود از روش ایجاد کوئری با یک نامی که از قبل وجود این کار را انجام داده اند و بنده آنرا ملاحظه کردم
- ضمنا چون هر سه سوال به یکدیگر مرتبط بود من یکجا پرسیدم

dadsara
شنبه 07 دی 1387, 07:52 صبح
سلام
اگر از دوستان به راه حل جديدي دست يافته است لطفا راهنمائي كند

شاپرک
شنبه 07 دی 1387, 11:26 صبح
چه جور Query ای ؟
Select ؟
به این صورت میشه :


CurrentDb.Execute Text0

یا


DoCmd.RunSQL Text0

در این صورت نتیجه اون چطور نمایش داده بشه ؟

dadsara
شنبه 07 دی 1387, 15:39 عصر
چه جور Query ای ؟
Select ؟
به این صورت میشه :


CurrentDb.Execute Text0

یا


DoCmd.RunSQL Text0

در این صورت نتیجه اون چطور نمایش داده بشه ؟
سلام
ضمن تشکر از جنابعالی
دستورات Run SQL فکر میکنم معمولا در خصوص اپدیت ، حذف ، ایجاد و احتمالا ساخت جدول بکار می رود
ولی منظور این است که بعد از اجرای کوئری مقدایر حاصل را کاربر رویت کند (Open Query)
- حالت اول جنابعالی را در فایل ضمیمه انجام دادم و فکر می کنم من اشتباه متوجه شده ام چون هنگام اجرا با خطا مواجه می شوم

شاپرک
یک شنبه 08 دی 1387, 07:28 صبح
اینم یه نمونه : البته ممکنه راه حل دیگه ای هم داشته باشه
روش کار: ابتدا Query رو با دستور SQL ای که داخل TextBox هست میسازم و بعد با دستور OpenQuery نمایش میدم
فکر کنم جواب سوال سوم رو هم گرفته باشید

dadsara
یک شنبه 08 دی 1387, 08:00 صبح
اینم یه نمونه : البته ممکنه راه حل دیگه ای هم داشته باشه
روش کار: ابتدا Query رو با دستور SQL ای که داخل TextBox هست میسازم و بعد با دستور OpenQuery نمایش میدم
فکر کنم جواب سوال سوم رو هم گرفته باشید

سلام
ضمن تشكر از جنابعالي دوست عزيز باتوجه به اينكه اين برنامه تحت شبكه كار مي كند ، بنظر جنابعالي باتوجه به اينكه ابتدا يك كوئري مي سازيد سپس مقادير داخل تسكت 0 را در آن قرار مي دهيد اگر در همان لحظه كاربر ديگري بخواهد گزارش ديگري اجرا كند آيا تداخلي صورت نمي گيرد؟
- علت اينكه من نمي خواستم از روش استفاده كنم اجراي همزمان بيش از يك كاربر بود
قبلا يك چيزي شبيه همين چيزي كه شما زحمت كشيديد پيدا كرده بودم ( البته بدون استفاده از فانكشن)


Private Sub CmdRun_Click()
Dim Db As Database
Dim QryDef As QueryDef
Dim StrSQL As String
Dim StrQryName As String
Set Db = CurrentDb
StrQryName = "Q1"
If IsNull(Text35) = False Then
StrSQL = Text3 + " " + Text13 + " " + Text35 + " " + Text22
Else
StrSQL = Me.TxtSelect
End If
Db.QueryDefs.Delete StrQryName
Set QryDef = Db.CreateQueryDef(StrQryName, StrSQL)
DoCmd.OpenQuery StrQryName, acViewNormal
Exit Sub
End Sub
اگر در اين خصوص بنده را راهنمائي كنيد ممنون مي شوم
- اگر بتوان كد را به يك چيزي شبيه نمونه ضميمه تغيير داد ،‌ تقريبا تمام حالتها را پوشش مي دهد (البته من فانكشني را كه شما زحمت كشديد با اجازه داخل يك ماژول قرار دادم )
مجددا از جنابعالي بخاطر زحمتي كه كشيديد متشكرم

شاپرک
یک شنبه 08 دی 1387, 08:34 صبح
این روش امکان پذیر نیست
expression.OpenQuery(QueryName, View, DataMode)
QueryName Required Variant. A string expression that's the valid name of a query in the current database. If you execute Visual Basic code containing the OpenQuery method in a library database, Microsoft Access looks for the query with this name first in the library database, then in the current database.
البته میشه روش قبل رو کاری کرد که تو شبکه هم مشکل نداشته باشه
مثلا برای ایجاد Query نام Query رو با نام کاربر And کرد .
اگر روش دیگه ای به فکرم رسید اطلاع میدم .
کسی نظری نداره؟

dadsara
یک شنبه 08 دی 1387, 14:02 عصر
سلام
من دقيقا همان كد را داخل فرم 2 نوشتم ولي با خطاي كامپايل موجه مي شوم

شاپرک
یک شنبه 08 دی 1387, 14:33 عصر
وقتی Option Explicit رو در ابتدای کد قرار میدید یعنی باید تمامی متغیر ها قبل از استفاده تعریف بشن .
میتونید این خط رو Option Explicit پاک کنید یا این خط Dim QueryDef رو قبل از استفاده از QueryDef اضافه کنید.

dadsara
دوشنبه 09 دی 1387, 07:44 صبح
وقتی Option Explicit رو در ابتدای کد قرار میدید یعنی باید تمامی متغیر ها قبل از استفاده تعریف بشن .
میتونید این خط رو Option Explicit پاک کنید یا این خط Dim QueryDef رو قبل از استفاده از QueryDef اضافه کنید.
سلام
ضمن تشكر مجدد از جنابعالي
من اصلاحاتي را كه جنابعالي فرموديد انجام دادم و مشكلم حل شد دست شما درد نكند
- آيا امكان دارد بعد از مشاهده كوئري ،‌هنگام بسته شدن آن پيامي مبني بر اينكه آيا مي خواهيد آنرا ذخيره با نام (Save As)نمائيد؟ ظاهر شود

شاپرک
سه شنبه 10 دی 1387, 09:56 صبح
فکر نمیکنم ! چیزی به فکرم نمیرسه
به فرض که بشه ولی این کد رو کجا باید قرار داد ؟ چه Event ای و کجا ؟
خودتون میگید هنگام بسته شده کوئری !!!

میشه موقع باز شدن از کاربر پرسید که به چه حالتی میخواد Openکنه : در حالت acReadOnly یا acAdd یا acEdit