以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  求助代码更改,把操作外部数据源换到操作内部数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159688)

--  作者:夜点蚊香
--  发布时间:2021/1/4 19:22:00
--  求助代码更改,把操作外部数据源换到操作内部数据
Dim e As RequestEventArgs = Args(0)
Dim cmd As New SQLCommand
cmd.C
Dim arr As jarray
Dim tbn As String = e.Values("tablename")   \'请求操作的数据表
Dim cn,cv As String
Dim time As String = Format(Date.Now,"yyyy-MM-dd HH:mm:ss")
Select Case e.Values("reqType")
    Case "append"
        arr = jarray.parse(e.Values("content"))   \'将请求内容转为数组
        For Each r As jtoken In arr               \'对数组按行遍历
            cn = ""       \'要添加内容的列
            cv = ""       \'要添加的内容
            For Each jp As jproperty In r
                cn = "[" & jp.name & "]," & cn
                cv = "\'" & jp.value.ToString.Replace("\'","\'\'") & "\'," & cv
            Next
             \'如果操作的是日志和审核表,都要同时加上服务器时间
            If Array.Indexof({"日志","审核"},tbn) > -1 Then
                cn = cn & "[time]," & iif(tbn="日志","ip,","")   \'日志表再加上ip列
                cv = cv & "\'" & time & "\'," & iif(tbn="日志","\'" & e.Request.RemoteEndPoint.ToString & "\',","")
            End If
            cmd.CommandText = "insert into " & tbn & "(" & cn.TrimEnd(",") & ") values(" & cv.TrimEnd(",") & ")"
            cmd.ExecuteNonQuery
        Next

求助,如何将cmd 相关函数转换成操作内部数据源.

--  作者:有点蓝
--  发布时间:2021/1/4 20:19:00
--  
不要设置cmd.ConnectionName就是操作的内部表
--  作者:夜点蚊香
--  发布时间:2021/1/5 1:38:00
--  请问最后两句如何改一下
cmd.CommandText = "insert into " & tbn & "(" & cn.TrimEnd(",") & ") values(" & cv.TrimEnd(",") & ")"
cmd.ExecuteNonQuery

代码最后两句怎么改才能找到对应狐表内部数据表.
现在用的代码是

            Dim q1str As String = cv.TrimEnd(",")
            q1str = q1str.Trim("\'")
            Dim qstr As String = cn.TrimEnd(",")
            qstr = qstr.TrimStart("[")
            Dim hstr As String = qstr
            hstr = hstr.TrimEnd("]")
            kc = dtt.AddNew()
            kc(hstr) = q1str
            kc.Save
 现在只有填写单个列名的时候管用,在多个列填写数据的时候,就不起作用了.求助怎么改一下.谢谢

[此贴子已经被作者于2021/1/5 1:48:15编辑过]

--  作者:有点蓝
--  发布时间:2021/1/5 8:29:00
--  
内部表建议直接使用datatable,即AddNew,完全没有必要使用sql
--  作者:夜点蚊香
--  发布时间:2021/1/5 9:20:00
--  帮忙看一下代码
kc = dtt.AddNew()
kc(cn.TrimEnd(",")) = cv.TrimEnd(",")
kc.Save
只用这个代码的时候, 填入数据的时候报错.
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:自定义函数,audRow
详细错误信息:
调用的目标发生了异常。
列“[客户ID],[产品ID]”不属于表 测试。
[此贴子已经被作者于2021/1/5 9:23:04编辑过]

--  作者:有点蓝
--  发布时间:2021/1/5 9:35:00
--  
很明显列名不正确,只能一个列一个列的赋值,比如

kc("客户ID") = xxx1
kc("产品ID") = xxx2

--  作者:夜点蚊香
--  发布时间:2021/1/5 9:55:00
--  如何遍历数组并列数每个值
如何使用
For Each 

Next
语句遍历数组,并列出数组的值.


--  作者:有点蓝
--  发布时间:2021/1/5 10:00:00
--  
比如:http://www.foxtable.com/webhelp/topics/1533.htm,看示例二