以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]关于数据置换的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97292)

--  作者:rophy0952
--  发布时间:2017/3/9 12:25:00
--  [求助]关于数据置换的问题
图片点击可在新窗口打开查看
如图,想在打印控件内加入一段代码,目的是想在打印之前置换红框内表格控件中“送货明细表”中其中一列的内容,置换后不保存。
dim s as string = forms("包装顺序"). controls("号码").value
tables("送货明细表").replace("tables("送货明细表").current("箱号").split("-")(0)","ZY&Format(Date.Today(),"yyyyMMdd")&"-"&"s"")


如:将送货明细表所列的“箱号”列的数据:SC160212-1替换成 ZY20170309-01-1
                   SC160212-2替换成 ZY20170309-01-2
                   SC160212-3替换成 ZY20170309-01-3

所替换的数据仅为打印时替换,不保存在数据库中,以上代码有些问题,麻烦大侠们指教!

--  作者:有点色
--  发布时间:2017/3/9 12:53:00
--  

Dim s As String = forms("包装顺序").controls("号码").value
Dim t As Table = Tables("送货明细表")
If t.cols.Contains("临时列") = False Then
    t.DataTable.DataCols.add("临时列", Gettype(String), 32)
    t.cols("临时列").Move(t.cols("箱号").index)
End If
t.cols("箱号").visible = False
For Each r As Row In t.rows
    Dim ary() As String = r("箱号").split("-")
    If ary.length > 1 Then
        r("临时列") = format(Date.Today, "yyyyMMdd") & "-" & s & "-" & ary(1)
    Else
        r("临时列") = format(Date.Today, "yyyyMMdd") & "-" & s
    End If
Next

 

\'这里写打印代码


t.cols("临时列").visible = False
t.cols("箱号").visible = True

[此贴子已经被作者于2017/3/9 12:53:48编辑过]

--  作者:rophy0952
--  发布时间:2017/3/9 13:56:00
--  
多谢有点色!图片点击可在新窗口打开查看 基本上能实现我的需求,但是有两个问题:1. 点击一次打印临时列可以替换“箱号”列,当换下一张进行打印的时候,那临时列和“箱号”列都不出现了,无法连续打印 2. 设置临时列的列宽的代码是什么?谢谢!
如图:
没打印之前的图(原表的内容):
图片点击可在新窗口打开查看

进入系统后第一次打印的图(成功替换了):
图片点击可在新窗口打开查看

换张单据再打印时的图(两列都消失了):
图片点击可在新窗口打开查看

--  作者:有点色
--  发布时间:2017/3/9 14:33:00
--  

改一改

 

Dim s As String = forms("包装顺序").controls("号码").value
Dim t As Table = Tables("送货明细表")
If t.cols.Contains("临时列") = False Then
    t.DataTable.DataCols.add("临时列", Gettype(String), 32)
    t.cols("临时列").Move(t.cols("箱号").index)
End If

t.cols("临时列").visible = True
t.cols("箱号").visible = False


For Each r As Row In t.rows
    Dim ary() As String = r("箱号").split("-")
    If ary.length > 1 Then
        r("临时列") = format(Date.Today, "yyyyMMdd") & "-" & s & "-" & ary(1)
    Else
        r("临时列") = format(Date.Today, "yyyyMMdd") & "-" & s
    End If
Next

 

\'这里写打印代码


t.cols("临时列").visible = False
t.cols("箱号").visible = True


--  作者:rophy0952
--  发布时间:2017/3/9 14:47:00
--  
现在可以连续打印了,请问临时列的列宽如何调节呢?
--  作者:有点色
--  发布时间:2017/3/9 14:50:00
--  

 

t.cols("临时列").width = t.cols("箱号").width

 


--  作者:rophy0952
--  发布时间:2017/3/9 15:19:00
--  
试过,由于“箱号”列的宽度比替换后生成的字符要要窄,所以请问能否直接设置临时列的宽度呢?
--  作者:有点色
--  发布时间:2017/3/9 15:23:00
--  

你就不能灵活控制?

 

t.cols("临时列").width = 500