先我的一个表中有两个字段,一个是NO 一个是wordtemplete(类型image)
我在窗体中加了adoconnection,adostoredproc,datasource和一个button.
我写了一个可以读入和读出sql2000中image字段的word文档或者bmp图片的存储过程,可当我在object inspector里对存储过程中各变量附值后,改变adostoredproc.active:=true时,弹出一条出错消息“xpsql.cpp:错误997来自GetProxyAccount(第472行)”,请问各位大哥知道这是哪出错了吗?后来改用代码附值
存储过程在查询分析器内运行正常。
存储过程:CREATE PROCEDURE sp_textcopy ( 
  @srvname    varchar (30), 
  @login      varchar (30), 
  @password    varchar (30), 
  @dbname      varchar (30), 
  @tbname      varchar (30), 
  @colname    varchar (30), 
  @filename    varchar (30), 
  @whereclause varchar (40), 
  @direction  char(1)) 
AS 
DECLARE @exec_str varchar (255) 
SELECT @exec_str = 
        'textcopy /S ' + @srvname + 
        ' /U ' + @login + 
        ' /P ' + @password + 
        ' /D ' + @dbname + 
        ' /T ' + @tbname + 
        ' /C ' + @colname + 
        ' /W "' + @whereclause + 
        '" /F ' + @filename + 
        ' /' + @direction 
EXEC master..xp_cmdshell @exec_str GO
  
代码如下:procedure TForm1.Button1Click(Sender: TObject);
begin
 with adostoredproc1 do
 Close;
 Params.ParamByName('@srvname').Value:='servename';
 Params.ParamByName('@login').Value:='username';
 Params.ParamByName('@password').Value:='password';
 Params.ParamByName('@dbname').Value:='databasename';
 Params.ParamByName('@tbname').Value:='tablename';
 Params.ParamByName('@colname').Value:='wordtemplete';
 Params.ParamByName('@filename').Value:='c:\12.doc';
 Params.ParamByName('@whereclause').Value:='where no=1';
 Params.ParamByName('@direction').Value:='I';
 Prepared:=true;
 Open;
end;
执行时出错:[Error] stro.pas(33): Undeclared identifier: 'Params'
请各位大哥指点,在线等,解决马上给分!

解决方案 »

  1.   

    ADOStoredProc1.Parameters.ParamByName('@srvname').Value:='servename';
      

  2.   

    还是不行,又有出错
    [Error] stro.pas(33): Missing operator or semicolon
    [Error] stro.pas(34): Object or class type required
      

  3.   

    现在需要还加入一条sql语句:insert tablename values(1,0x)
    其中“1”为no=1
    可用storedproc怎么写才能加入这条初始化的sql语句呢?
    现在的问题是怎么写才能调用这个存储过程。
    高手大哥们,帮帮忙吧。
      

  4.   

    sorry,出现一个低级错误,少写了begin...end,但是运行后,点击按扭就又出现了,最开始的错误消息。“xpsql.cpp:错误997来自GetProxyAccount(第472行)”,可我不知道这是哪里的问题
      

  5.   

    给存储过程参数的DateType属性指定数据类型试试
      

  6.   

    这样当然会出现错误信息,Params并没有在你认为的程序内
    with ... do
    begin
      ...
    end;
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with adostoredproc1 do
        begin   //加上这句
     Close;
     Params.ParamByName('@srvname').Value:='servename';
     Params.ParamByName('@login').Value:='username';
     Params.ParamByName('@password').Value:='password';
     Params.ParamByName('@dbname').Value:='databasename';
     Params.ParamByName('@tbname').Value:='tablename';
     Params.ParamByName('@colname').Value:='wordtemplete';
     Params.ParamByName('@filename').Value:='c:\12.doc';
     Params.ParamByName('@whereclause').Value:='where no=1';
     Params.ParamByName('@direction').Value:='I';
     Prepared:=true;
     Open;
         end;    //加上这句
    end;