Foxtable(狐表)用户栏目专家坐堂 → 求个复杂点的代码


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

主题:求个复杂点的代码

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


加好友 发短信
等级:婴狐 帖子:62 积分:561 威望:0 精华:0 注册:2008/9/17 10:25:00
求个复杂点的代码  发帖心情 Post By:2008/12/18 19:29:00 [只看该作者]

收款明细中,当收到来款时,求个复杂点的代码

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:汽车管理系统.table

要求如下:
根据付款单位记录自动在总表中的付款单位列找到该单位,然后在该单位的运费结算_已收列中按时间(车次列)先后填(补)足应收款(余款依次填入下条记录)。计算运费结算_应收未收的值,为0时则在运费结算_结清中确定。
[此贴子已经被作者于2008-12-19 0:50:30编辑过]

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


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/18 22:34:00 [只看该作者]

为什么要修改原始记录:应收费?

或者表达清楚1些 最好截图来表达。
[此贴子已经被作者于2008-12-18 22:40:38编辑过]

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


加好友 发短信
等级:婴狐 帖子:62 积分:561 威望:0 精华:0 注册:2008/9/17 10:25:00
  发帖心情 Post By:2008/12/18 23:04:00 [只看该作者]

晕,错了,是已收


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


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/19 0:01:00 [只看该作者]

"收款明细"  DataColChanging中的代码:

If e.DataCol.Name = "付款单位"  Then
     Dim dr As DataRow = DataTables("总表").Find("发货单位 = '" & e.NewValue & "' ")
           dr("运费结算_已收") = e.datarow("金额")
     if   dr("运费结算_应收未收") = 0 then
          dr("运费结算_结清") = true
     end if
end  if

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


加好友 发短信
等级:一尾狐 帖子:445 积分:3013 威望:0 精华:0 注册:2008/9/13 10:49:00
  发帖心情 Post By:2008/12/19 0:04:00 [只看该作者]

find的条件可以自已增加...(以上的应写得不够完善)


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


加好友 发短信
等级:婴狐 帖子:62 积分:561 威望:0 精华:0 注册:2008/9/17 10:25:00
  发帖心情 Post By:2008/12/19 0:30:00 [只看该作者]

不对的:
1,填入已收列的金额不能大于本车次运费结清_税后运费列的值,
2,当已收列的金额等于运费_税后运费后,余下的金额依次填入該单位的下一车次,
比方说帮A拉了三车,税后运费分别是3000,4000,5000,现在A付来10000元,现在要把10000元按运输时间顺序(附件中是按车次顺序)将前两车填或补够3000,4000,第三车填入余下的 。
[此贴子已经被作者于2008-12-19 0:42:45编辑过]

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2008/12/19 12:22:00 [只看该作者]

'''
If e.DataCol.Name = "付款单位"  Then
     Dim T As String
     Dim mny,sum As Double
     Dim Da As DataTable = DataTables("总表")
     mny = e.DataRow("金额") 
      if mny <=0 then
          MessageBox.Show("请输入金额!", "提示")
     Else    
         T = "发货单位 = '" & e.NewValue & "'"
         if Da.Find(T) isNot nothing then
               for each dr As DataRow in Da.select(T)
                       sum = Da.Compute("Sum(运费结算_已收)",T)
                       if sum = mny
                             Exit For
                       end if
                       if  mny - sum >= dr("运费结算_应收费")            
                             dr("运费结算_已收") = dr("运费结算_应收费")
                       Else
                             dr("运费结算_已收") = mny - sum
                       End if
               Next
         end if
     end if
end if
                    
[此贴子已经被作者于2008-12-19 12:58:20编辑过]

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


加好友 发短信
等级:婴狐 帖子:62 积分:561 威望:0 精华:0 注册:2008/9/17 10:25:00
  发帖心情 Post By:2008/12/20 9:18:00 [只看该作者]

代码放到DataColChanging中,奇怪,不填充,我按你设定的数据类型将总表的运费结算_已收和收款明细表的金额列改为双精度小数一样不填充。
T = "付款单位 = '" & e.NewValue & "'"
这句错了,改后成了,但还有个问题:如原来运费结算_已收中已有预付款就不按足额填充了。

[此贴子已经被作者于2008-12-20 9:39:45编辑过]

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


加好友 发短信
等级:婴狐 帖子:62 积分:561 威望:0 精华:0 注册:2008/9/17 10:25:00
  发帖心情 Post By:2008/12/20 10:31:00 [只看该作者]

'''
If e.DataCol.Name = "付款单位"  Then
     Dim T As String
     Dim mny,sum As Double
     Dim Da As DataTable = DataTables("总表")
     mny = e.DataRow("金额")
      if mny <=0 then
          MessageBox.Show("请输入金额!", "提示")
     Else   
         T = "付款单位 = '" & e.NewValue & "'"
         if Da.Find(T) isNot nothing then
               for each dr As DataRow in Da.select(T)
                       sum = Da.Compute("Sum(运费结算_已收)",T)
                       if sum = mny
                             Exit For
                       end if
                       if  mny - sum >= dr("运费结算_应收费")                            
                           dr("运费结算_已收") = dr("运费结算_应收费")
                           mny=mny + sum
                        End if
                       Else
                             dr("运费结算_已收") = mny - sum
                       End if
               Next
         end if
     end if
end if
这样好点,如果金额填完所有记录还有余额时能提示就更完善了。
[此贴子已经被作者于2008-12-20 12:19:04编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12993 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2008/12/20 22:45:00 [只看该作者]

这个应该比较完美了,不过也心淡,罢了
'''
If e.DataCol.Name = "付款单位"  Then
     Dim T As String
     Dim mny,sum,sm As Double
     Dim Da As DataTable = DataTables("总表")    
     if e.DataRow("金额") <=0 then
          MessageBox.Show("请输入金额!", "提示")
     Else   
         T = "[发货单位] = '" & e.NewValue & "' and [运费结算_结清] = False"       
         if Da.Find(T) isNot nothing then
               sum = Da.Compute("Sum(运费结算_已收)",T)
               sm= Da.Compute("Sum(运费结算_应收费)",T)
               mny = e.DataRow("金额") +sum
               if mny > sm then
                    MessageBox.Show("金额超出应付款项:" & (mny-sm) &"!", "提示")
               end if
               for each dr As DataRow in Da.select(T)
                    if mny <=0 then
                       exit for                 
                    else
                        if  mny >= dr("运费结算_应收费")                                   
                            dr("运费结算_已收") = dr("运费结算_应收费")
                            dr("运费结算_结清") = True                      
                        else
                            dr("运费结算_已收") = mny
                        end if
                        mny =mny- dr("运费结算_应收费")
                   end if 
               next           
         end if
     end if
end if
[此贴子已经被作者于2008-12-20 22:53:49编辑过]

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