在CONN。EXECUTE(S1,C,ADCMDEXE)代碼中把ADCMDEXE删除

解决方案 »

  1.   

    改成这样:你测试一下,我是随手写的
    Dim conn As New adodb.ConnectionDim s1 As String
    Dim s As String
    Dim c As adodb.Recordset
    s1 = "select * from [20021106] where A=123"
    Set c = conn.Execute(s1)
    If c.Fields(0) > 0 Then
       MsgBox "已完成"
    Else
       s = "insert into [20021106](a,b,c) values('" & A变量 & "'," & B变量 & "," & C变量 & ")"
       conn.Execute s
    End If
    //仔细看一下,答案在下面
    Execute 方法 (ADO Connection)
          执行指定的查询、SQL 语句、存储过程或特定提供者的文本等内容。语法对于非按行返回的命令字符串:connection.Execute CommandText, RecordsAffected, Options 对于按行返回的命令字符串:Set recordset = connection.Execute (CommandText, RecordsAffected, Options)返回值返回 Recordset 对象引用。参数CommandText    字符串,包含要执行的 SQL 语句、表名、存储过程或特定提供者的文本。RecordsAffected    可选,长整型变量,提供者向其返回操作所影响的记录数目。Options    可选,长整型值,指示提供者应如何计算 CommandText 参数,可为下列值:常量 说明 
    AdCmdText 指示提供者应按命令的文本定义计算 CommandText。 
    AdCmdTable 指示 ADO 应生成 SQL 查询以便从 CommandText 命名的表中返回所有行。 
    AdCmdTableDirect 指示提供者应从 CommandText 命名的表中返回所有行。 
    AdCmdTable 指示提供者应按表名计算 CommandText。 
    AdCmdStoredProc 指示提供者应按存储过程计算 CommandText。 
    AdCmdUnknown 指示 CommandText 参数中的命令类型未知。 
    adAsyncExecute 指示命令应该异步执行。 
    adAsyncFetch 指示对在 CacheSize 属性指定的初始数量之后的剩余行使用异步提取。 
    本列表中前 4 个常量的详细说明请参见 CommandType 属性。说明使用 Connection 对象的 Execute 方法,可执行任何在指定连接的 CommandText 参数中传送给方法的查询。如果 CommandText 参数指定按行返回的查询,执行产生的任何结果将存储在新的 Recordset 对象中。如果命令不是按行返回的查询,则提供者返回关闭的 Recordset 对象。返回的 Recordset 对象始终为只读、仅向前的游标。如需要具有更多功能的 Recordset 对象,应首先创建具有所需属性设置的 Recordset 对象,然后使用 Recordset 对象的 Open 方法执行查询并返回所需游标类型。CommandText 参数的内容对提供者是特定的,并可以是标准的 SQL 语法或提供者支持的任何特殊命令格式。该操作完成后将产生 ExecuteComplete 事件。
      

  2.   

    或者这样
    Set c = conn.Execute(s1,,AdCmdText)
      

  3.   

    Syntax:
    For a row-returning Command:
    Set recordset = command.Execute(RecordsAffected, Parameters, Options)
    For a non–row-returning Command:
    command.Execute RecordsAffected, Parameters, Options意思是没有返回值的时候不要加括号,所以:
    conn.Execute(S1,C,adcmdexe)应改为
    conn.Execute S1, C, adcmdexe
    另外adcmdexe是什么,好象没有这个参数,是不是应该是这样的:
    conn.Execute S1, C, adCmdText
      

  4.   

    老兄,我在你的贴出的源代码上修改过了,你要回答的人给出连接字符串,我看没有这个必要吧?!你的代码都写到这儿了,不行连连接字符串都没有写好吧??
    :)S1="select * from [20021106] where A=123"
    conn.Execute S1,C,AdCmdText
    if C>0 then
       msgbox "已完成"
    else
       S="insert into [20021106](a,b,c) values('" & A变量 & "'," & B变量 & "," & C变量 & ")"
       conn.execute S
    end if
      

  5.   

    a,b,c三个字段的类型是什么啊,估且都当作是字符型吧!
    还有你的数据库是什么类型啊?先当作是SQL吧!
        Dim strSql As String
        Dim cnn1 As ADODB.Connection
        Dim rst As ADODB.Recordset
        Dim strCnn As String   ' 打开连接。
          strCnn = "Provider=sqloledb;" & _
          "Data Source=机器名;Initial Catalog=数据库名;User  Id=sa;Password=; "
       Set cnn1 = New ADODB.Connection
       cnn1.Open strCnn
       
       ' 打开表。
       Set rst = New ADODB.Recordset
       rst.CursorType = adOpenKeyset
       rst.LockType = adLockOptimistic
       strSql = "select * from 表名 where a='123'"
       If rst.State = 1 Then rst.Close
       rst.Open strsql, cnn1
       If rst.RecordCount > 0 Then
           MsgBox "完成"
       Else
           strSql = "insert into 表名(a,b,c) values('123','','');"
           cnn1.execute strSql
        End If我调试过了
      

  6.   

    同意 smalldelube(雷的影子) 的方法他的应该没有问题了!
    如果要返回值,最好用adodb.recordset
      

  7.   

    好象还是有问题,我用的ACCESS的数据库
      

  8.   

    好象还是有问题,我用的ACCESS的数据库
    好象还是有问题,我用的ACCESS的数据库
    好象还是有问题,我用的ACCESS的数据库
    好象还是有问题,我用的ACCESS的数据库
    好象还是有问题,我用的ACCESS的数据库
      

  9.   

    在我的代码中改成这样,判断的时候,只要返回记录数就行了,没有必要全选中的~~
    s1 = "select * from [20021106] where A=123"
    Correct To This
    s1 = "select Count(*) from [20021106] where A=123"