문제
연속 양식을 만들려고 노력하고 있으려고 노력하고 있으려고하고 있습니다.이는 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
에 대한 몇 가지 치기를 추가 하여이 작업이 작동하는지 확인하십시오.