Adodc1.RecordSource = "SELECT id1,id2,toid2,日期,sum(数量) as 数量,价格 From temp where temp.日期=#" & DTPicker1.Value & "# and temp.id2=" & c(Combo1.ListIndex) & " GROUP BY id1,id2,toid2,日期,价格"
        Adodc1.Refresh
        Print Adodc1!id1不知道为什么又报错!提示在Print Adodc1!id1
是不是因为用了GROUP BY 。
整个程序为        
        dbr.Open "select * from 流水单", dbc, 3, 3
        Do While Adodc1.Recordset.EOF = False
            dbr.AddNew Array(dbr!ID1, dbr!ID2, dbr!toID2, dbr!日期, dbr!价格, dbr!数量), Array(Adodc1!ID1, Adodc1!ID2, Adodc1!toID2, Adodc1!日期, Adodc1!价格, Adodc1!数量)
            dbr.Update
            Adodc1.Recordset.MoveNext
        Loop其意图为将表TEMP的记录合并插入流水单这张表,然后删除TEMP表

解决方案 »

  1.   

    不知道为什么又报错!提示在Print Adodc1!id1
    是不是因为用了GROUP BY 。
    ---------
    debug.print adodc1!id1????
      

  2.   

    不知道上面这位仁兄是否是问DEBUG.print的效果??一样地!!
    请各位在看看有什么想法!
      

  3.   

    1
    Print Adodc1.Recordset!id12
    >        dbr.Open "select * from 流水单", dbc, 3, 3
    >        Do While Adodc1.Recordset.EOF = False
    >            dbr.AddNew Array(dbr!ID1, dbr!ID2, dbr!toID2, dbr!日期, dbr!价格, dbr!数量), Array(Adodc1!ID1, Adodc1!ID2, Adodc1!toID2, Adodc1!日期, Adodc1!价格, Adodc1!数量)
    >            dbr.Update
    >            Adodc1.Recordset.MoveNext
    >        Loop这样做:Adodc1.Recordset.ActiveConnection.Execute "Insert Into 流水单 SELECT id1,id2,toid2,日期,sum(数量) as 数量,价格 From temp where temp.日期=#" & DTPicker1.Value & "# and temp.id2=" & c(Combo1.ListIndex) & " GROUP BY id1,id2,toid2,日期,价格"Adodc1.Recordset.ActiveConnection.Execute "Drop Table temp"
      

  4.   

    哦竟然犯了个这样的错误! Adodc1.Recordset!id1!!
     谢谢你的解决方法,但是还是有问题啊!——我只想删除temp的一部分已经插入记录哦!
            Adodc1.Recordset.ActiveConnection.Execute "delete From temp where temp.日期=#" & DTPicker1.Value & "# and temp.id2=" & c(Combo1.ListIndex)
    这样的代码又通不过!在厚颜无耻的问一下ADODB怎么直接用ActiveConnection.Execute还有ActiveConnection.Execute和Adodc1.RecordSource会有什么区别
      

  5.   

    Adodc1.Recordset.ActiveConnection.Execute "delete From temp where temp.日期=#" & DTPicker1.Value & "# and temp.id2=" & cstr(Combo1.ListIndex)没有 c 这个函数,是 cstr。>ADODB怎么直接用ActiveConnection.Execute还有ActiveConnection.Execute和Adodc1.RecordSource会有什么区别Execute 是 Connection 对象的方法,因此在使用 Adodc 控件的情况下,可以引用Adodc1.Recordset.ActiveConnection,因为它这里没有其它的 Connection 对象的引用方法。当然,如果你另外声明并打开一个 Connection 对象也是可以的。Dim cn As ADODB.ConnectionSet cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\yourDB.mdb"
    cn.Execute "......"Adodc1.RecordSource 是一个记录集 Recordset 对象的接口。例如:Dim rs As ADODB.Recordset
    rs.Open "SELECT * FRONM yourtable", cn
    Set Adodc1.RecordSource = rs注意:Connection 是用来连接一个数据库,Recordset 是用来连接数据表或查询、视图。一个 Connection 上可以打开多个 Recordset。
      

  6.   

    由于我没说清楚,c()我已经定义了数组,然后用combox选择。所以那个地方是没有问题,
    但是还是不能进行删除!
    报错是——由于将在索引,主关键字,或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复的数据的字段中的数据,删除索引或重新定义以允许重复的值并再试一次可是我表本来就有重复的值的啊
    上面的说明比系统帮助容易看懂,我对这几个参数一直就是抄书上的用,没有深刻的理解,现在好多了。
    OF123看了一下你给别人的回答,很觉得你应该编写一写书,市面的书都很垃圾!(也有可能我自己比较垃圾,大部分觉得写的不到点,很难系统的学习!)