Open "LPT1" For Output As #1   
Print #1, Adodc2.Recordset.Fields(1);TAB(10);Adodc2.Recordset.Fields(2)
Close
用TAB()格开也不行,用spc()格也不行
都是根据前一字段中内容长短而使第二个字段打印位置变化

解决方案 »

  1.   


    这不是 VB 语言的问题,要根据具体的打印机设置制表符。例如:Oracle 打印机是以 8 个空格表示制表符;在 LQ-1600K 打印机则更为复杂:
    ==================================================
    设置/ 解除水平制表符
    ASCII 代码   ESC D n1...nk NUL
    十六进制代码 1B 44 n1...nk 00
    用途:最多可设置32 个水平制表符位置。
    表达式CHR$(27); "D";CHR$(n1);...CHR$(n32);CHR$(0);
    n= 1-255;k= 1-32
    其中:
    n1 到n32 指定制表符位置的字符列。NUL 是序列结束符。ESC
    D NUL 清除所有制表符。
    说明 n 值必须按升序排列,否则将被忽略。大于32 或超出右边界的
    制表符将被忽略。物理制表符位置是n 和当前单元宽度(1/ 跨度
    ) 的乘积,不包括双倍宽度。
    设置制表符后, HT 将模拟打印头移至下一个制表符位置。发送
    ESC @ 初始化打印机并重置制表符为每8 个字符列插入一个(
    默认设置)。
    在均匀模式下, 10 CPI 字符的大小决定制表符位置。
    =====================================================请查阅你的打印机手册。
      

  2.   

    我是这样解决的
    先为每个字段设一个固定长度,然后用len算出字段中字符的个数,再和固定长度比较后用空格补齐
    a=30
    b=len(Adodc2.Recordset.Fields(1))
    c=a-b
    str=Adodc2.Recordset.Fields(1)& space(c)
    然后再打印str