以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]为什么不能正常返回字符列的最大字符长度?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=50166)

--  作者:智友软件工作室
--  发布时间:2014/4/30 14:33:00
--  [求助]为什么不能正常返回字符列的最大字符长度?
代码这样:
Dim lst2 As WinForm.ListBox = e.Form.Controls("ListBox2")
lst2.items.Clear
Dim biaoname As String = lst.SelectedItem
\'MessageBox.Show(biaoname)
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "select * From {" & biaoname & "} Where [_Identify] Is Null"
Dim dt As DataTable = cmd.ExecuteReader
Dim Value As String
For Each dc As DataCol In dt.DataCols
    \'output.show(dc.name & ":" & dc.datatype.name)
    Value = dc.datatype.name
    Select Case Value
        Case = "String"
            lst2.Items.Add(dc.name & "(" & dc.datatype.name & "," & dc.MaxLength & ")")
        Case Else
            lst2.Items.Add(dc.name & "(" & dc.datatype.name & ")")
    End Select
Next

执行后窗口显示这样:

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140430143121.png
图片点击可在新窗口打开查看

正常应该返回字符列的最大字符数的,现在不是


--  作者:智友软件工作室
--  发布时间:2014/4/30 14:43:00
--  
Dim dt As DataTable = cmd.ExecuteReader  这个dt和实际加载的数据表有什么不一样嘛?  
对于已经加载的数据表用这个dc.MaxLength可以显示列最大字符长度。
我这个是未加载的表(外部数据源中表,和项目无关的表)是不是这个原因导致的。
如果这样的话,是不是只能用sql语句了呢?
[此贴子已经被作者于2014-4-30 14:47:02编辑过]

--  作者:Bin
--  发布时间:2014/4/30 14:48:00
--  
测试了一下,用SQLCOMMAND生成的表确实无法获取.
--  作者:有点甜
--  发布时间:2014/4/30 14:52:00
--  

 木有办法,你加一个临时表吧,类似这样

 

Dim q As new QueryBuilder
q.TableName = "临时表"
q.SelectString = "Select * from {表A} where 1=2"
q.Build
Dim dt As DataTable = DataTables("临时表")
For Each dc As DataCol In dt.DataCols
    output.show(dc.maxlength)
Next


--  作者:智友软件工作室
--  发布时间:2014/4/30 14:53:00
--  
算不算是个BUG图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2014/4/30 14:53:00
--  

 只需要一个临时表,最后把它删掉便可。

 

DataTables.Unload("临时表")