本机上有1个用Access2000创建的数据库文件:D:\db1.mdb  其中有2张数据表(table1和table2):
table1
姓名 日期 个数
A 2006-11-02 5
B 2006-11-04 20
B 2006-11-05 20
C 2006-11-12 30
A 2006-11-13 25table2 (初始为空表)
名称 月份 总数现希望对table1中各个“姓名”的“个数”做一总计,并将结果记录到table2中,完成后的table2应为如下:
table2
姓名 月份 总数
A 11 30
B 11 40
C 11 30table1中有多少个名称种类,table2中就创建多少个记录。另,希望根据table1中的日期在table2中创建相应的月份。由于小弟是VB新手,希望能给出较为详细的代码。另,希望使用ADO控件或代码来解决这个问题。谢谢大家了!

解决方案 »

  1.   

    Dim myAdo As New ADODB.Connection
    myAdo.ConnectionString = "數據庫連接字符串"
    myAdo.Open
    myAdo.Execute "Delete From Table2" '刪除以前table2的紀錄
    myAdo.Execute "Insert Into Table2(姓名,月份,總數)Select 姓名,Month(日期),Sum(个数) From Model Group By 姓名,Month(日期)"
    myAdo.Close
      

  2.   

    當然了 如果你想怎加判斷條件也也可以
    不如你只想導入11語的
    那麽
    myAdo.Execute "Insert Into Table2(姓名,月份,總數)Select 姓名,Month(日期),Sum(个数) From Model Where Month(日期)='11' Group By 姓名,Month(日期)"
    就可以了
      

  3.   

    试了一下 报“INSERT INTO 语句的语法错误”
    ?:程序怎么知道是从table1中选择数据,是不是from后面要跟table1 
    另我试了:myAdo.Execute "Insert Into Table2(姓名,月份,总数)Select 姓名,Month(日期),Sum(个数) From Table1 Model Group By 姓名,Month(日期)" 报同样的错如不提取月份:myAdo.Execute "Insert Into Table2(姓名,月份,总数)Select 姓名,日期)Sum(个数) From Model Group By 姓名,日期" 可还是报“INSERT INTO 语句的语法错误”我用的是VB6 SP6 帮忙看看可能是什么原因啊?谢谢!
      

  4.   

    你是直接把我的代碼拷貝的嗎
    那肯定報錯了(是中文標點 改用引文的 你沒有看到你的Table2後面的(很粗嘛!
    可能是這樣 sql語句沒有問題 昨天我都測了
      

  5.   

    我的是因爲 我的access數據庫的表和你的字段有些出入 所以該的時候不小心用了(
      

  6.   

    myAdo.Execute "Insert into table2(姓名,月份,总数) select 姓名,日期,sum(个数) from table1 group by 姓名,日期"运行后table2变成:
    姓名  月份  总数
    A     11    5
    A     11    25
    B     11    20
    B     11    20
    C     11    30并没有出现巴所有相同姓名的记录合并求和,不知道是哪里出了问题?
      

  7.   

    检查了 没有任何问题 不知道为什么楼主没有用month(日期)而是直接用的日期?
      

  8.   

    噢 你的日期用的是2006-11是不是 你的类型是不是文本阿
    用这个看看SELECT right(日期,2),姓名,Sum(个数) From Model Group By right(日期,2),姓名
    或者你在access中策是这个Select 看看你的记录用是不是有特殊纪录 我这里运行完全正确
      

  9.   

    万分感谢mustudent(小生--蚕豆<為者常成,行者常至>) !!!我刚才试成功了,最后想再问一下:如何让table2的结果按照总数而不是姓名来排序,谢谢!
      

  10.   

    這個就是在TABLE2在FROM裏面現實的時候 SQL這樣寫"sELECT * FROM TABLE2 ORDER BY 總數"
      

  11.   

    一定
    我在最后写了:
    myAdo.Execute " select * from table2 order by 总数"myAdo.Close可运行后查看数据库发现还是和前面一样,还是按姓名排的序,select语句会将排序后的结果保存在数据库吗?