把ADOSPNewCustomID.Parameters.ParamByName('@NewID').value:='';去掉试试。
  

解决方案 »

  1.   

    为什么还在问啊,回答你第三次了!create  procedure proc_生成用户编号
      @NewID char(6) output
    as 
      declare @maxNo  char(6)
      select @maxNo=max(用户编号) from 用户信息表 
      if @maxNo is not null 
        begin
          set @NewID=@maxNo +1
          return 0--加上这一句!!!!!!!!
        end
      else
          set @NewID='100001'
      return 0 --加上这一句!!!!!!!!
    GO  try
        with myStoredProc do
        begin
          ProcedureName := 'proc_生成用户编号';
          Parameters.Clear;
          Parameters.AddParameter;
          Parameters[0].Name := 'Return';
          Parameters[0].Direction := pdReturnValue;
          Parameters[0].DataType := ftInteger;      Parameters.AddParameter;
          Parameters[1].Name := '@NewID';
          Parameters[1].Direction := pdInputOutput;
          Parameters[1].DataType := ftString;
          Parameters[1].Size := 6;      ExecProc;
          if Parameters[0].Value=0 then
          begin
            Edit1.Text := Parameters[1].Value;
          end;
        end;
      Except
        On E:EADOError do
        begin
          Application.MessageBox(Pchar('由于以下原因,操作失败:'+E.message),'出错',mb_OK+Mb_IconError);
          Exit;
        end;
      end;
      

  2.   

    set @NewID=@maxNo +1有问题啊!
    char类型加1是什么啊?  declare @maxNo int
      select @maxNo=convert(int,isnull(max(用户编号),'100001')) from 用户信息表 
      set @NewID := convert(char(6),@maxNo)
      return 0
      

  3.   

    liang_z(千山一刀之忍者神龟) !感谢你的指导!谢谢!刚才我自己有一点事,所以呢?就没看见你的回答!谢谢您了!