以文本方式查看主题

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

--  作者:YOU
--  发布时间:2020/7/7 11:55:00
--  [求助]使用临时表报错
调用的目标发生了异常。
   在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   在 Foxtable.UserFunctions.Execute(String Name, Object[] Args)
未将对象引用设置到对象的实例。
   在 UserCode.A3xyNgbmSlSoidvSg(Object[] Args)
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:使用临时表.txt


--  作者:有点蓝
--  发布时间:2020/7/7 12:10:00
--  
调试看那一句代码出错

Dim dr As DataRow = TmTable.Find("OpenID = \'" & OA & "\'")
if dr isnot nothing then xxxx

--  作者:YOU
--  发布时间:2020/7/7 14:00:00
--  
            cmd.Com mandText = "Se lect * fr om XL_T习题明细清单 W here 选择归属= \'" & KC & "\'"        查询出来是多行数据
            Dim XT = c md.ExecuteValues
            If HDValues.Count = 0 Then
                dr = TmTable.AddNew()          这里只能新增一行      
                dr("OpenID") = OA
                dr("课程ID") = KC
                dr("习题ID") = XT("习题ID")

这个要怎么处理,才能查询多少,就新增多少

--  作者:有点蓝
--  发布时间:2020/7/7 14:02:00
--  
多行使用ExecuteReader,然后遍历返回的表格的所有行
--  作者:YOU
--  发布时间:2020/7/7 14:18:00
--  
需要老师,写个案例
--  作者:有点蓝
--  发布时间:2020/7/7 14:23:00
--  

示例三

同样利用ExecuteReader,可以直接从后台提取数据合并到某个表中:

Dim cmd As New SQLCommand
cmd.ConnectionName = "数据源名称"
Dim 
dt As DataTable
Dim 
Cols1() As String = {"来源列一","来源列二","来源列三"}
Dim Cols2() As String = {"接收列一","接收列二","接收列三"}
cmd.CommandText = 
"SELECT * From {表A} Where 条件语句"
dt = cmd.ExecuteReader
()
For Each 
dr1 As DataRow In dt.DataRows
    Dim 
dr2 As DataRow = DataTables("表B").AddNew()
    For 
i As Integer = 0 To Cols1.Length -1
        
dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next


--  作者:YOU
--  发布时间:2020/7/7 14:58:00
--  
Dim OA As String = e.Cookies("openid") \'获取openid
Dim KC As String = e.GetValues("kcid") \'获取课程ID

Dim dt As D ataTable
Dim Cols1() As String = {OA,KC,"习题ID","习题类型","习题题目","正确答案","习题解析",1,Date.Now,Date.Now}
Dim Cols2() As String = {"OpenID","课程ID","习题ID","习题类型","习题题目","正确答案","习题解析","练习次数","生成时间","ActiveTime"}
c md.CommandText = "Se lect * fro m XL_T习题明细清单 Wh ere 选择归属= \'" & KC & "\'"
dt = cm d.ExecuteReader()
For Each dr1 As DataRow In dt.DataRows
    Dim dr2 As DataRow = DataTables("TmInfos").AddNew()
    For i As Integer = 0 To Cols1.Length -1
        dr2(Cols2(i)) = dr1(Cols1(i))
    Next
Next


列“oWhWn1Sv3O4m43nBJRrAUpmGiF0A”不属于表 。
   在 System.Data.DataRow.GetDataColumn(String columnName)
   在 System.Data.DataRow.get_Item(String columnName, DataRowVersion version)
   在 Foxtable.DataRow.get_Item(String ColumnName)
   在 UserCode.A3xyNgbmSlSoidvSg(Object[] Args)


--  作者:有点蓝
--  发布时间:2020/7/7 15:06:00
--  
Cols1和Cols2数值里必须是列名。赋值代码可以用回原来的用法,不一定要抄帮助的

 dr2("OpenID") = OA
 dr2("课程ID") = KC

--  作者:YOU
--  发布时间:2020/7/7 18:21:00
--  
        cmd.CommandText = "Sele ct * fr om XL_T回答明细清单 Whe re OpenID = \'" & OA & "\' AND 课程ID= \'" & KC & "\'"
        Dim HDValues = c md.ExecuteValues
        If HDValues.Count = 0 Then
            Dim dt As DataTable
            Dim Cols1() As String = {"习题ID","习题类型","习题题目","正确答案","习题解析"}
            Dim Cols2() As String = {"习题ID","习题类型","习题题目","正确答案","习题解析"}
            cm d.CommandText = "Se lect * fr om XL_T习题明细清单 Wh ere 选择归属= \'" & KC & "\'"
            dt = c md.ExecuteReader()
            For Each dr1 As DataRow In dt.DataRows
                Dim dr2 As DataRow = DataTables("TmInfos").AddNew()
                For i As Integer = 0 To Cols1.Length -1
                    dr2("OpenID") = OA
                    dr2("课程ID") = KC
                    dr2("练习次数") = 1
                    dr2("生成时间") = Date.Now
                    dr2("ActiveTime") = Date.Now
                    dr2(Cols2(i)) = dr1(Cols1(i))
                Next
            Next

未将对象引用设置到对象的实例。
   在 UserCode.A3xyNgbmSlSoidvSg(Object[] Args)

--  作者:linyunu1
--  发布时间:2020/7/7 18:26:00
--  
cmd.CommandText = "Sele ct * fr om XL_T回答明细清单 Whe re OpenID = \'" & OA & "\' AND 课程ID= \'" & KC & "\'"
        Dim HDValues As DataTable= c md.ExecuteReader()