Foxtable(狐表)用户栏目专家坐堂 → for问题


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

主题:for问题

美女呀,离线,留言给我吧!
Springamy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
for问题  发帖心情 Post By:2017/11/3 10:50:00 [显示全部帖子]

Dim r6 As Row = Tables("..._Table6").Current
                For dr As DataRow = DataTables("..._Table1").DataRows
                    Dim dr5 As DataRow = DataTables("..._Table5").Find("cgid=" & dr("id"))
                    If dr5 IsNot Nothing Then
                        dr5("凭证号") = r6("凭证单据号")
                        dr5("付款确认") = True
                    Else
                        MessageBox.Show("请先申请付款!")
                    End If                    
                Next

问题描述: 批量付款窗口为独立窗口,需要给Table1的订单进行批量付款,

              并且table6当前行的凭证单据号为付款的凭证号(Table5)

              在填充了Table5的凭证号之后,会扣减Table5中当前行的剩余金额(这个已实现,我现在只需要批量填充凭证单号)

              


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

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

 回到顶部
美女呀,离线,留言给我吧!
Springamy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/3 11:28:00 [显示全部帖子]

 Dim r6 As Row = Tables("..._Table6").Current
                msgbox("测试1")
                For Each dr As DataRow In DataTables("..._Table1").DataRows
                    msgbox("测试2")
                    Dim dr5 As DataRow = DataTables("..._Table5").Find("cgid=" & dr("id"))
                    msgbox("测试3")
                    msgbox(dr("id")  & " 和 " & dr5("cgid"))
                    If dr5 IsNot Nothing Then
                        dr5("凭证号") = r6("凭证单据号")
                        dr5("付款确认") = True
                     end if

 

问题: 可以执行到 "测试3" ,后面的msgbox(dr("id")  & " 和 " & dr5("cgid")) 执行不到

        数据库中是有cgid这条数据的,select *f rom cgfk where cgid = id可以查找出来的

       执行到"测试3" 之后,报没有实例对象错误


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/3 16:10:00 [显示全部帖子]

甜大大:前面的代码在数据库用select是可以找到的,但是执行的是msgbox("没找到")

所以改成下面的代码:

但是下面的代码我只能赋值到循环的第一个 订单的凭证号,

Dim r6 As Row = Tables("..._Table6").Current

                    msgbox("测试1")

  For i As Integer = 0 To Tables("..._Table1").Rows.Count-1

                        msgbox("测试2")

        Tables("...._Table1").Position = i

        Dim dr As Row = Tables("..._Table1").Current

        Dim dr5 As DataRow = DataTables("...._Table5").Find("cgid=" & dr("id"))

                        msgbox("测试3")

                        msgbox(dr("id")  & " 和 " & dr5("cgid"))

                       

        If dr5 IsNot Nothing Then

              dr5("凭证号") = r6("凭证单据号")

              dr5("付款确认") = True

         Else

              MessageBox.Show("合同号:'" & dr("..合同号") & "'请先申请付款!")

         End If

   Next


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
Springamy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
代码还有一点逻辑上的错误  发帖心情 Post By:2017/11/3 18:25:00 [显示全部帖子]

大大,问题如图,我照着改了代码,还出现了问题,就是在循环Table的时候,Table1的当前行并没有变化,

                   所以只能找到一个数据并赋值,可是已经循环了Table1了,为嘛它的当前行不会动呢,也就是

                   posotion 一直都等于1


图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/3 19:14:00 [显示全部帖子]

实例估计一天都做不好,太难了图片点击可在新窗口打开查看

如图:4个表的逻辑关系,主要是Table1和Table5有关联,currentchangged事件,Table5:Table1的关系是: cgid = id

通过独立窗口,读取 校验,过滤出了订单,并全部申请了付款,(在确认付款按钮出了问题)

我是需要把过滤出来的Table1的订单全部确认付款,前面的 '批量付款申请 '按钮,申请之后,Table5就有数据,并cgid = id,

需要把Table6当前行的凭证单据号赋值给Table5的凭证号,就已经完成了付款操作了


图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/3 19:58:00 [显示全部帖子]

 问题描述:过滤后的订单,直接点击'批量付款并确认'按钮,table1的position 从1循环到5,并弹窗

              MessageBox.Show("单号: '" & dr("订单号") & "' 请先申请付款!")


              如果点击了"批量申请付款" 按钮,再确认,Table1 .position =0,及时我把当前行定位到

              position = 1,点击" 批量付款并确认"按钮,弹出的 position = 0,并报下图中的错误         

 

Dim r6 As Row = Tables("_Table6").Current
                msgbox("测试1")
                For i As Integer = 0 To Tables("_Table1").Rows.Count-1
                    msgbox("测试2")
                    Tables("_Table1").Position = i
                    msgbox("i = " & i)
                    Dim dr As Row = Tables("_Table1").Current
                    Dim drs = DataTables("_Table5").Select("cgid=" & dr("id"))                   
                    If drs.count > 0 Then
                        msgbox("测试3")
                        For Each dr5 As DataRow In drs
                             msgbox("测试4")

                            dr5("凭证号") = r6("凭证单据号")
                             msgbox("测试5")
                            dr5("付款确认") = True
                            dr5("系统编号") = r6("系统单号")
                            msgbox(dr5("凭证号"))
                            msgbox(dr("id")  & " 和 " & dr5("cgid"))
                        Next
                    Else
                        MessageBox.Show("单号: '" & dr("订单号") & "' 请先申请付款!")
                    End If
                Next

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/6 14:53:00 [显示全部帖子]

问题如图:Table5中凭证号被赋值之后,Table6会刷新数据,加载最新的剩余金额,所以这个行是在的,表中是有数据的

             问题就在点击批量付款之后,只能给一个订单付款,在赋值之后执行Table5的datacolchanged事件,但是为什么

             执行到弹出窗口哪里就会报错(如图)

表的逻辑前面有附图详细说明

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

 回到顶部
美女呀,离线,留言给我吧!
Springamy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/6 15:09:00 [显示全部帖子]

那应该修改Table5的datacolchanged事件吗?还有个问题就是我在一个订单付完值之后就刷新数据

是因为要保证剩余金额>=table5中要付款的金额,如果不刷新的话很有可能剩余金额会成负数


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/6 15:26:00 [显示全部帖子]

好的,谢谢,我还想到一个问题不知道会不会有影响,

我是在 table5的datacolchanged事件中   符合这个条件If e.DataCol.Name = "凭证号" Then

的时候就刷新Table6的数据,加载出剩余金额, 有些订单是只能手动确认付款,也就是直接把Table6的凭证单据号

直接复制到Table5的凭证号列中,如果这各条件里面不能刷新数据了,那该怎么刷新

 


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2017/11/6 16:42:00 [显示全部帖子]

剩余金额不对,还是报错(如图),不太看得懂这个SQLGetvalue,不会用


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


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