قم بعمل نموذج مستمر وضبط ارتفاعه تلقائيًا
-
21-12-2019 - |
سؤال
أحاول أن أجعل نموذجًا مستمرًا يضبط ارتفاعه ليكون مساويًا لارتفاع الرأس + ارتفاع التذييل + ارتفاع التفاصيل.وذلك لتجنب وجود نموذج يحتوي على سجلين أو ثلاثة سجلات تحتوي على مساحة كبيرة من المساحة الفارغة.على العكس من ذلك، أرغب في ظهور عدد كبير من السجلات في نموذج يحتوي على 10 سجلات في كل صفحة والسهم لأسفل/لأعلى لرؤية بقية السجلات.هذه هي الإجراءات التي قمت بإعدادها:
Public Function NumRecs() As Integer
NumRecs = DCount("*", "tblDisclosure", "Not IsNull(FormSentOff) and IsNull(DBSInvoice))
End Function
Public Function FrmHt() As Integer
Dim FrmDet As Integer
Dim FrmHdr As Integer
Dim FrmFtr As Integer
FrmDet = Form.Section(0).Height
FrmHdr = Form.Section(1).Height
FrmFtr = Form.Section(2).Height
If FrmHt > (11 * FrmDet + FrmHdr + FrmFtr) Then
FrmHt = 11 * FrmDet + FrmHdr + FrmFtr
Else
FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
End If
End Function
Private Sub Form_Load()
Me.Move Left:=8000, Top:=1000, Width:=9240, Height:=FrmHt
End Sub
إنه يتجاهل IF ... ثم ... آخر بيان ويقوم بإنشاء نموذج يوضح جميع السجلات في نافذة واحدة لا يمكن إدارتها.
إنه يعمل مع شكل أقل من 11 سجلًا (من الواضح) ، لكنني أجد أنه يجب علي إضافة ارتفاع سجل إضافي وإلا فإنه يضع السجل الأخير في صفحة ثانية.بمعنى:
FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
يمكنني أن أتعايش مع هذا ولكنني أرغب حقًا في حل مشكلة تجاهل عبارة If...Then...Else.
لقد قمت بتغيير نوع الصب إلى Variant وDouble ولكن هذا لم يحدث أي فرق.
المحلول
يبدو أن هناك مشكلة في الكود الخاص بك:انت تستخدم FrmHt
في الخاص بك If
البيان، ولكن ليس له قيمة في تلك المرحلة، وسوف يكون دائما 0
.
أعتقد أنك ربما تريد أن يكون بيانك شيئًا مثل:
If NumRecs > 11 Then
FrmHt = 11 * FrmDet + FrmHdr + FrmFtr
Else
FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
End If
قد تكون المشكلة الأخرى المتعلقة بالسجل الأخير في الصفحة التالية هي أنك متشدد للغاية في عرض السجلات العشرة على الشاشة وأثناء التحويل من الضربات إلى أخطاء تقريب البكسل قد تجعل الارتفاع الإجمالي أقل قليلاً مما سيكون عليه اللازمة لمدة 10 السجلات.
حاول إضافة بضع نقرات إلى الخاص بك FrmHT
النتيجة لمعرفة ما إذا كان هذا يعمل.