قم بعمل نموذج مستمر وضبط ارتفاعه تلقائيًا

StackOverflow https://stackoverflow.com//questions/25045069

  •  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 النتيجة لمعرفة ما إذا كان هذا يعمل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top