Lamyaa قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 السلام عليكم ورحمة الله وبركاته كيف أجعل اسم التقرير متغير (الملون بالأحمر) كيف استخدم المتغير strReportName بدلا عن اسم التقرير "ct17R2" Dim strReportName As String strReportName = Me.ReportName ' فتح التقرير DoCmd.OpenReport strReportName, acViewReport ' تغيير مصدر التقرير برمجيا Reports![ct17R2].Report.RecordSource = "qryStudents"
متقاعد قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 (معدل) السؤال مبهم قليلا ولكن وفق فهمي للسؤال لديك تقرير اذا فتح التقرير من نموذج ا يكون اسم التقرير تقرير 1 مثلا ومصدر بياناته الجدول aa واذا فتحناه من نموذج ب يكون اسم التقرير تقرير 2 ومصدره استعلام 1 مثلا اذا كان فهمي صحيح ممكن استخدام البارامتر السادس في امر فتح التقرير حيث ان امر فتح يحتوي على سته معلمات بالترتيب ReportName View FilterName WhereCondition WindowMode OpenArgs والسادس هو مايهمنا والفكر ارسال قيمة محددة مع امر الفتح على سبيل المثال DoCmd.OpenReport "companies", acViewPreview, , , , 1 او هكذا DoCmd.OpenReport "companies", acViewPreview, OpenArgs:=1 وفي امر فتح للتقرير If Me.OpenArgs = 1 Then Me.Report.Caption = "test" Me.Report.RecordSource = "q_1" Else Me.Report.Caption = "kh" Me.Report.RecordSource = "companies" End If تم تعديل يونيو 26, 2022 بواسطه مبرمج سابق 4 1
Eng.Qassim قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 وعليكم السلام مشاركة مع اخي @مبرمج سابق وحسب فهمي ايضا .. استخدم الكود التالي لتنسب اسم التقرير للمتغير Reports(strReportName).Caption = "ct17R2" 1
متقاعد قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 والله ياعم قاسم انا فهمي على قدي 3 ساعات مضت, Lamyaa said: Dim strReportName As String strReportName = Me.ReportName اذا اردنا متغيير عام نضع الامر التالي في بداية اي وحدة نمطية Public x As String ثم في امر فتح نضع x = "اسم التقرير" DoCmd.OpenReport x, acViewPreview 1 1
Moosak قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 " إذا عُرِفَ السبب بطل العجب " أول ما تبادر لذهني بعد قرائتي للموضوع : ما الهدف من ذلك ؟ والجواب عن هذا السؤال هو ما سيفتح لنا باب الحل المناسب🙂 1 1
Eng.Qassim قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 2 ساعات مضت, مبرمج سابق said: والله ياعم قاسم انا فهمي على قدي ههههه والله انا فهمت هيك...على كل حال زيادة في المعلومات واثراء الموضوع 1
متقاعد قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 2 ساعات مضت, Eng.Qassim said: على كل حال زيادة في المعلومات واثراء الموضوع نعم احسنت اخي قاسم الحقيقة ان الموضوع فعلا يحتاج ايضاح كما اشار مستر @Moosak على كل حال كمداخلة اخيرة الى ان تتضح الامور للاخوة نحتاج احيان الى اعادة تسمية كائن في قاعدة البيانات سواء كان جدول او استعلام او فورم او تقرير او وحدة نمطية ونرغب ان يتم التغيير عن طريق الكود DoCmd.Rename "r_2", acReport, "companies" في هذا الامر لدينا ثلاث معلمات NewName هنا يساوي r_2 ObjectType وهو نوع الكائن و هنا تقرير " بعض قدامي المبرمجين بدلا من تحديد نوع الكائن يضع القيمة للكائن وهنا رقم 3 " OldName وهو اسم التقرير القديم companies تحياتي ولنا لقاء في موضوع اخر 1
Eng.Qassim قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 منذ ساعه, مبرمج سابق said: تحياتي ولنا لقاء في موضوع اخر خلينا بهذا الموضوع استاذ خالد ... بصراحة لا اعرف لماذا نلجأ الى تغيير اسم التقرير ؟
Lamyaa قام بنشر يونيو 26, 2022 الكاتب قام بنشر يونيو 26, 2022 8 ساعات مضت, مبرمج سابق said: السؤال مبهم قليلا ولكن وفق فهمي للسؤال لديك تقرير اذا فتح التقرير من نموذج ا يكون اسم التقرير تقرير 1 مثلا ومصدر بياناته الجدول aa واذا فتحناه من نموذج ب يكون اسم التقرير تقرير 2 ومصدره استعلام 1 مثلا اذا كان فهمي صحيح ممكن استخدام البارامتر السادس في امر فتح التقرير حيث ان امر فتح يحتوي على سته معلمات بالترتيب ReportName View FilterName WhereCondition WindowMode OpenArgs والسادس هو مايهمنا والفكر ارسال قيمة محددة مع امر الفتح على سبيل المثال DoCmd.OpenReport "companies", acViewPreview, , , , 1 او هكذا DoCmd.OpenReport "companies", acViewPreview, OpenArgs:=1 وفي امر فتح للتقرير If Me.OpenArgs = 1 Then Me.Report.Caption = "test" Me.Report.RecordSource = "q_1" Else Me.Report.Caption = "kh" Me.Report.RecordSource = "companies" End If أستاذي الفاضل جزيل الشكر والتقدير على تفاعلكم يبدو أنني لم أوفق في شرح المطلوب بشكل جيد يوجد لدي عدة تقارير : rptStudents, rptStudents3, rptStudents5, rptStudents6,... etc مصدر البيانات لهذه التقارير إما qryStudents1 أو qryStudents2 اسم التقرير المراد فتحه مكتوب في حقل نصي Me.txtReportName (يتك كتابة اسم التقرير آليا عند تغيير ComboBox) أقوم بفتح التقارير من نموذج من خلال الكود التالي: 'قمت بتعريف متغير لتخزين اسم التقرير فيه Dim strReportName As String strReportName = Me.txtReportName ' سأقوم بفتح التقرير بناء على الاسم الموجود في المتغير DoCmd.OpenReport strReportName, acViewReport ' والآن أريد أن أمرر مصدر البيانات للتقرير الذي تم تحديده (أي تقرير) وأن أجعل مصدره هو الاستعلام qryStudents1: Reports![ct17R2].Report.RecordSource = "qryStudents1" أي أنني سأحتاج تغيير اسم التقرير الذي لونته بالأحمر. وسأقوم بتطبيق الخطوات كلها في نموذج آخر frmStudents2 ولكن سيتغير مصر الاستعلام إلى استعلام آخر Reports![ct17R2].Report.RecordSource = "qryStudents2" آملأن أكون قد استطعت توضيح المطلوب 6 ساعات مضت, Eng.Qassim said: وعليكم السلام مشاركة مع اخي @مبرمج سابق وحسب فهمي ايضا .. استخدم الكود التالي لتنسب اسم التقرير للمتغير Reports(strReportName).Caption = "ct17R2" جزيل الشكر على تفاعلك لا أقصد تغيير عنوان التقرير إنما اسم التقرير قبل تغيير مصدره .. كما أشرت أنني ربما لم أوفق في شرح المطلوب وبينته في تعقيبي السابق .. 1
Lamyaa قام بنشر يونيو 26, 2022 الكاتب قام بنشر يونيو 26, 2022 منذ ساعه, مبرمج سابق said: نعم احسنت اخي قاسم الحقيقة ان الموضوع فعلا يحتاج ايضاح كما اشار مستر @Moosak على كل حال كمداخلة اخيرة الى ان تتضح الامور للاخوة نحتاج احيان الى اعادة تسمية كائن في قاعدة البيانات سواء كان جدول او استعلام او فورم او تقرير او وحدة نمطية ونرغب ان يتم التغيير عن طريق الكود DoCmd.Rename "r_2", acReport, "companies" في هذا الامر لدينا ثلاث معلمات NewName هنا يساوي r_2 ObjectType وهو نوع الكائن و هنا تقرير " بعض قدامي المبرمجين بدلا من تحديد نوع الكائن يضع القيمة للكائن وهنا رقم 3 " OldName وهو اسم التقرير القديم companies تحياتي ولنا لقاء في موضوع اخر فكرة تغيير اسم التقرير رائعة في حال كانت التقرير ذا تصميم واحد، ولكن في حالة كان التقرير مختلف فلن ينفع
Lamyaa قام بنشر يونيو 26, 2022 الكاتب قام بنشر يونيو 26, 2022 6 ساعات مضت, مبرمج سابق said: والله ياعم قاسم انا فهمي على قدي اذا اردنا متغيير عام نضع الامر التالي في بداية اي وحدة نمطية Public x As String ثم في امر فتح نضع x = "اسم التقرير" DoCmd.OpenReport x, acViewPreview الفكرة أستاذي ليست في جعل المتغير عاما أو خاصاً .. الفكرة كيف أمرر هذا المتغير على هذا السطر البرمجي: ففي الحالة العادية يتم كتابة اسم التقرير مباشرة Reports![rptStudents].Report.RecordSource = "qryStudents2" ولكن في حال كان اسم التقرير متغيير بناء على تغير المعطيات فكيف يمكن تمرير هذا المتغير على السطر التالي: Reports![X].Report.RecordSource = "qryStudents2"
ابو جودي قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 طيب ممكن تجربة المرفق الاتى لانه يبدو لى ان التقرير نريده ان يقتح على اكثر من مصدر بيانات حسب الحالة ان لم افهم الموضوع جيدا برجاء مرفق حتى اسطيع الفهم >>---> صعيدى بيفهم بالعافية Chang Record Sources Report.mdb 2 1
Eng.Qassim قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 12 دقائق مضت, ابو جودي said: صعيدى بيفهم بالعافية والصعايدة غالية علية 😂 يا سلاااام ...دة انا اموت في الصعايدة 2
ابو جودي قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 52 دقائق مضت, Lamyaa said: كما أشرت أنني ربما لم أوفق في شرح المطلوب وبينته في تعقيبي السابق .. انا اريد مرفقا انا لم افهم اى شئ 1
Barna قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 34 دقائق مضت, ابو جودي said: طيب ممكن تجربة المرفق الاتى لانه يبدو لى ان التقرير نريده ان يقتح على اكثر من مصدر بيانات حسب الحالة ان لم افهم الموضوع جيدا برجاء مرفق حتى اسطيع الفهم >>---> صعيدى بيفهم بالعافية ترى كلنا نحب الصعايدة والنعم فيهم .... اسمح لي استخدم مثالك بطريقة اخرى للفائدة واثراء الموضوع باستخدم هذا الكود .... Dim db As DAO.Database Dim qdf As DAO.QueryDef Dim strSQL1 As String, strSQL2 As String Set db = CurrentDb db.QueryDefs.Delete "qr1" If com1 = "التقرير الاول" Then strSQL1 = "SELECT tblA.ID, tblA.fld FROM tblA;" Set qdf = db.CreateQueryDef("qr1", strSQL1) ElseIf com1 = "التقرير الثاني" Then strSQL2 = "SELECT tblB.ID, tblB.fld FROM tblB;" Set qdf = db.CreateQueryDef("qr1", strSQL2) End If DoCmd.OpenReport "rptFlayReport", acViewPreview وهذا المثال ..... Chang Record Sources Report.mdb 3 1
ابو جودي قام بنشر يونيو 26, 2022 قام بنشر يونيو 26, 2022 منذ ساعه, Barna said: اثراء الموضوع باستخدم هذا الكود .... جزاكم الله خيرا استاذى الجليل ومعلمى القدير الاستاذ @Barna واسمح لى ممكن نختصر الكود ليكون Dim qdf As DAO.QueryDef Dim strSQL As String CurrentDb.QueryDefs.Delete "qr1" If com1 = "التقرير الاول" Then strSQL = "SELECT tblA.* FROM tblA;" ElseIf com1 = "التقرير الثاني" Then strSQL = "SELECT tblB.* FROM tblB;" End If Set qdf = CurrentDb.CreateQueryDef("qr1", strSQL) DoCmd.OpenReport "rptFlayReport", acViewPreview ولارد بضاعتكم اليكم بطريقة مختلفة بعض الشئ تجنبا لاستخدام الحروف العربية , واضفاء مرونة أكبر فى حال اردنا تمرير اسم التقرير من خلال الكود الافكار كثيرة وتتصارع وتتلاحق فى رأسي بسبب عدم فهمى الهدف والمطلوب تحقيقة بصورة مباشرة من السؤال بسبب غموض الهدف ولكن على حال تبقى الحاجة هى ام الاختراع وفهم السؤال هو شطر الجواب Chang Record Sources Report Barna V2.mdb 1 1
متقاعد قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 11 ساعات مضت, Eng.Qassim said: لينا بهذا الموضوع استاذ خالد ... بصراحة لا اعرف لماذا نلجأ الى تغيير اسم التقرير ؟ استاذي القدير قاسم الامر موجود ضمن اوامر فيجول بيسك وهو موجود بالصيغة الموضحة بالرد السابقة وايضا موجود ضمن اوامر RunCommand ولكن طريقة العمل تختلف الاول يغير الاسم مباشرة والاخر يحتاج الى "SelectObject" والفكرة تحديد الكائن و جعل الاسم قابل للتعديل اي انه اشبه ما يكون بتحديد جدول ثم النقر على f2 بلوحة المفاتيح . اما لماذا نلجأ لتغيير الاسم احيانا حدث معين يتطلب ذلك على كل حال بالنسبة للموضوع والحل المقدم من الاساتذة والذي يرتكز على حذف واعادة انشاء الاستعلام الا يؤدي الى زيادة حجم قاعدة البيانات على المدى البعيد حيث ان معلوماتي ان الاكسس لا يستعيد مساحة الكائن المحذوف الا بعد الضغط والاصلاح مع اعجابي بالفكرة تحياتي 1 1
متقاعد قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 (معدل) ماشي يا استاذة خلينا نتصور الامر حسب فهمي عندك 10 تقارير مبنية على استعلامين اثنين مثلا q_1 و q_2 وعندك فورمين اثنين كل فورم فية قائمة باسماء التقارير العشرة وعندك حقل نصي عند اختيار التقرير من القائمة يكتب اسمه في الحقل النصي وعند امر فتح التقرير يتم فتح التقرير المكتوب اسمه في الحقل النصي ويكون مصدر سجلاته الاستعلام q_1 طالما فتحناه من فورم 1 ويكون مصدرة q_2 اذا فتحناه من فورم2 اذا كان فهمي صحيح ممكنى عمل ذلك وبكود مختصر نحتاج الى متغير في بداية الاكواد اي يمكن استخدامه في كافة احداث النموذج Dim x As String في حدث بعد التحديث للقائمة نضع الامر التالي Me.tx2 = Me.c2.Column(0) x = Me.tx2 tx2 هو الحقل النصي co القائمة المنسدلة x هو المتغير في زر فتح التقرير نضع الامر التالي Dim strSQL As String strSQL = "q_1" DoCmd.OpenReport x, acViewPreview, , , , strSQL وفي النموذج الثاني نغير q_1 الى q_2 ثم نفتح التقارير في وضع التصميم وحدث فتح التقرير نضع الامر التالي Me.RecordSource = Me.OpenArgs واذا كنت لم افهم فاعتذر مقدما تحياتي تم تعديل يونيو 27, 2022 بواسطه مبرمج سابق 1 1
ابو جودي قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 3 ساعات مضت, مبرمج سابق said: عندك 10 تقارير مبنية على استعلامين اثنين مثلا q_1 و q_2 وعندك فورمين اثنين كل فورم فية قائمة باسماء التقارير العشرة وعندك حقل نصي عند اختيار التقرير من القائمة يكتب اسمه في الحقل النصي وعند امر فتح التقرير يتم فتح التقرير المكتوب اسمه في الحقل النصي ويكون مصدر سجلاته الاستعلام q_1 طالما فتحناه من فورم 1 ويكون مصدرة q_2 اذا فتحناه من فورم2 اذا كان فهمي صحيح ممكنى عمل ذلك وبكود مختصر نحتاج الى متغير في بداية الاكواد اي يمكن استخدامه في كافة احداث النموذج تسلم الايادى يا @مبرمج سابق يا عالم يا معقدين شايفين البساطة ما شاء الله 1
kanory قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 على العموم كل هذه توقعات منكم .. وشكرا الله لكم .... لكن تتوقف الاجابة على رد السائل او ارفاق مرفق واضح لما يريد فعله بالضبط .. 2 1
متقاعد قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 52 دقائق مضت, ابو جودي said: شايفين البساطة ما شاء الله هذا بعض مما لديك استاذ @ابو جودي 48 دقائق مضت, kanory said: على العموم كل هذه توقعات منكم .. وشكرا الله لكم صحيح كلامك استاذ العزيز @kanory تتوقف الاجابة على رد السائل او ارفاق مرفق واضح لما يريد فعله بالضبط مع ذلك اجدني ملزم بايضاح امر وهو ان مشاركاتي ليس الهدف منها تقديم دعم فني او معالجة مشكله في مرفق ولكن اجد استفسار معين ثم اضع رد لكيفية معالجة الامر من وجهة نظري وبابسط صورة ممكنه فان تم الاخذ به والا فليعتبر رفع للموضوع وفي احيان اخرى اجد استاذ قدير وضع حل احترافي يعجبني فاشارك بحل اخر وبابسط صورة ممكنه كاثراء للموضوع وليس بديلا للحل المحترف فالاساتذة في هذا الموقع اكبر من ان يعدل عملهم مبرمج سابق جل معلوماته قديمة وحلوله اكل الدهر عليها وشرب مع ذلك فان للعلم زكاة وزكاته بذله للناس وتعليمهم اياه اللهم اجعلنا واياكم ممن تعلم العلم وعلمه تحياتي وتقديري لك ولعل لنا لقاء في موضوع اخر 🌹 1 1
أفضل إجابة ابو جودي قام بنشر يونيو 27, 2022 أفضل إجابة قام بنشر يونيو 27, 2022 13 دقائق مضت, مبرمج سابق said: مبرمج سابق جل معلوماته قديمة وحلوله اكل الدهر عليها وشرب اولا بارك الله فى عمرك وعلمك وعملك وجزاكم كل خير ثانيا انا اقل طويلب علم ولست مبرمجا على الاطلاق مجرد هاو ثالثا كنت ابلور فكرة من الامس شبيه بفكرة حضرتك استخدمت الروتين الاتى فى وحدة نمطية Function OpenReport(ByRef rptName As String, ByRef qryName As String) On Error GoTo ErrorHandler DoCmd.OpenReport rptName, acViewPreview, , , , qryName procDone: Exit Function ErrorHandler: MsgBox$ Err.Number & ": " & Err.Description Resume procDone End Function على ان يتم استدعاءه بالسطر الاتى OpenReport("rpt2", "Query2") نفس فكرة حضرتك طبعا بسبب الغموض وعدم التوضيح الكافى كنت فى انتظار اضافة المرفق Chang Record Sources Report VBA(V3).mdb 1
متقاعد قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 53 دقائق مضت, ابو جودي said: اولا بارك الله فى عمرك وعلمك وعملك وجزاكم كل خير امين اللهم اجعلنا واياكم ممن طال عمره وحسن عمله 53 دقائق مضت, ابو جودي said: ثانيا انا اقل طويلب علم ولست مبرمجا على الاطلاق مجرد هاو اربعة ممن قادوا الثورة الرقميه ليسوا مبرمجين بل بعضهم لا يتعدى تاهيلة التعليم الثانوي المهم الرغبة والمثابرة والابتكار خلال عملي لاربعين عام صادفت مبرمجين لا يحسنوا كتابة سطر واحد والبعض عمله الفعلي تشتيت الاخرين وعمل معي مبرمج كان لنا المرجع اذا استغلق امر ومؤهله العلمي دبلوم محاسبة وحاليا مدير قاعدة بيانات لواحدة من اكبر المؤسسات في المنطقة 53 دقائق مضت, ابو جودي said: ثالثا كنت ابلور فكرة من الامس شبيه بفكرة حضرتك ماشاء الله تبارك الله متميز دائما يا محمد 🌹 تحياتي 1
Eng.Qassim قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 3 ساعات مضت, مبرمج سابق said: اربعة ممن قادوا الثورة الرقميه ليسوا مبرمجين بل بعضهم لا يتعدى تاهيلة التعليم الثانوي بصراحة استاذ خالد ..الاخوة المصريين يشهد لهم بالبنان في ذلك وانا بصراحة تعلمت منهم الكثير ...سواء في اختصاصي الهندس (المدني ) او في البرمجة ..اصحاب علم وخلق وجدية في ايصال المعلومة لن انسى فضل الاخوة السعوديين ...اصحاب كرم منقطع النظير ام الاخوة العمانيين ام السوريين ..ام ام ربي يحفظ امتنا الاسلامية والعربية 3
متقاعد قام بنشر يونيو 27, 2022 قام بنشر يونيو 27, 2022 45 دقائق مضت, Eng.Qassim said: بصراحة استاذ خالد ..الاخوة المصريين يشهد لهم بالبنان في ذلك الكل فيهم الخير والبركة وكلنا اخوة انا ايضا افتخر اني تتلمذت على يد معلمين من مصر والسودان والاردن وسوريا وفلسطين و مدرس واحد عراقي درسني النحو والصرف ومنه عرفت الجواهري والبياتي واحببت ناظم الغزالي اسمه استاذ هشام رجل خلوق قليل الكلام وان تحدث تتمنى الا يصمت الله يهديك ياقاسم كل ما اغلقت متصفحي عن هذا الموضوع وكتبت الى لقاء في موضوع اخر اعدتني اليه مره بسؤال ومرة بذكريات جميلة مع الاعتذار لصاحبة الموضوع عن الدخول في حوارات جانبية تحياتي 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.