是不是被其它控件挡上了,代码贴出来看看。

解决方案 »

  1.   

    Option ExplicitSub myprintform(formname As Form, dbname As String, tablename As String, tbcaption As String, prifields() As String, prifieldscount As Integer, prifieldscp() As String, ofields() As String, ofieldscount As Integer, ofieldscp() As String)
    Dim length As Single
    Dim mydb As Database
    Dim MyTable As Recordset
    Dim buff As String, bufflen As Integer, delta As Integer, cofline As Integer
    Dim midpos(20) As Integer '记录字段内容的居中位置
    Dim leftpos(20) As Integer '居左位置
    Dim leftpoint As Integer
    Dim j As Integer, i As Integer
    Dim cpleft(20) As Integer
    Dim bufferlen As Integer
    Set mydb = OpenDatabase(App.Path & "\" & dbname)Set MyTable = mydb.OpenRecordset(tablename, dbOpenDynaset)With formname
     .FontName = "宋体"
     .FontSize = 20
     .FontBold = True
     .FontItalic = False
     .FontUnderline = False
     .Font.Strikethrough = False
    End With
     
     length = formname.TextWidth(tbcaption)
     If length >= formname.Width Then
     MsgBox "打印机纸张尺寸不够,请更换更宽的纸张!"
     Exit Sub
     End If '检查纸宽是否够打表头
    formname.CurrentX = formname.ScaleWidth / 2 - (formname.TextWidth(tbcaption)) / 2
    formname.CurrentY = 10
    formname.RightToLeft = False
    formname.Print tbcaption '打印表头
    formname.Print
      formname.CurrentX = 20
      formname.Print Date
     ' formname.Print
    Call drawline(formname)bufflen = 0
    For i = 1 To prifieldscount
       formname.FontSize = 9.4
       bufflen = bufflen + formname.TextWidth(prifieldscp(i) & "  ") + formname.TextWidth(MyTable.Fields(prifields(i))) + formname.TextWidth(Space(10))
       If bufferlen > formname.ScaleWidth Then
          formname.Print
       End If
       formname.Print prifieldscp(i) & "  " & MyTable.Fields(prifields(i)); Space(10);
      
    Next i
    formname.Print '打印主字段
    Call drawline(formname)buff = "" '计算辅助字段布局
    bufflen = 0
    formname.FontSize = 9.4
    cofline = 0
    For i = 1 To ofieldscount
      cofline = cofline + MyTable.Fields(ofields(i)).Size
    Next i
    bufflen = formname.TextWidth("p") * coflinedelta = (formname.ScaleWidth - bufflen) / (ofieldscount + 1) '计算辅助字段之间的空间(等间距)
    '定位辅助字段
    leftpoint = formname.ScaleWidthFor i = ofieldscount To 1 Step -1
       leftpoint = leftpoint - delta - formname.TextWidth("p") * MyTable.Fields(ofields(i)).Size
       leftpos(i) = leftpoint
    Next i '计算辅助字段内容坐上角点的横坐标
    '''''''''''''''''''''''''''''''''''''''''''''''
    'For i = 1 To ofieldscount
     '  midpos(i) = leftpos(i) + formname.TextWidth("p") * mytable.Fields(ofields(i)).Size / 2
      ' cpleft(i) = midpos(i) - formname.TextWidth(ofieldscp(i)) / 2
    'Next i '计算辅助字段标题左端坐标
    '''''''''''''''''''''''''''''''''''''''字段标题与字段内容左对齐,故取消计算
    formname.FontUnderline = True
    For i = 1 To ofieldscount
       formname.CurrentX = leftpos(i)
       formname.Print ofieldscp(i);
    Next i
    formname.Print '打印辅助字段formname.FontUnderline = False
    If MyTable.EOF <> True And MyTable.BOF <> True Then
    MyTable.MoveFirst
    End IfDo While MyTable.EOF <> True
    For i = 1 To ofieldscount
       formname.CurrentX = leftpos(i)
       formname.Print MyTable.Fields(ofields(i));
    Next i
    formname.Print '打印字段内容
    MyTable.MoveNext
    LoopMyTable.Close
    mydb.Close
    '''试验
    formname.Print "fuck you"
    '''formname.Show
    End Sub
    Sub drawline(formname As Form)
    Dim buff As String, bufflen As Integer, i As Integer
      buff = "-"
    bufflen = formname.ScaleWidth / formname.TextWidth(buff)
    For i = 1 To bufflen
       buff = buff & "-"
    Next i
    formname.Print buff
    'formname.Print '划线
    End Sub窗体上没有放任何控件
      

  2.   

    你的代码我试过了,可以打印出来的,问题应该出在数据库上,检查一下你的数据库。
      

  3.   

    我來參觀學習
    我來參觀學習
      

  4.   

    我來參觀學習
    我來參觀學習