Foxtable(狐表)用户栏目专家坐堂 → ExecuteReader有没有返回结果的参数?


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

主题:ExecuteReader有没有返回结果的参数?

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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
ExecuteReader有没有返回结果的参数?  发帖心情 Post By:2017/11/17 17:24:00 [只看该作者]

    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SEL ECT * From {订单表} WHERE 客户编码 = '" & dr9("客户编码") & "' and 订单状态 = '仓库已出货'"
    dt = cmd.ExecuteReader(True) '只有设置了true才可以保存数据


类似以上代码,实际运作过程中发现ExecuteReader会出现失败的情况,请问如何进行代码判断?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/17 17:29:00 [只看该作者]

失败报什么错?是不是你客户编码的条件有问题导致的?如果是单引号问题,就处理一下 dr9("客户编码").replace("'", "''")

 

判断是否出错,试试try catch http://www.foxtable.com/webhelp/scr/2933.htm

 


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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2017/11/17 19:28:00 [只看该作者]

我用这个代码来更新另外一个数据源的,出错的情况就是本地数据源显示上传成功了,但是服务器数据源则没有。
所以我想做一个判断。
[此贴子已经被作者于2017/11/17 19:28:40编辑过]

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


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/11/17 20:11:00 [只看该作者]

如何做更新的?ExecuteReader是取数据的和更新有啥关系?

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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2017/11/18 14:13:00 [只看该作者]

Dim dr9 As DataRow = drs(0)
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.C
    cmd.CommandText = "SEL ECT * From {订单表} WHERE 客户编码 = '" & dr9("客户编码") & "' and 订单状态 = '仓库已出货'"
    dt = cmd.ExecuteReader(True) '只有设置了true才可以保存数据
    
    '删除当前订单
    dt.DeleteFor("")
    
    For Each dr As DataRow In drs
        Dim nr As DataRow = dt.AddNew()
        For Each dc As DataCol In DataTables("订单表").DataCols
            nr(dc.name) = dr(dc.name)
        Next
        nr("订单状态") = "门店已回单" 
        nr("同步状态") = "已同步"
    Next
    For Each dr1 As DataRow In drs
        dr1("订单状态") = "门店已回单" 
        dr1("同步状态") = "已同步"
    Next
    dt.save
    DataTables("订单表").save
    forms("独-正在更新").close
    MessageBox.show("提交完成")


以上代码就是用来向数据源fwq-pmc上传本地数据用的。
[此贴子已经被作者于2017/11/18 14:16:28编辑过]

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


加好友 发短信
等级:超级版主 帖子:106063 积分:539408 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/11/18 15:55:00 [只看该作者]

dt = cmd.ExecuteReader(True) '只有设置了true才可以保存数据
    msgbox(dt.datarows.count)
    '删除当前订单
    dt.DeleteFor("")
msgbox(dt.datarows.count)
For Each dr As DataRow In drs
        Dim nr As DataRow = dt.AddNew()
        For Each dc As DataCol In DataTables("订单表").DataCols
            nr(dc.name) = dr(dc.name)
        Next
        nr("订单状态") = "门店已回单" 
        nr("同步状态") = "已同步"
    Next
    For Each dr1 As DataRow In drs
        dr1("订单状态") = "门店已回单" 
        dr1("同步状态") = "已同步"
    Next
msgbox(dt.datarows.count)
dt.save

看3个msgbox分别弹出什么内容
    

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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2017/11/20 9:37:00 [只看该作者]

现在的情况是,我已经做了这个软件而且已经给到十多个终端正在使用了,一部分终端能够正常用,一部分就出错。

出错的情况是:终端不会显示异常,代码还是能够走完,就像正常上传数据了一样,但是在后台看数据的话,就会发现他们的数据实际上是没有上传到后台的。

所以我想要知道的是,在这个上传过程中,有没有什么参数或者方法可以判断上传状态,这样我就可以做另外处理。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/20 10:16:00 [只看该作者]

 没看懂你5楼代码的意图。

 

1、查找到数据后,为什么又要删除? dt.DeleteFor("") ?

 

2、查询的订单表和datatable的订单表,是不是同一个表?

 

3、尽量这样做,生成一个外部表处理,这样看到处理的效果 http://www.foxtable.com/webhelp/scr/1279.htm

 


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


加好友 发短信
等级:一尾狐 帖子:443 积分:3530 威望:0 精华:0 注册:2013/2/9 12:45:00
  发帖心情 Post By:2017/11/20 11:21:00 [只看该作者]

我们有两个数据源,一个是门店的本地数据源A,第二个是后台的数据源B。

订单在两个数据源都会有人操作的。

因为门店这边默认的数据源是本地数据源A,所以需要去把B的数据同步下来,或者把变动同步到B上面去。

下面代码的意思就是首先是去查询B数据源上的订单信息,然后删除掉,然后再把本地数据源A的订单信息通过addnew的方式同步上去。

Dim dr9 As DataRow = drs(0)
    Dim cmd As New SQLCommand
    Dim dt As DataTable
    cmd.Conn ecti onN ame= “fwq-pmc
    cmd.CommandText = "SEL ECT * From {订单表} WHERE 客户编码 = '" & dr9("客户编码") & "' and 订单状态 = '仓库已出货'"
    dt = cmd.ExecuteReader(True) '只有设置了true才可以保存数据
    
    '删除当前订单
    dt.DeleteFor("")
    
    For Each dr As DataRow In drs
        Dim nr As DataRow = dt.AddNew()
        For Each dc As DataCol In DataTables("订单表").DataCols
            nr(dc.name) = dr(dc.name)
        Next
        nr("订单状态") = "门店已回单" 
        nr("同步状态") = "已同步"
    Next
    For Each dr1 As DataRow In drs
        dr1("订单状态") = "门店已回单" 
        dr1("同步状态") = "已同步"
    Next
    dt.save
    DataTables("订单表").save
    forms("独-正在更新").close
    MessageBox.show("提交完成")

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/20 12:23:00 [只看该作者]

 每次执行这个代码,都无法正常,还是说偶尔不能正常?

 

 改成这种方式看看效果  http://www.foxtable.com/webhelp/scr/1279.htm

 


 回到顶部
总数 14 1 2 下一页