以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  获取列宽BUG?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=27339)

--  作者:outes
--  发布时间:2012/12/28 22:30:00
--  获取列宽BUG?

目的:想获取列标题和列宽(因为我MS SQL数据库表的列名是英文的,有张表记录列名中英文对照)

 

Dim cvs As String =CurrentTable.GetColVisibleWidth()

第一列|98|第二列|98|第三列|98|第四列|98|第五列|98|第六列|98|第七列|98|第八列|98|第九列|98|第十列|98

可以正常获取到,不过GetColVisibleWidth()获取到的是列名(不是列标题)和列宽

 

所以我想这样去获取

Dim lk As String
Dim dn As String =CurrentTable.name
For i As Integer = 0 To Tables(dn).Cols.Count - 1
    lk=lk & Tables(dn).Cols(i).Caption & "|" &  Tables(dn).Cols(i).Width & "|"
Next
output.show(lk)

a|-1|第二列|-1|第三列|-1|第四列|-1|第五列|-1|第六列|-1|第七列|-1|第八列|-1|第九列|-1|第十列|-1|

列宽全是-1,求解


--  作者:outes
--  发布时间:2012/12/28 22:33:00
--  

再试,发现调整过的列可以获取到,没动过的就是-1

a|64|第二列|83|第三列|81|第四列|119|第五列|100|第六列|-1|第七列|-1|第八列|-1|第九列|-1|第十列|-1|


--  作者:outes
--  发布时间:2012/12/28 23:07:00
--  

Dim cvs As String =CurrentTable.GetColVisibleWidth()
Dim dn As String =CurrentTable.Name
Tables("字段对应").Filter="[TN]=\'" & dn & "\'"
For Each R As Row In Tables("字段对应")
    CVS=CVS.Replace(R("英文"),R("中文"))
Next

 

总算是曲线解决了

不过还是请狐爸关注一下,为什么获取到是-1

窗口中用SQLTABLE表然后设置列宽(本次更新刚加上的功能),碰到这个问题,绕了一圈还是这个,

影响倒是不太,好改下次就更新一下方便用户


--  作者:lin_hailun
--  发布时间:2012/12/29 9:26:00
--  
 如果列宽是-1的话,就用Tables().DefaultColWidth替换吧。

 -1指的是没有修改过列宽度的标志。