以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 当某一列的值,要根据另几列值自动生成时,如果写代码效率最高? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=162938) |
-- 作者:keli0917 -- 发布时间: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 |
-- 作者:有点蓝 -- 发布时间:2021/4/18 20:30:00 -- 建议建几个配置表,比如: 币种表 币种类型、币种 RMB、RMB RMB、rmb RMB、人民币 记账归类表 币种类型、汇出汇入、摘要关键字、 记账归类 RMB、 汇出、 手续费、 付手续费 RMB、 汇出、 修改托收委托书、 付手续费 RMB、 汇出、 利息、 付利息然后通过查表获取对应的记账归类值
|