设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1234
返回列表 发新帖
楼主: laomms
打印 上一主题 下一主题

[Access本身] access求和

[复制链接]
31#
发表于 2014-1-17 17:40:57 来自手机 | 只看该作者
我做了一个查询,能列出所有两单或三单的组合,包括ID号,有个小问题,就是有些组合是重复的,暂时不知道怎么去掉,比如ID12,18,29合计5000远,29,12,18也是5000,结果都显示出来了来自: Android客户端

点评

SQL语句on ID3>ID2,ID2>ID1,这样可以去掉重复项  发表于 2014-1-21 10:43
32#
 楼主| 发表于 2014-1-17 17:57:18 | 只看该作者
tzh1600 发表于 2014-1-17 18:51
不用,建立一个汇总查询做为数据源即可,原来的ID改用BILL

做了汇总查询后(比如:sql2),里面的子项都是已经是按单号排序的汇总后的数据了,但是具体如何引进汇总后的数据,我直接用sql2替代原始的costmer表出错。
33#
发表于 2014-1-17 19:33:57 | 只看该作者
这是查询语句代码,有些重复的不知道怎么去掉,你试试看
select * from (SELECT a.ID & "+" & b.ID & "+" & c.ID as id,a.strname,a.amount+b.amount+c.amount as amount
FROM Costmer a,costmer b,costmer c
where (a.id<>b.id and a.id<>c.id and b.id<>c.id) and (a.strname=b.strname and a.strname=c.strname and b.strname=c.strname)) z
where amount=5000


我只选取了3个单子,如果有2个单子你可以用union按这个思路再加一行代码
34#
 楼主| 发表于 2014-1-17 20:13:32 | 只看该作者
本帖最后由 laomms 于 2014-1-17 22:25 编辑



数据库中的144这两单其实是一单,金额是按单号分的,所以144的这单的金额实际是1200. 而且只能做为三单中的其中一单,所以统计前得先按单号汇总一下金额才能做为初步的数据。

本帖子中包含更多资源

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

x
35#
 楼主| 发表于 2014-1-18 09:19:13 | 只看该作者
本帖最后由 laomms 于 2014-1-18 12:15 编辑

汇总的问题还是解决不了!
目前用新建表然后删除的方法:
sql1 = "select BILL, strName, sum(amount) as 金额, IFPAID from [Costmer] where IFPAID like 'NotPaid' group by strName,BILL"
sql = " SELECT BILL,strName,金额,  IFPAID  INTO Costmer_bake FROM (" & sql1 & ")"
cnn.Execute (sql)
然后从新表Costmer_bake中选择数据
...


用完后删除
    sql = "DROP TABLE " & "Costmer_bake"
    cnn.Execute (sql)


但是数据库大小都会增的很大,每次得压缩一次。



36#
发表于 2014-1-21 10:38:18 | 只看该作者
本帖最后由 tzh1600 于 2014-1-21 10:39 编辑
laomms 发表于 2014-1-18 09:19
汇总的问题还是解决不了!
目前用新建表然后删除的方法:
sql1 = "select BILL, strName, sum(amount) as ...


看双数连续查询和三数连续查询,ACCESS建立查询就可以,不要建新表

本帖子中包含更多资源

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

x
37#
 楼主| 发表于 2014-1-22 09:52:57 | 只看该作者
tzh1600 发表于 2014-1-21 12:38
看双数连续查询和三数连续查询,ACCESS建立查询就可以,不要建新表

非常感谢tzh1600的帮助,但是我是想要在那个合计查询之前先汇总一下,然后再列出所有的三单记录。
我现在用新建表,然后删除的方法,不知道有没有其他办法。

  1. Private Sub CommandButton1_Click()
  2. Sheet1.Range("A1:L100").ClearContents
  3. Dim sql1, sql2, sql
  4. Dim sum, sName
  5. cnn.Open "Provider=Microsoft.Jet.Oledb.4.0;data Source=" & ThisWorkbook.Path & "\data.MDB "
  6. sql1 = "select 销售清单号,公司名称,sum(销售金额) as 金额, 付款情况 from [XSD] where 付款情况 like 'NotPaid' group by 公司名称,销售清单号,付款情况"
  7. sql = " SELECT 销售清单号,公司名称,金额,付款情况 INTO XSD_bake FROM (" & sql1 & ")"
  8. cnn.Execute (sql)
  9. sql = "SELECT XSD_bake.公司名称, XSD_bake.金额, A.金额, B.金额, C.金额, XSD_bake.金额 + A.金额+ B.金额+ C.金额 AS hj, XSD_bake.销售清单号, A.销售清单号, B.销售清单号, C.销售清单号, XSD_bake.付款情况 FROM ((XSD_bake INNER JOIN XSD_bake AS A ON XSD_bake.公司名称 = A.公司名称) INNER JOIN XSD_bake AS B ON A.公司名称 = B.公司名称) INNER JOIN XSD_bake AS C ON B.公司名称 = C.公司名称 WHERE (XSD_bake.金额 + A.金额 + B.金额+ C.金额 = 6000) And (A.销售清单号 > XSD_bake.销售清单号) And (B.销售清单号 > A.销售清单号) And (C.销售清单号 > B.销售清单号)  ORDER BY XSD_bake.公司名称, XSD_bake.销售清单号;"
  10. rst.Open sql, cnn, adOpenKeyset, adLockOptimistic
  11.     If rst.EOF = False Then
  12.         For i = 1 To rst.RecordCount
  13.               Sheet1.Cells(i, 1) = rst.Fields(0).Value
  14.               Sheet1.Cells(i, 2) = rst.Fields(1).Value
  15.               Sheet1.Cells(i, 3) = rst.Fields(2).Value
  16.               Sheet1.Cells(i, 4) = rst.Fields(3).Value
  17.               Sheet1.Cells(i, 5) = rst.Fields(4).Value
  18.               Sheet1.Cells(i, 6) = rst.Fields(5).Value
  19.               Sheet1.Cells(i, 7) = rst.Fields(6).Value
  20.               Sheet1.Cells(i, 8) = rst.Fields(7).Value
  21.               Sheet1.Cells(i, 9) = rst.Fields(8).Value
  22.               Sheet1.Cells(i, 10) = rst.Fields(9).Value
  23.               Sheet1.Cells(i, 11) = rst.Fields(10).Value
  24.           rst.MoveNext
  25.       Next i
  26.   End If
  27.   rst.Close: Set rst = Nothing
  28.   sql = "DROP TABLE " & "XSD_bake"
  29.   cnn.Execute (sql)
  30.   cnn.Close: Set cnn = Nothing
  31. End Sub
复制代码


本帖子中包含更多资源

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

x
38#
发表于 2014-1-22 15:04:05 | 只看该作者
laomms 发表于 2014-1-22 09:52
非常感谢tzh1600的帮助,但是我是想要在那个合计查询之前先汇总一下,然后再列出所有的三单记录。
我现 ...


肯定是要先汇总的,我的例子里的SumCostom查询就是
39#
 楼主| 发表于 2014-1-23 09:13:18 | 只看该作者
如果可以的话把37楼附件里的代码改下,改成不用在access中新建表的方法。
40#
发表于 2014-1-26 11:15:53 | 只看该作者
其实我的方法就是在ACCESS里建立汇总查询,然后以汇总后的查询为数据源,找出总额符合要求且连续的单子(也是通过建立查询的方式实现),实现的方法在我36楼的附件里都体现了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-17 07:08 , Processed in 0.090572 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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