Foxtable(狐表)用户栏目专家坐堂 → 当某一列的值,要根据另几列值自动生成时,如果写代码效率最高?


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

主题:当某一列的值,要根据另几列值自动生成时,如果写代码效率最高?

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


加好友 发短信
等级:童狐 帖子:257 积分:2448 威望:0 精华:0 注册:2018/5/21 16:49:00
当某一列的值,要根据另几列值自动生成时,如果写代码效率最高?  发帖心情 Post By:2021/4/17 21:07:00 [只看该作者]

"开户行全称","币种","摘要","备注","对方户名","对方账号","汇入金额","汇出金额"这些列都是从银行下载的EXCEL表中导入的,

记账归类的值,是根据上面8列值的不同情况,进行归类整理取得。

先列举不同的银行,再根据币种分为人民币和非人民币,然后根据是汇入金额,汇出金额区分,再根据摘要,备注的不同,有时候还要加入户名的情况进行归类,


如果修改以下可以让代码的效率更高?



Dim gsmc,fddbr,lba,zha,zhb,dfzh,dfhm,bzz As String   
 
 
 

Select e.DataCol.Name
    Case "开户行全称","币种","摘要","备注","对方户名","对方账号","汇入金额","汇出金额"
        
        '''''//////////////////////////银行1开始//////////////////////////////////////////////////////////////// //////////////////////////// /////////////////////////////////////////////
        If e.DataRow.IsNull("记账归类") = True Then  '如果记账归类是空
            
            If   dr("开户行全称").Contains("联合银行")  Then
                
                If dr("币种").Contains("RMB") OrElse dr("币种").Contains("rmb")   OrElse dr("币种").Contains("人民币")   Then '人民币
                    If dr("汇出金额") <> 0 Then
                        If dr("摘要").Contains("手续费")  OrElse dr("对方户名").Contains("修改托收委托书")   Then
                            dr("记账归类") = "付手续费"
                        ElseIf dr("摘要").Contains("利息")  Then
                            dr("记账归类") = "付利息"
                        ElseIf dr("摘要").Contains("结汇")   Then
                            dr("记账归类") = "结汇"
                        ElseIf dr("摘要").Contains("税费社保") OrElse  dr("摘要").Contains("国库税收")  OrElse dr("摘要").Contains("公积金") OrElse dr("对方户名").Contains("待报解预算收入") OrElse dr("对方户名").Contains("国家金库") OrElse dr("对方户名").Contains("税款")    Then
                            dr("记账归类") = "付税费社保"
                        ElseIf dr("摘要").Contains("货款") OrElse  dr("摘要").Contains("材料款")    Then
                            dr("记账归类") = "付货款"
                        ElseIf dr("摘要").Contains("往来款")  Then
                            dr("记账归类") = "付往来款"
                        ElseIf dr("摘要").Contains("运费")   Then
                            dr("记账归类") = "付运费"
                        ElseIf dr("摘要").Contains("工资")  Then
                            dr("记账归类") = "付工资"
                        ElseIf dr("对方户名").Contains("保证金")  Then
                            dr("记账归类") = "付保证金"
                        ElseIf dr("对方户名").Contains("货运")   OrElse dr("对方户名").Contains("快件")  Then
                            dr("记账归类") = "付运费"
                        ElseIf dr("对方户名").Contains("银行") Then
                            dr("记账归类") = "付银行"
                        ElseIf dr("对方户名").Contains("检测") Then
                            dr("记账归类") = "付检测"
                        ElseIf dr("对方户名").Contains("保险") Then
                            dr("记账归类") = "付保险"
                        ElseIf e.DataRow("备注").Contains("投资款") OrElse e.DataRow("摘要").Contains("投资款")  Then
                            e.DataRow("记账归类") = "付投资款"
                        ElseIf e.DataRow("备注").Contains("物业")  OrElse e.DataRow("摘要").Contains("物业")   Then
                            e.DataRow("记账归类") = "付物业"
                        ElseIf e.DataRow("备注").Contains("办公")  OrElse e.DataRow("摘要").Contains("办公")  Then
                            e.DataRow("记账归类") = "付办公"
                        ElseIf e.DataRow("备注").Contains("空调")  OrElse e.DataRow("摘要").Contains("空调")  Then
                            e.DataRow("记账归类") = "付空调"
                        ElseIf e.DataRow("备注").Contains("停车")  OrElse e.DataRow("摘要").Contains("停车")   Then
                            e.DataRow("记账归类") = "付停车"
                        ElseIf e.DataRow("备注").Contains("车位")  OrElse e.DataRow("摘要").Contains("车位")   Then
                            e.DataRow("记账归类") = "付停车"
                            
                        ElseIf dr("对方户名").Contains(gsmc) AndAlso dr("摘要").Contains("汇出")   Then
                            dr("记账归类") = "跨行转出"
                        ElseIf dr("对方户名").Contains(gsmc) AndAlso dr("摘要").Contains("转入")   Then
                            dr("记账归类") = "结汇"
                            
                        ElseIf dr("摘要").Contains("往来款")  Then
                            dr("记账归类") = "付往来款"
                            
                        ElseIf dr("摘要").Contains("贷款")  Then
                            dr("记账归类") = "还贷款"
                            
                        ElseIf dr("对方户名").Contains("待结算财政款项") AndAlso dr("摘要").Contains("汇入")  Then
                            dr("记账归类") = "付退税款"
                        ElseIf  dr("摘要").Contains("电子退库")  Then
                            dr("记账归类") = "付退税款"
                        ElseIf dr("对方户名").Contains("有限公司") OrElse dr("对方户名").EndsWith("厂")  OrElse dr("对方户名").EndsWith("商行")  OrElse dr("对方户名").EndsWith("经营部")      Then
                            
                            
                            dfhm =  e.DataRow("对方户名").Replace(" ","")
                            dfhm = dfhm.replace("%", "[%]")
                            dfhm = dfhm.replace("*", "[*]")
                            '  MessageBox.Show(dfhm)
                            Dim drw As DataRow = DataTables("往来单位").SQLFind("[单位名称] = '" & dfhm & "'")  '对方户名
                            If drw  IsNot Nothing Then  '如果找到的话
                                If drw("类别").Contains("工厂") Then
                                    dr("记账归类") = "付货款"
                                End If
                            End If
                            
                            
                            
                        ElseIf dr("对方户名").Contains(fddbr)  Then
                            dr("记账归类") = "付往来款"
                        ElseIf dr.Isnull("对方户名") = False  AndAlso  dr("对方户名").length < 4 Then '
                            dr("记账归类") = "付往来款"
                        Else
                            dr("记账归类") = ""
                        End If
                    Else If  dr("汇入金额") <> 0 Then
                        
                        ''''''''''''
                        If dr("摘要").Contains("手续费")  OrElse dr("对方户名").Contains("修改托收委托书")   Then
                            dr("记账归类") = "收手续费"
                        ElseIf dr("摘要").Contains("利息")  Then
                            dr("记账归类") = "收利息"
                        ElseIf dr("摘要").Contains("结汇")   Then
                            dr("记账归类") = "结汇"
                        ElseIf dr("摘要").Contains("税费社保")  OrElse dr("对方户名").Contains("税款")    Then
                            dr("记账归类") = "收税费社保"
                        ElseIf dr("摘要").Contains("货款") OrElse  dr("摘要").Contains("材料款")    Then
                            dr("记账归类") = "收货款"
                        ElseIf dr("摘要").Contains("往来款")  Then
                            dr("记账归类") = "收往来款"
                        ElseIf dr("摘要").Contains("运费")   Then
                            dr("记账归类") = "收运费"
                        ElseIf dr("摘要").Contains("工资")  Then
                            dr("记账归类") = "收工资"
                        ElseIf dr("对方户名").Contains("保证金")  Then
                            dr("记账归类") = "收保证金"
                        ElseIf dr("对方户名").Contains("货运")  OrElse dr("对方户名").Contains("快件")  Then
                            dr("记账归类") = "收运费"
                        ElseIf dr("对方户名").Contains("银行") Then
                            dr("记账归类") = "收银行"
                        ElseIf dr("对方户名").Contains("检测") Then
                            dr("记账归类") = "收检测"
                        ElseIf dr("对方户名").Contains("保险") Then
                            dr("记账归类") = "收保险"
                        ElseIf e.DataRow("备注").Contains("投资款") OrElse e.DataRow("摘要").Contains("投资款")  Then
                            e.DataRow("记账归类") = "收投资款"
                        ElseIf e.DataRow("备注").Contains("物业")  OrElse e.DataRow("摘要").Contains("物业")   Then
                            e.DataRow("记账归类") = "收物业"
                        ElseIf e.DataRow("备注").Contains("办公")  OrElse e.DataRow("摘要").Contains("办公")  Then
                            e.DataRow("记账归类") = "收办公"
                        ElseIf e.DataRow("备注").Contains("空调")  OrElse e.DataRow("摘要").Contains("空调")  Then
                            e.DataRow("记账归类") = "收空调"
                        ElseIf e.DataRow("备注").Contains("停车")  OrElse e.DataRow("摘要").Contains("停车")   Then
                            e.DataRow("记账归类") = "收停车"
                        ElseIf e.DataRow("备注").Contains("车位")  OrElse e.DataRow("摘要").Contains("车位")   Then
                            e.DataRow("记账归类") = "收停车"
                            
                        ElseIf dr("对方户名").Contains(gsmc) AndAlso dr("摘要").Contains("汇入")   Then
                            dr("记账归类") = "跨行转入"
                        ElseIf dr("对方户名").Contains(gsmc) AndAlso dr("摘要").Contains("转入")   Then
                            dr("记账归类") = "结汇"
                            
                        ElseIf dr("摘要").Contains("往来款")  Then
                            dr("记账归类") = "收往来款"
                            
                        ElseIf dr("摘要").Contains("贷款")  Then
                            dr("记账归类") = "收贷款"
                            
                        ElseIf dr("对方户名").Contains("待结算财政款项") AndAlso dr("摘要").Contains("汇入")  Then
                            dr("记账归类") = "收退税款"
                        ElseIf  dr("摘要").Contains("电子退库")  Then
                            dr("记账归类") = "收退税款"
                        ElseIf dr("对方户名").Contains("有限公司") OrElse dr("对方户名").EndsWith("厂") OrElse dr("对方户名").EndsWith("商行")  OrElse dr("对方户名").EndsWith("经营部")           Then
                            
                            
                            dfhm =  e.DataRow("对方户名").Replace(" ","")
                            dfhm = dfhm.replace("%", "[%]")
                            dfhm = dfhm.replace("*", "[*]")
                            '  MessageBox.Show(dfhm)
                            Dim drw As DataRow = DataTables("往来单位").SQLFind("[单位名称] = '" & dfhm & "'")  '对方户名
                            If drw  IsNot Nothing Then  '如果找到的话
                                If drw("类别").Contains("工厂") Then
                                    dr("记账归类") = "收货款"
                                End If
                            End If
                            
                            
                            
                        ElseIf dr("对方户名").Contains(fddbr)  Then
                            dr("记账归类") = "收往来款"
                        ElseIf dr.Isnull("对方户名") = False  AndAlso  dr("对方户名").length < 4 Then '
                            dr("记账归类") = "收往来款"
                        Else
                            dr("记账归类") = ""
                        End If
                        
                    End If
                Else '不是人民币
                    dfzh =  e.DataRow("对方账号").Replace(" ","")
                    dfzh = dfzh.replace("%", "[%]")
                    dfzh = dfzh.replace("*", "[*]")
                    
                    Dim drh As DataRow = DataTables("银行信息").SQLFind("[账号] Like  " & "'%" & dfzh & "%'")
                    If drh  IsNot Nothing Then  '如果找到的话
                        ' MessageBox.Show("[账号] Like  " & "'%" & dfzh & "%'")
                        bzz =drh("币种")
                    End If
                    If  dr("汇出金额") <> 0 Then
                        
                        
                        If dr("摘要").Contains("转出") AndAlso dr("对方户名").Contains(gsmc) AndAlso bzz.Contains("RMB")  Then
                            dr("记账归类") = "结汇"
                        ElseIf dr("摘要").Contains("手续费") Then
                            dr("记账归类") = "付手续费"
                        ElseIf dr("摘要").Contains("利息")  Then
                            dr("记账归类") = "付利息"
                        ElseIf dr("摘要").Contains("汇率")  Then
                            dr("记账归类") = "结汇"
                            
                        ElseIf dr("摘要").Contains("运费")   Then
                            dr("记账归类") = "付运费"
                        ElseIf dr("对方户名").Contains("货运") OrElse dr("对方户名").Contains("物流") OrElse dr("对方户名").Contains("运输") OrElse dr("对方户名").Contains("船务") OrElse dr("对方户名").Contains("航运") OrElse dr("对方户名").Contains("联运") OrElse dr("对方户名").Contains("快件")  Then
                            dr("记账归类") = "付运费"
                            
                        Else
                            
                            dr("记账归类") = ""
                        End If
                    ElseIf   dr("汇入金额") <> 0 Then
                        If dr("摘要").Contains("汇款") AndAlso dr("对方户名").Contains("国际结算")  Then
                            dr("记账归类") = "收汇"
                            
                        ElseIf dr("摘要").Contains("手续费") Then
                            dr("记账归类") = "收手续费"
                        ElseIf dr("摘要").Contains("利息")  Then
                            dr("记账归类") = "收利息"
                            
                        ElseIf dr("摘要").Contains("申报单")   Then
                            dr("记账归类") = "收汇"
                        ElseIf dr("摘要").Contains("运费")   Then
                            dr("记账归类") = "收运费"
                        ElseIf dr("对方户名").Contains("货运") OrElse dr("对方户名").Contains("物流") OrElse dr("对方户名").Contains("运输") OrElse dr("对方户名").Contains("船务") OrElse dr("对方户名").Contains("航运") OrElse dr("对方户名").Contains("联运") OrElse dr("对方户名").Contains("快件")  Then
                            dr("记账归类") = "收运费"
                            
                        Else
                            
                            dr("记账归类") = ""
                        End If
                        
                    End If
                End If
                
                
                '''''//////////////////////////银行1结束//////////////////////////////////////////////////////////////// //////////////////////////// /////////////////////////////////////////////
                
                
                '''''//////////////////////////银行2开始//////////////////////////////////////////////////////////////// //////////////////////////// /////////////////////////////////////////////
            ElseIf   dr("开户行全称").Contains("宁波银行")  Then
                
                
                '''''//////////////////////////银行2结束//////////////////////////////////////////////////////////////// //////////////////////////// /////////////////////////////////////////////
                
                
            ElseIf   dr("开户行全称").Contains("工商银行")  Then
                
                
              ElseIf   dr("开户行全称").Contains("**银行")  Then
                
                
                '''''//////////////////////////银行1结束//////////////////////////////////////////////////////////////// //////////////////////////// /////////////////////////////////////////////
                
                else

                
                '''''//////////////////////////银行6结束//////////////////////////////////////////////////////////////// //////////////////////////// /////////////////////////////////////////////
                
                
            
            
            
            '/////////////////
            
        End If
End Select





 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107844 积分:548571 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/4/18 20:30:00 [只看该作者]

建议建几个配置表,比如:
币种表
币种类型、币种
RMB、RMB
RMB、rmb
RMB、人民币

记账归类表
币种类型、汇出汇入、摘要关键字、      记账归类
RMB、     汇出、     手续费、             付手续费
RMB、     汇出、     修改托收委托书、 付手续费
RMB、     汇出、     利息、               付利息

然后通过查表获取对应的记账归类值

 回到顶部