Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:求个复杂点的代码

1楼
号子 发表于:2008/12/18 19:29:00

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

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

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

或者表达清楚1些 最好截图来表达。
[此贴子已经被作者于2008-12-18 22:40:38编辑过]
3楼
号子 发表于:2008/12/18 23:04:00
晕,错了,是已收

4楼
gdtgl 发表于: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
5楼
gdtgl 发表于:2008/12/19 0:04:00

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

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

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

[此贴子已经被作者于2008-12-20 9:39:45编辑过]
9楼
号子 发表于: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编辑过]
10楼
don 发表于: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 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03906 s, 3 queries.