以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  表连接数据刷新问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=110235)

--  作者:Springamy
--  发布时间:2017/11/29 15:44:00
--  表连接数据刷新问题

问题如图:

If e.DataCol.Name = "编码" Then
    For Each dr As DataRow In DataTables("表A").DataRows
       If e.DataRow("编码")<>"" AndAlso e.DataRow("金额") IsNot Nothing Then
            
            
           
       End If
    Next
End If

 


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

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

看不懂你的描述,看不懂你的逻辑,请单独做个实例发上来,说明操作步骤,说明要实现的功能。


--  作者:Springamy
--  发布时间:2017/11/29 16:24:00
--  
以下是引用有点甜在2017/11/29 15:52:00的发言:

看不懂你的描述,看不懂你的逻辑,请单独做个实例发上来,说明操作步骤,说明要实现的功能。

窗口2-->补贴

说明:  我在Excel 文件批量复制 编码 金额 粘贴到 BC明细表中,

         BC明细表保存之后 遍历 BC明细表,根据编码查找 补偿表中是否能找到该编码

         找到的话 剩余金额 = 剩余金额 -金额

                     Bid = id

         刷新补偿表

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


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

参考代码

 

If e.DataCol.Name = "编码" OrElse e.DataCol.name = "金额" Then
    Dim t As Table = e.Form.controls("Table4").Table
    If e.DataRow("编码")<>Nothing AndAlso e.DataRow("金额")<>Nothing Then
        Dim fdr As DataRow = t.DataTable.Find("编号 = \'" & e.DataRow("编码") & "\'")
        If fdr IsNot Nothing Then
            fdr("剩余金额") -= e.DataRow("金额")
        End If
    End If
End If


--  作者:Springamy
--  发布时间:2017/11/29 17:50:00
--  
以下是引用有点甜在2017/11/29 16:56:00的发言:

参考代码

 

If e.DataCol.Name = "编码" OrElse e.DataCol.name = "金额" Then
    Dim t As Table = e.Form.controls("Table4").Table
    If e.DataRow("编码")<>Nothing AndAlso e.DataRow("金额")<>Nothing Then
        Dim fdr As DataRow = t.DataTable.Find("编号 = \'" & e.DataRow("编码") & "\'")
        If fdr IsNot Nothing Then
            fdr("剩余金额") -= e.DataRow("金额")
        End If
    End If
End If

 

剩余金额是 Table 4中当前行剩余金额-使用金额哦,并没有按照编码执行呢


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

--  作者:Springamy
--  发布时间:2017/11/29 17:50:00
--  

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

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

4楼代码没问题。 你输入编码后,输入金额,就会对应减去table4的代码。请认真测试。

 

或者你截图说明测试步骤。


--  作者:Springamy
--  发布时间:2017/11/30 9:43:00
--  测试

测试弹出的顺序如图3所示

看起来好像问题是出在在了刷新按钮的click事件里面

 


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

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

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


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

测试没问题,你肯定有其它代码影响。

 

请上传具体例子说明。


--  作者:Springamy
--  发布时间:2017/11/30 10:36:00
--  
以下是引用有点甜在2017/11/30 10:06:00的发言:

测试没问题,你肯定有其它代码影响。

 

请上传具体例子说明。

8楼问题截图很明显阿,我特意用方框了,选择是是Table4中 id 为 6112 6115的证书编号,但是 扣掉的是id 为4489的剩余金额

问题在刷新按钮的Click事件中:以下代码:

刷新的时候position指在了0的位置,

甜大,可不可以按证书编码查找Table4中的编号,然后把找到的数据设置为当前行

循环Table3,find Table4中的证书编号......思路有点乱...

 

问题就在下面的代码,指定了当前行

Dim r As Row =Tables("_Table3").Current
Dim bcid As Integer
If r IsNot Nothing  Then
    bcid= r("bcid")
    With Tables("_Table4")
        Dim p As Integer
        p= .FindRow("[id]=" & bcid ) \'从当前行的下一行开始查找
        If p >= 0 Then \'如果找到的话
           \' .Position = p \'定位到找到的行.
            SystemReady = False
            .position = p
            SystemReady = True
            .Rows(p).checked = False
        End If
msgbox("p= " & p)
    End With
msgbox("bcid= " & bcid)
End If