Foxtable(狐表)用户栏目专家坐堂 → 求助代码更改,把操作外部数据源换到操作内部数据


  共有2064人关注过本帖树形打印复制链接

主题:求助代码更改,把操作外部数据源换到操作内部数据

帅哥哟,离线,有人找我吗?
夜点蚊香
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:609 积分:4675 威望:0 精华:0 注册:2020/4/15 19:53:00
求助代码更改,把操作外部数据源换到操作内部数据  发帖心情 Post By: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 相关函数转换成操作内部数据源.

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/4 20:19:00 [只看该作者]

不要设置cmd.ConnectionName就是操作的内部表

 回到顶部
帅哥哟,离线,有人找我吗?
夜点蚊香
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:609 积分:4675 威望:0 精华:0 注册:2020/4/15 19:53:00
请问最后两句如何改一下  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/5 8:29:00 [只看该作者]

内部表建议直接使用datatable,即AddNew,完全没有必要使用sql

 回到顶部
帅哥哟,离线,有人找我吗?
夜点蚊香
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:609 积分:4675 威望:0 精华:0 注册:2020/4/15 19:53:00
帮忙看一下代码  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/5 9:35:00 [只看该作者]

很明显列名不正确,只能一个列一个列的赋值,比如

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

 回到顶部
帅哥哟,离线,有人找我吗?
夜点蚊香
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:609 积分:4675 威望:0 精华:0 注册:2020/4/15 19:53:00
如何遍历数组并列数每个值  发帖心情 Post By:2021/1/5 9:55:00 [只看该作者]

如何使用
For Each 

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107680 积分:547721 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/5 10:00:00 [只看该作者]


 回到顶部