moho58 قام بنشر منذ 23 ساعات قام بنشر منذ 23 ساعات السلام عليكم الإخوة الأفاضل في هذا المنتدى الجميل في هذا الموضوع أريد التحكم في ارتفاع الصفوف في تقرير انطلاقا من الاختيار من مربعات سرد وتحرير في نموذج مثال: لعرض التقرير : من النموذج frm_examen_fin_formation اختار: السنة: 2021/2020 الدرجة: معلم البلد: عمان لكن قبل عرض التقرير المسمى rap_pv يجب عمل مقارنة بين المعطيات المذكورة أعلاه ومقارنته في الجدول المسمىtab_hauteur_range في الجدول نجد مايلي: السنة: 2021/2020 الدرجة: معلم البلد: عمان ارتفاع الصف: 1سم اسم التقرير : rap_pv - المقارنة بين المعطيات المختارة من النموذج (السنة - الدرجة - البلد-اسم التقرير ) نبحث عنها في الجدول tab_hauteur_range والتي تكون متشابها يتم على أساسها تحديد ارتفاع صف التقرير و في هذا المثال بعد المقارنة ارتفاع صف التقرير هو 1 سم - وإذا اخترت من النموذج الاختيارات وعملت مقارنة ولم اجد ما يشابها في الجدول tab_hauteur_range اجعل ارتفاع صف التقرير تلقائا هو 0.7 بهذا المبدأ أريد التحكم في ارتفاع صف التقرير لانه لدي سنوات كثيرة ودرجات وبلدان وبهذه الكيفية اتحكم جيدا في التقارير في التقرير : rap_pv توجد احيانا حقول كثيرة وقد اختصرتها فقط نتمنى اني اوصلت الفكرة وان شاء الله يمكن تجسيدها الرجاء المساعدة والتوجيه وبارك الله فيكم baseM.accdb
Foksh قام بنشر منذ 17 ساعات قام بنشر منذ 17 ساعات (معدل) 7 ساعات مضت, moho58 said: السلام عليكم الإخوة الأفاضل في هذا المنتدى الجميل وعليكم السلام ورحمة الله وبركاته ,, كفكرة بسيطة ، في مديول جديد ، استعمل الدالة التالية :- Public Function GetTxtHeight(annee As String, grade As String, wilaya As String, nomRapport As String) As Single Dim db As DAO.Database Dim rs As DAO.Recordset Dim hauteur As Single Set db = CurrentDb Set rs = db.OpenRecordset( _ "SELECT hauteur_rang FROM tab_hauteur_range " & _ "WHERE annee = '" & annee & "' " & _ "AND grade = '" & grade & "' " & _ "AND wilaya = '" & wilaya & "' " & _ "AND nom_raport = '" & nomRapport & "'", dbOpenSnapshot) If Not rs.EOF Then hauteur = rs!hauteur_rang * 567 Else hauteur = 0.7 * 567 End If rs.Close: Set rs = Nothing: Set db = Nothing GetTxtHeight = hauteur End Function ثم في حدث الزر عند التقر لفتح التقرير :- Private Sub أمر2_Click() Dim h As Single Dim annee As String, grade As String, wilaya As String, rapport As String rapport = "rap_pv" annee = Me.annee grade = Me.grade1 wilaya = Me.wilaya1 h = GetTxtHeight(annee, grade, wilaya, rapport) TempVars!Temp_Hauteur = h DoCmd.OpenReport rapport, acViewPreview End Sub وفي حدث عند الفتح للتقرير :- Private Sub Report_Open(Cancel As Integer) Dim h As Single If Not IsNull(TempVars!Temp_Hauteur) Then h = TempVars!Temp_Hauteur Else h = 0.7 * 567 End If Me.nom.Height = h Me.prenom.Height = h End Sub مع ضرورة عدم تمكين لمربعي النص ( nom و prenom ) مع العلم ان الفكرة قابلة للتطوير بالتحكم بحجم الخط أيضاً 😉 الملف :- baseM.zip تم تعديل منذ 16 ساعات بواسطه Foksh إضافة ملاحظة تتعلق بحجم الخط
moho58 قام بنشر منذ 13 ساعات الكاتب قام بنشر منذ 13 ساعات تحية طيبة الأخ والأستاذ الكريم @Foksh مشكور جدا جدا على الرد والاهتمام بموضوعي بعد التجربة على تقارير ونماذج ، المبدأ العام للفكرة جيد جدا و تقريبا لبى المطلوب لو سمحت عندي بعض الملاحظات:(معذرة ربما لم أعرف كيف أوصل الفكرة جيدا من الأول) * فيما يخص التحكم في ارتفاع الصف يكون معه كذلك التحكم في ارتفاع التفصيل حتى لا تكون فراغات واضحة (غير محبدة) يعني ارتفاع الصف يكون بنفس ارتفاع التفصيل الصورة 1 * في الجدول tab_hauteur_range عند اضافة سطر (شروط جديدة) لا يأخذها بعين الاعتبار لاني لا حظت في الكود السابق يعمل مقارنة مع tab_hauteur_range في حالة وجود سطر واحد فقط وأنا أريد عدة أسطر كثيرة (يعني شروط جديدة) في tab_hauteur_range وعند الاختيار من النموذج تكون المقارنة مع الأسطر والمتشابهة تماما يكون ارتفاع صف التقرير وكذا التفصيل الصورة 2 * اخي في التقرير ممكن عندي حقول كثيرة ,انا اريد تطبيقة على عدة تقارير كثيرة طبقت الفكرة على جميع الحقول Me.nom.Height = h Me.prenom.Height = h هل فيه طريقة أكثر اختصار إن امكن لانها هذه تؤدي الوظيفة جيدا *********** شرح بسيط آخر: أنا عندي سنوات ودرجات و بلدان كثيرة مثلا السنة 2021 /2022 والدرجة: معلم البلد: عمان في التقرير يظهر لي 27 سطر - أصــــغر في ارتفاع الصف والتفصيل حتى تتسعهم صفحة واحدة فقط - - أطبع التقرير - بعد مدة طويلة لو أردت طباعته مرة ثانية يكون بنفس الشكل تماما (يعني عدد الصفحات) و أكرر نفس العملية : الاختيار من النموذج. (أعدل في ارتفاع الصف والتفصييل كما اشاء - ) أن شاء الله اكون قد شرحت جيدا جزاك الله خيرا أخي الكريم @Foksh وبارك الله فيك
Foksh قام بنشر منذ 12 ساعات قام بنشر منذ 12 ساعات ارفق ملف يحتوي أكثر من شرط أخي الكريم ، مع العلم ان ارتفاع جزء التفاصيل سيكون حسب ارتفاع المربعات النصية !!!!!!
moho58 قام بنشر منذ 4 ساعات الكاتب قام بنشر منذ 4 ساعات 6 ساعات مضت, Foksh said: ارفق ملف يحتوي أكثر من شرط أخي الكريم ، مع العلم ان ارتفاع جزء التفاصيل سيكون حسب ارتفاع المربعات النصية !!!!!! تحية طيبة متجددة الاختيارات ما اريده طباعته من النموذج فإذا أردت تقليص ارتفاع الصف وكذا التفصيل أسجل هذه الاختيارات في جدول tab_hauteur_range وأطبع لكي أتحفظ بنفس ارتفاع الصف لهذه الاختيارات عند الطباعة مرة أخرى بعد مدة مثلا. لقد أضفت ثلاثة اختيارات كمثال في tab_hauteur_range تفضل أخي الكريم @Foksh baseM1.accdb
Foksh قام بنشر منذ 1 ساعه قام بنشر منذ 1 ساعه أخي الكريم ، على حسب ما فهمت من كلامك ، انظر التعديلات التالية :- المديول :- Public Function GetTxtHeight(annee As String, grade As String, wilaya As String, ByRef rapport As String) As Single Dim db As DAO.Database Dim rs As DAO.Recordset Dim hauteur As Single Set db = CurrentDb Set rs = db.OpenRecordset( _ "SELECT hauteur_rang, nom_raport FROM tab_hauteur_range " & _ "WHERE annee = '" & Replace(Trim(annee), "'", "''") & "' " & _ "AND grade = '" & Replace(Trim(grade), "'", "''") & "' " & _ "AND wilaya = '" & Replace(Trim(wilaya), "'", "''") & "'", dbOpenSnapshot) If Not rs.EOF Then hauteur = Nz(rs!hauteur_rang, 0) * 567 rapport = Nz(rs!nom_raport, "") Else hauteur = 0.7 * 567 rapport = "" End If rs.Close: Set rs = Nothing: Set db = Nothing GetTxtHeight = hauteur End Function حدث الزر :- Private Sub أمر2_Click() Dim h As Single Dim rapport As String h = GetTxtHeight(Me.annet, Me.grade1, Me.wilaya1, rapport) TempVars!Temp_Hauteur = h If rapport <> "" Then DoCmd.OpenReport rapport, acViewPreview Else MsgBox ". لم يتم العثور على تقرير مطابق", vbInformation + vbMsgBoxRight, "" End If End Sub حدث فتح التقرير :- Private Sub Report_Open(Cancel As Integer) Dim h As Single Dim ctrl As Control h = Nz(TempVars!Temp_Hauteur, 0.7 * 567) For Each ctrl In Me.Controls If ctrl.ControlType = acTextBox Then If LCase(Trim(Nz(ctrl.Tag, ""))) = "moho58" Then ctrl.Height = h End If End If Next ctrl End Sub لاحظ اننا اعتمدنا على Tag = moho58 لمربعات النص التي نريد التنفيذ عليها ، دون الحاجة الى تحديد الأسماء بشكل يدوي .. الملف :- baseM.zip
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.