Question

Je suis en train de faire un formulaire continu de régler sa hauteur égale à la hauteur de l'en-Tête + la hauteur de Pied de page + hauteur du Détail.C'est pour éviter d'avoir un formulaire avec seulement deux ou trois enregistrements ont une grande quantité d'espace vide.A l'inverse, je veux avoir un grand nombre de l'affichage des enregistrements dans un formulaire avec 10 enregistrements par page et la flèche Haut/Bas pour voir le reste des enregistrements.Voici les procédures à suivre j'ai mis en place:

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

Il ignore le if...then... Else et crée un formulaire indiquant tous les dossiers dans une fenêtre ce qui est ingérable.

Il travaille pour un formulaire de moins de 11 dossiers (évidemment), mais je trouve que j'ai à ajouter à la hauteur d'un enregistrement supplémentaire sinon il met le dernier enregistrement sur une deuxième page.À savoir:

FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet

Je peux vivre avec cela, mais j'aimerais vraiment résoudre le problème de l'if...then...Else être ignoré.

J'ai changé le type coulée de Variante et Double, mais cela ne faisait aucune différence.

Était-ce utile?

La solution

Il semble y avoir un problème dans votre code:vous utilisez FrmHt dans votre If déclaration, mais il n'a pas de valeur à ce point, il sera toujours 0.

Je pense que probablement, vous voulez que votre déclaration soit quelque chose comme:

If NumRecs > 11 Then
    FrmHt = 11 * FrmDet + FrmHdr + FrmFtr
Else
    FrmHt = (NumRecs * FrmDet) + FrmHdr + FrmFtr + FrmDet
End If

L'autre problème du dernier enregistrement sur la page suivante peut être parce que vous êtes trop serré à l'affichage de l'10 enregistrements sur l'écran et lors de la conversion de twips en pixels des erreurs d'arrondi peuvent faire de la hauteur totale d'un tout petit peu moins que ce qui serait nécessaire pour les 10 enregistrements.
Essayez d'ajouter un peu de twips à votre FrmHT résultat pour voir si cela fonctionne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top