以文本方式查看主题

-  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=39013)

--  作者:longtechwj
--  发布时间:2013/8/13 16:54:00
--  帮我看下这段代码

Dim cmd As new SQLCommand
Dim dt As DataTable
Dim i As Integer
cmd.C
cmd.CommandText="select * from ph where material_no=\'" & Tables("物料资料_Table1").Current("Material_No") & "\'"
dt = cmd.ExecuteReader()
For i=0 To dt.DataCols.Count-1
If(Forms("物料资料").Controls.Contains(dt.DataCols(i).Name)) Then ’这个地方
报错

Forms("物料资料").Controls(dt.DataCols(i).Name).Text=dt.DataRows(0)(dt.DataCols(i).Name)
End If
Next


--  作者:狐狸爸爸
--  发布时间:2013/8/13 16:57:00
--  
你至少也得说一下错误提示吧?
--  作者:Bin
--  发布时间:2013/8/13 16:58:00
--  
报什么错?
--  作者:longtechwj
--  发布时间:2013/8/13 17:01:00
--  

找不到为“0”的列


--  作者:Bin
--  发布时间:2013/8/13 17:03:00
--  
datacol 必须使用键值来获取. 不能使用下标.
你可以利用FOR EACH 来实现

for each dc as datacol in dt.DataCols
If(Forms("物料资料").Controls.Contains(dc.Name)) Then ’这个地方

--  作者:狐狸爸爸
--  发布时间:2013/8/13 17:04:00
--  
Dim cmd As new SQLCommand
Dim dt As DataTable
Dim i As Integer
cmd.C
cmd.CommandText="select * from ph where material_no=\'" & Tables("物料资料_Table1").Current("Material_No") & "\'"
dt = cmd.ExecuteReader()
For Each dc As DataCol In dt.DataCols
    If Forms("物料资料").Controls.Contains(dc.Name) Then
        Forms("物料资料").Controls(dc.Name).Text=dt.DataRows(0)(dc.Name)
    End If
Next

--  作者:longtechwj
--  发布时间:2013/8/13 17:10:00
--  

谢谢