以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  ExecuteReader有没有返回结果的参数?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=109715)

--  作者:huangxueyao
--  发布时间:2017/11/17 17:24:00
--  ExecuteReader有没有返回结果的参数?
    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会出现失败的情况,请问如何进行代码判断?

--  作者:有点甜
--  发布时间:2017/11/17 17:29:00
--  

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

 

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

 


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

--  作者:有点蓝
--  发布时间:2017/11/17 20:11:00
--  
如何做更新的?ExecuteReader是取数据的和更新有啥关系?
--  作者:huangxueyao
--  发布时间: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编辑过]

--  作者:有点蓝
--  发布时间: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
--  发布时间:2017/11/20 9:37:00
--  
现在的情况是,我已经做了这个软件而且已经给到十多个终端正在使用了,一部分终端能够正常用,一部分就出错。

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

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

--  作者:有点甜
--  发布时间:2017/11/20 10:16:00
--  

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

 

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

 

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

 

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

 


--  作者:huangxueyao
--  发布时间: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("提交完成")

--  作者:有点甜
--  发布时间:2017/11/20 12:23:00
--  

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

 

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