以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]请帮我看一下保存按钮哪里错了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97234)

--  作者:ajie5211
--  发布时间:2017/3/8 14:19:00
--  [求助]请帮我看一下保存按钮哪里错了
请帮看一下保存按钮哪里错了,前面测试好好的,保存没有问题,发布了,昨天他们说一保存数据就清没了,我测试真有这个问题,就把数据库事务代码给隐了,隐了后当时测试可以的,又发布,结果今天又不行了。真搞不明白为啥。请大神帮确认下。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar

晕了,百度浏览器插不进附件了。
[此贴子已经被作者于2017/3/8 14:21:00编辑过]

--  作者:有点色
--  发布时间:2017/3/8 14:46:00
--  

前面的代码修改下

 

    For Each dr As DataRow In DataTables(e.Form.TableName).DataRows
        If dr.RowState = DataRowState.Added Then
            xzh.Add(dr("iOrd"))
        Else If dr.RowState = DataRowState.Modified Then
            xgh.add(dr("iOrd"))
        End If
    Next

 

如果还出错,请说明,如何测试后出问题?


--  作者:ajie5211
--  发布时间:2017/3/8 15:14:00
--  
以下是引用有点色在2017/3/8 14:46:00的发言:

前面的代码修改下

 

    For Each dr As DataRow In DataTables(e.Form.TableName).DataRows
        If dr.RowState = DataRowState.Added Then
            xzh.Add(dr("iOrd"))
        Else If dr.RowState = DataRowState.Modified Then
            xgh.add(dr("iOrd"))
        End If
    Next

 

如果还出错,请说明,如何测试后出问题?

按这个修改后,数据到是没有清空,但修改第一行的任何一个值,数据都更新不过来。


--  作者:有点色
--  发布时间:2017/3/8 15:33:00
--  

1、为什么要写 delete from ? 你逻辑是什么?

 

2、不要吞掉错误,出错的话,弹出错误,建议你加入msgbox调试一下你的逻辑。


    Catch ex As Exception \'如果出错

        msgbox(ex.Message)
        Connections("wjexcel").Rollback() \'回滚事务,撤销所有操作
    End Try


--  作者:ajie5211
--  发布时间:2017/3/8 15:40:00
--  
以下是引用有点色在2017/3/8 15:33:00的发言:

1、为什么要写 delete from ? 你逻辑是什么?

 

2、不要吞掉错误,出错的话,弹出错误,建议你加入msgbox调试一下你的逻辑。


    Catch ex As Exception \'如果出错

        msgbox(ex.Message)
        Connections("wjexcel").Rollback() \'回滚事务,撤销所有操作
    End Try


此主题相关图片如下:qq截图20170308153750.png
按此在新窗口浏览图片

逻辑就是,从变动处开始,删除后台,然后把从变动处开始的行再插入数据库。


 


--  作者:有点蓝
--  发布时间:2017/3/8 15:52:00
--  
直接更新后台数据不行吗,为什么要先删除再插入?
--  作者:ajie5211
--  发布时间:2017/3/8 16:01:00
--  
以下是引用有点蓝在2017/3/8 15:52:00的发言:
直接更新后台数据不行吗,为什么要先删除再插入?

这是其它平台的数据库。哪个iOrd的值基本上等于行号,如果有插入时,从插入的这一行开始,后面的行iOrd全加了1,如果没有插入行,只是修改行,哪iOrd是不变的。所以想省事一点。从有变动或更新的行开始,后台数据全做掉,然后重新按当前修改的表建进去。


--  作者:有点色
--  发布时间:2017/3/8 16:03:00
--  

提示错误,就是说没有find到对应的行

 

If dr Is Nothing Then

 

End If

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


--  作者:ajie5211
--  发布时间:2017/3/8 16:19:00
--  
以下是引用有点色在2017/3/8 16:03:00的发言:

提示错误,就是说没有find到对应的行

 

If dr Is Nothing Then

 

End If

 

http://www.foxtable.com/webhelp/scr/1485.htm

 


此主题相关图片如下:qq截图20170308161541.png
按此在新窗口浏览图片

此主题相关图片如下:qq图片20170308161757.png
按此在新窗口浏览图片

我这里明明有2,他提示2的时候找不到了,这让我如何理解啊。


--  作者:有点色
--  发布时间:2017/3/8 16:37:00
--  

方法一:你iord列改成整数列

 

方法二:查询加上单引号  .Find("iOrd = \'" & i & "\'")