设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2826|回复: 10
打印 上一主题 下一主题

[查询] 金税接口文本的格式拆分

[复制链接]
跳转到指定楼层
1#
发表于 2009-5-25 19:42:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
导出公司ERP数据库中的销售订单数据后,通过Access处理,转换成金税开票要求的格式,
现在遇到一个问题是:ERP中直接导出的一个订单的其中一个或多个物料开票金额>999999.99,而金税要求的最大金额是<100W,所以要把ERP中的订单中的物料行按金额拆分成多行! 要求请看附件图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2009-5-25 20:08:09 | 只看该作者
本帖最后由 todaynew 于 2009-5-25 20:45 编辑

用记录集解决比较方便。

.....
if me.金额.value>999999.99 then
   x=me.金额.value
   y=me.数量.value
   j=int(me.金额.value/999999.99)
   for i=1 to j+1
       rs.addnew
       rs("单号")=me.单号.value
       rs("名称描述")=me.名称描述.value
       rs("单位")=me.单位.value
       rs("客户材料")=me.客户材料.value
       if i<=j then
          rs("数量")=me.数量.value * 999999.99 / me.金额.value
          rs("金额")=999999.99
       else
          rs("数量")=y
          rs("金额")=x
       end if
       rs.Update
       x = x - rs("金额")
       y = y - rs("数量")
   next
end if
....
3#
 楼主| 发表于 2009-5-25 22:22:09 | 只看该作者
如果要同时拆分一个订单多行>100W的 or 多个订单多行>100W  改如何操作?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
4#
 楼主| 发表于 2009-5-26 12:34:44 | 只看该作者
再看看
5#
发表于 2009-5-26 13:14:36 | 只看该作者
一两句话似乎说不大清楚,要不你把实例传上来,我帮你写写试试。
6#
 楼主| 发表于 2009-5-26 13:17:48 | 只看该作者

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
7#
 楼主| 发表于 2009-5-26 19:18:10 | 只看该作者
ffff
8#
发表于 2009-5-26 19:20:38 | 只看该作者
本帖最后由 todaynew 于 2009-5-26 20:00 编辑
38216
rainless_9 发表于 2009-5-26 13:17





Private Sub 拆分_Click()
Dim rs As New ADODB.Recordset
Dim sql1 As String, sql2 As String
Dim i As Long, m As Long, n As Long
Dim x As Double, y As Double, Q As Double, r As Double
Q = 999999.99
sql1 = "select * from 订单明细 where 单号='" & Me.单号.Value & "'"
rs.Open sql1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
sql2 = "DELETE * FROM 临时表"
CurrentDb.Execute sql2
For i = 1 To rs.RecordCount
    If rs("金额") > Q Then
        m = Int(rs("金额") / Q)
        r = Round(rs("金额") / (m + 1), 2)
        x = rs("数量")
        y = rs("金额")
        For n = 1 To m
            sql2 = "INSERT INTO 临时表 ( 单号, 名称, 单位, 数量, 金额 ) "
            sql2 = sql2 & "VALUES ('" & rs("单号") & "','" & rs("名称") & "','" & rs("单位") & "'," & Round(rs("数量") * r / rs("金额"), 0) & "," & r & ")"
            CurrentDb.Execute sql2
            x = x - Round(rs("数量") * r / rs("金额"), 0)
            y = y - r
        Next
        sql2 = "INSERT INTO 临时表 ( 单号, 名称, 单位, 数量, 金额 ) "
        sql2 = sql2 & "VALUES ('" & rs("单号") & "','" & rs("名称") & "','" & rs("单位") & "'," & x & "," & y & ")"
        CurrentDb.Execute sql2
    Else
        sql2 = "INSERT INTO 临时表 ( 单号, 名称, 单位, 数量, 金额 ) "
        sql2 = sql2 & "VALUES ('" & rs("单号") & "','" & rs("名称") & "','" & rs("单位") & "'," & rs("数量") & "," & rs("金额") & ")"
        CurrentDb.Execute sql2
    End If
    rs.MoveNext
Next
Me.临时子窗体.Form.Requery
rs.Close
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
9#
发表于 2009-5-26 20:36:37 | 只看该作者
非常有趣,让我下了学学。
10#
 楼主| 发表于 2009-5-26 22:22:45 | 只看该作者
能不用窗体显示吗,最好直接拆分表中的数据到新表,因为并不需要点击后一个一个单号的拆!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-14 10:39 , Processed in 0.109222 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表