Dim conn1 As New Connection
    conn1.Open "DSN=DSNwb;uid=admin;pwd=x819hp24;database=wb"
    
  Dim 单号 As New ADODB.Parameter
    Dim rs1 As New ADODB.Recordset
    Dim Cmd1 As New ADODB.Command
    Set Cmd1.ActiveConnection = conn1
    Cmd1.CommandType = adCmdStoredProc
     
      Set 单号 = Cmd1.CreateParameter(, adBSTR, adParamInput)
      
      Cmd1.Parameters.Append 单号
     
    单号.Value = Trim(Mid((Label7.Caption), 1, 1) & (Mid((Label7.Caption), 2, 6) - 1))
    
    Cmd1.CommandText = "aa"
    
     Set rs1 = Cmd1.Execute(numrec)
    报表.show
'我的报表是datareport,数据源使用的是存储过程"aa"

解决方案 »

  1.   

    服务器提示“AAA”需要参数,哪里有“AAA”?
      

  2.   

    是不是你的数据库中涉及到了AAA?
      

  3.   

    不好意思,本来我的存储过程是其它名字,因为太急了,所以就写了AAA,也就是代码里面的"aa",我的存储就有一个,里面只是需要一个参数,我已经传递了,可还提示说需要参数,不知道是怎么回事.
      

  4.   

    Cmd1.CommandText = "call aa (参数)"
    是用ODBC和OLEDB是有区别的:)
      

  5.   

    我用的是ODBC,楼上的我试了,提示是‘语法错误或访问错误'
      

  6.   

    呀!numrec?哦?我也不在清楚,我只知道它是个默认参数
      

  7.   

    Set 单号 = Cmd1.CreateParameter(, adBSTR, adParamInput)
    中的第一个参数你怎么空着
    需要你写的存储过程的参数名称
      

  8.   

    我在下面有  Cmd1.Parameters.Append 单号 传递呀,可以忽略的,并且用此方式在其它程序里试过,是可以的
      

  9.   

    高手们怎么不说话呀?这是我在CSDN问的第一个问题哦,不会让我就此结贴吧?
      

  10.   

    numrec有问题吧对于按行返回的命令字符串: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 属性指定的初始数量之后的剩余行使用异步提取。 
      

  11.   

    你的存储过程用的一个参数 应当作为CreateParameter 的第一个参数。
    例如:
    我有一个存储过程
    create proc sunny (@x int) as select * from orders where employeeid=@x 
    有一个参数为x
    那我在调用的时候就要这样Set pa = com.CreateParameter("@x", adInteger, adParamInput)
    com.Parameters.Append pa