PDA

View Full Version : كدي جهت ساخت كويري از گزارش



انگوران
پنج شنبه 08 مهر 1389, 09:27 صبح
دوستان سلام - دنبال كدي مي گردم كه از محيط SQL پشت گزارش يك كويري درست كنه .
يعني همون كاري رو انجام بده كه زماني كه در قسمت خصوصيت گزارش روي علامت سه نقطه جلوي گزينه record source كليك ميكنيم وارد محيط SQL شده و با انتخاب sva as از منوي file مي تونيم كويري رو با نام دلخواه ذخيره كتيم . با سپاس

alirezabahrami
پنج شنبه 08 مهر 1389, 12:34 عصر
دوستان سلام - دنبال كدي مي گردم كه از محيط SQL پشت گزارش يك كويري درست كنه .
يعني همون كاري رو انجام بده كه زماني كه در قسمت خصوصيت گزارش روي علامت سه نقطه جلوي گزينه record source كليك ميكنيم وارد محيط SQL شده و با انتخاب sva as از منوي file مي تونيم كويري رو با نام دلخواه ذخيره كتيم . با سپاس
سلام جناب انگوران!
اگر ممكنه قدري بيشتر توضيح بده
اگر با ارائه نمونه بفرمائيد دقيقاً چكار مي خواهيد بكنيد انشاءالله سريعتر به جواب خواهيد رسيد.

با تشكر

انگوران
پنج شنبه 08 مهر 1389, 12:43 عصر
ضمن تشكر از استاد مسلم جناب آقاي بهرامي عزيز ، معروض ميدارم زماني كه در خصوصيت گزارش روي علامت سه نقطه جلوي گزينه record source كليك ميكنيم وارد محيط SQL گزارش مي شويم و اگر گزينه sva as را از منوي file انتخاب كنيم يك كادر باز ميشه كه مي تونيم از اين طريق اقدام به ساخت يك كويري بكنيم . حالا مي خوام ساخت كويري محيط SQL پشت گزارش از طريق كدنويسي انجام بشه يعني يك كويري از سورس گزارش بسازم . با سپاس مجدد
اميدورام اين بار مبهم بيان نكرده باشم .

alirezabahrami
پنج شنبه 08 مهر 1389, 13:24 عصر
ضمن تشكر از استاد مسلم جناب آقاي بهرامي عزيز ، معروض ميدارم زماني كه در خصوصيت گزارش روي علامت سه نقطه جلوي گزينه record source كليك ميكنيم وارد محيط SQL گزارش مي شويم و اگر گزينه sva as را از منوي file انتخاب كنيم يك كادر باز ميشه كه مي تونيم از اين طريق اقدام به ساخت يك كويري بكنيم . حالا مي خوام ساخت كويري محيط SQL پشت گزارش از طريق كدنويسي انجام بشه يعني يك كويري از سورس گزارش بسازم . با سپاس مجدد
اميدورام اين بار مبهم بيان نكرده باشم .
با سلام مجدد
الآن در محل كارم هستم و در حال رفتن به جائي هستم و يه مقداري عجله دارم ؛ انشاءالله در منزل روي اين موضوع كار مي كنم و
علي الحساب دو تصوير ضميمه را ملاحظه بفرما ! در مورد آنها سؤال دارم.
موفق باشيد

alirezabahrami
پنج شنبه 08 مهر 1389, 15:21 عصر
با سلام مجدد خدمت جناب انگوران عزيز


زماني كه در خصوصيت گزارش روي علامت سه نقطه جلوي گزينه record source كليك ميكنيم وارد محيط SQL گزارش مي شويم و اگر گزينه sva as را از منوي file انتخاب كنيم يك كادر باز ميشه كه مي تونيم از اين طريق اقدام به ساخت يك كويري بكنيم .

1- آيا منظور شما همان كادري است كه در تصوير شماره 2 نشان داده شده ؟



حالا مي خوام ساخت كويري محيط SQL پشت گزارش از طريق كدنويسي انجام بشه يعني يك كويري از سورس گزارش بسازم

2 - در سورس گزارشت آيا نام جدولي و يا يك كوئري درج شده يا بجاي اين دو از كد اسكيوال استفاده شده ؟
3- به فرض كه در سورس گزارش كد اسكيوال درج شده باشد ؛ آيا ميخواهيد يك كوئري جديد در حالت edit باز شود و كدهاي فوق در قسمت (كادر) SQL Statment وارد كنيد و سپس آن را با نام يك كوئري جديد ذخيره كنيد ؟
4-هدف از اين كار چيه ؟
التماس دعا

انگوران
شنبه 10 مهر 1389, 08:19 صبح
با سلام و سپاس - پاسخ سؤال اول كادري است كه در عكس نشون داده شده و پاسخ سؤال دوم مبناي گزارش كد اسكيوال هست و در پاسخ سؤال سوم بايد عرض كنم مي خوام كويري در حالت ديزاين باز بشه و پاسخ سؤال چهارم هم اينه كه در تاپيك قبلي اگه ملاحظه كرده باشين يك فرم گزارش ساز درست كردم كه اسامي جداول و كويري رو نشون ميده و از فيلدهاي انتخابي هر جدول يا كويري خروجي اكسل مي گيرم . حالا قصدم اينه كه اقدام به ساخت كويري نكنم و از كويري پس زمينه گزارشات با كد خروجي اكسل بگيرم . با سپاس مجدد

alirezabahrami
شنبه 10 مهر 1389, 13:51 عصر
با سلام و سپاس - پاسخ سؤال اول كادري است كه در عكس نشون داده شده و پاسخ سؤال دوم مبناي گزارش كد اسكيوال هست و در پاسخ سؤال سوم بايد عرض كنم مي خوام كويري در حالت ديزاين باز بشه و پاسخ سؤال چهارم هم اينه كه در تاپيك قبلي اگه ملاحظه كرده باشين يك فرم گزارش ساز درست كردم كه اسامي جداول و كويري رو نشون ميده و از فيلدهاي انتخابي هر جدول يا كويري خروجي اكسل مي گيرم . حالا قصدم اينه كه اقدام به ساخت كويري نكنم و از كويري پس زمينه گزارشات با كد خروجي اكسل بگيرم . با سپاس مجدد
سلام به دوست بزرگوارم جناب انگوران عزيز!
بنده در نمونه ارائه شده مراحل زير را انجام داده ام ؛ فكر مي كنم در مراحل بعدي به عملي نمودن خواسته جنابعالي برسم (انشاءالله )
مرحله اول:كد اسكيوال زير را در RecordSource گزارش R1 قرار دادم
مرحله دوم :يك كوئري ساختم كه كد اسكيوال آن با كد اسكيوال درج شده در در RecordSource گزارش R1 فرق مي كند
مرحله سوم:در رويداد كليك كمند باتن فرم كد هاي زير را وارد كردم :


Dim MyDatabase As Database
Dim MyQueryDef As QueryDef
Dim SQL As String
Set MyDatabase = CurrentDb()
Set MyQueryDef = MyDatabase.QueryDefs("Query1")
DoCmd.OpenReport "R1", acViewPreview, "", "", acHidden
SQL = Reports![R1].RecordSource
DoCmd.Close acReport, "R1"
MyQueryDef.SQL = SQL
MyQueryDef.Close

در خصوص كدهاي فوق بايد عرض كنم كه بنده ابتدا گزارش را در حالت مخفي باز نموده و كد اسكيوال درج شده در در RecordSource آن را مساوي متغير رشته ايSQL قرار دادم سپس اقدام به بستن گزارش نمودم بعد هم كد اسكيوال كوئري را مساوي متغير SQL و در نهايت كوئري را بسته ام
ارادتمند شما : بهرامي

alirezabahrami
یک شنبه 11 مهر 1389, 08:35 صبح
سلام به دوست بزرگوارم جناب انگوران عزيز!
بنده در نمونه ارائه شده مراحل زير را انجام داده ام ؛ فكر مي كنم در مراحل بعدي به عملي نمودن خواسته جنابعالي برسم (انشاءالله )
مرحله اول:كد اسكيوال زير را در RecordSource گزارش R1 قرار دادم
مرحله دوم :يك كوئري ساختم كه كد اسكيوال آن با كد اسكيوال درج شده در در RecordSource گزارش R1 فرق مي كند
مرحله سوم:در رويداد كليك كمند باتن فرم كد هاي زير را وارد كردم :


Dim MyDatabase As Database
Dim MyQueryDef As QueryDef
Dim SQL As String
Set MyDatabase = CurrentDb()
Set MyQueryDef = MyDatabase.QueryDefs("Query1")
DoCmd.OpenReport "R1", acViewPreview, "", "", acHidden
SQL = Reports![R1].RecordSource
DoCmd.Close acReport, "R1"
MyQueryDef.SQL = SQL
MyQueryDef.Close

در خصوص كدهاي فوق بايد عرض كنم كه بنده ابتدا گزارش را در حالت مخفي باز نموده و كد اسكيوال درج شده در در RecordSource آن را مساوي متغير رشته ايSQL قرار دادم سپس اقدام به بستن گزارش نمودم بعد هم كد اسكيوال كوئري را مساوي متغير SQL و در نهايت كوئري را بسته ام
ارادتمند شما : بهرامي
سلام جناب انگوران!
آيا جواب داده شده قانع كننده بود ؟ چنانچه ابهامي وجود دارد اعلام بفرما تا انشاءالله برطرف گردد .
موفق باشيد

انگوران
یک شنبه 11 مهر 1389, 09:10 صبح
دوست عزيز ، تقريباً به جواب مورد نظر رسيدم ولي منظورم اين بود كه با فرض اينكه كويري وجود ندارد از گزارش كويري بسازم كه قصدم اينه فايل مورد نظر رو پيوست كنم انشاءالله با عنايت حضرتعالي تكميل ميشه . با سپاس

alirezabahrami
یک شنبه 11 مهر 1389, 10:15 صبح
دوست عزيز ، تقريباً به جواب مورد نظر رسيدم ولي منظورم اين بود كه با فرض اينكه كويري وجود ندارد از گزارش كويري بسازم كه قصدم اينه فايل مورد نظر رو پيوست كنم انشاءالله با عنايت حضرتعالي تكميل ميشه . با سپاس
سلام
ميتوان با كد اقدام به ساخت يك كوئري جديد نمود ولي اين كار يك مقداري پيچيده است . بنظرم بهتر است اگر به فرض هم در برنامه ات هيچ كوئري نيست يك كوئري ساده حتي با يك فيلد ايجاد بكنيد و از كوئري فوق يك كپي تهيه و كد هاي اسكيوال ركورد سورس گزارش را در آن وارد كنيد .
به كد زير عنايت بفرما ! اين كد از كوئري ساخته شده قبلي شما تحت عنوانquery1 يك كپي گرفته و آن را با عنوان جديد NewQuery ايجاد مي كند.


DoCmd.CopyObject "", "NewQuery", acQuery, "Query1"

و در كد


Set MyQueryDef = MyDatabase.QueryDefs("NewQuery")


عنوان query1 را به NewQuery تغيير بده
در نمونه قبل اين كد را قبل از كد Set MyDatabase = CurrentDb() وارد كن!
موفق باشيد

انگوران
یک شنبه 11 مهر 1389, 10:45 صبح
جناب بهرامي عزيز ضمن تشكر از توضيحات جنابعالي و وقتي كه گذاشتين فايل مورد نظر رو پيوست كردم در صورت امكان عنايت كنين و فايل پيوست رو تكميل كنين با اين توضيح كه :
1- زحمت اصلي تكميل فايل پيوست رو كاربر محترم جعفر88 كشيدن
2- با انتخاب گزينه هاي فريم ، اشياء مربوطه در ليست باكس نمايش داده بشن .
3- مهمتر از همه اينكه پس از نمايش اسامي گزارشات و انتخاب يك گزارش از سورس گزارش يك كويري درست بشه و پس از انتخاب فيلدهاي مورد نظر خروجي دلخواه ايجاد بشه .

جعفر88
شنبه 24 مهر 1389, 15:58 عصر
دوست عزيز جناب انگوران سلام
ببخشين از اينكه دير پيام شما رو ديدم ولي با توجه به توضيحاتي كه دادين در مورد بند سوم درخواست شما همان طوري كه آقاي بهرامي فرمودن مي توان با ايجاد گزارش به راحتي پرس و جوي مورد نظر رو هم ايجاد كرد به عنوان مثال در اين نمونه (http://www.barnamenevis.org/forum/showpost.php?p=929016&postcount=13) فايل ، منبع گزارشها از يه پرس و جويي قبلا ايجاد شده (كه مي تونين درصورت عدم وجود با كد هم ايجادش كنين و در صورت موجود بودن پرس و جو در بانك فقط ازش استفاده كنين) دريافت ميشه ولي براي ارسال اطلاعات دلخواه به اكسل به نظرم تو همان فرم قبلي مي تونين به راحتي اين كارو انجام بدين .

انگوران
شنبه 24 مهر 1389, 19:27 عصر
دوست عزيز ضمن تشكر خودم هم دارم رو فايل خودم كار ميكنم و اگه نتيجه گرفتم فايلش رو اينجا ميذارم . اگه شما هم وقت كردين رو فايل من كار كنين ممنون ميشم . با سپاس

انگوران
پنج شنبه 18 آذر 1389, 13:09 عصر
همانطوري كه قول داده بودم فايل آماده شده و براي دوستان ميذارم ولي يه باگ داره و اونم اينه كه اگه گزارش و يا كويري پارامتر داشته باشه ارور ميده كه باز دست اساتيد رو مي بوسه .