문제

연속 양식을 만들려고 노력하고 있으려고 노력하고 있으려고하고 있습니다.이는 2 ~ 3 개의 레코드만이 많은 빈 공간이있는 양식을 사용하지 않도록하는 것입니다.반대로 페이지 당 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 ... then ... else 문을 무시하고 하나의 창에서 모든 레코드를 보여주는 양식을 만듭니다. 관리가 불가능합니다.

그것은 11 개 미만의 기록 (분명히)의 한 형태로 작동하지만, 나는 높이를 더해야한다는 것을 알게된다. 그렇지 않으면 추가 레코드의 마지막 레코드를 두 번째 페이지에 놓습니다.Viz :

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

나는 이것을 가지고 살 수 있지만, 나는 그 문제를 해결하고 싶습니다 ... 그때 ... else 문은 무시됩니다.

I 형 캐스팅을 변형시키고 두 배로 변경했지만 이는 차이가 없었습니다.

도움이 되었습니까?

해결책

코드 문제가있는 것 같습니다. FrmHt 문에서 If를 사용하지만, 해당 지점에 값이 없으므로 항상 0가됩니다.

나는 당신이 당신의 진술이 같은 것을 원한다고 생각합니다 :

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

다음 페이지에 마지막 레코드가있는 다른 문제는 화면에 10 개의 레코드를 표시하고 픽셀로 변환하는 동안의 변환 중 너무 빡빡하기 때문에 반올림 오류는 총 높이가 작은 비트가 미도의 높이를 줄일 수 있기 때문일 수 있습니다.10 개의 기록에는 무엇이 필요할 것입니다.
FrmHT에 대한 몇 가지 치기를 추가 하여이 작업이 작동하는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top