我发现别人的自定义函数没有指定参数类型,而我建立的必须写上参数类型functoin cardpay(cardid,paymoney)
 var fun_sql : string;
 begin
   fun_sql='update card set cardmoney=cardmoney-'+paymoney+' where cardid='+cardid+''
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add(fun_sql);
   ADOQuery1.Open;
 end上面代码总是报错。 

解决方案 »

  1.   

    带上参数类型有什么困难吗?
    另:执行Update语句,没有返回值,应用ExecSql代替Open
      

  2.   

    fun_sql='update card set cardmoney=cardmoney-'+paymoney+' where cardid='+cardid+'' 
      ADOQuery1.Close; 
      ADOQuery1.SQL.Clear; 
      ADOQuery1.SQL.Add(fun_sql); 
      ADOQuery1.Open; 
    红色部分:
    第一,要检查类型是否错误
    第二,最好加个括号
    蓝色部分:
    改成ADOQuery1.ExecSQL;
      

  3.   

    functoin cardpay(cardid,paymoney)  提示:
      [Error] uPulicFun.pas(11):missing parameter type
    另:
    paymoney 就整数
      

  4.   

     fun_sql:='update perusercard set cashSmoney =cashSmoney-'+IntToStr(Smoney)+', cashSmoney=cashLmoney-'+IntToStr(Lmoney)+'';怎么有提示:
    undeclared identifier: 'inttostr' inttostr是delhpi 自带函数呀?
      

  5.   

    functoin cardpay(cardid,paymoney) 
    才发现你这儿还有错误
    functoin cardpay(cardid,paymoney:integer); 
      

  6.   

    又忽略了
    functoin cardpay(cardid,paymoney:integer):integer; 
      

  7.   

    看你的函数没有返回值,所以还不如直接定义成过程
    procedure cardpay(cardid,paymoney:integer); 
      

  8.   

    谢谢。试了多遍,发觉这样可以通过: functoin cardpay(var cardid,paymoney):integer;   没有var 就不行,但在前面定义过cardid的