我在使用TADOQuery做查詢時的參數是如下設定的
Parameter.ParamByName('fname').Value:=Edit1.text;
問題出現於,如果Edit1.text是空值的話
執行SQL語句,則報非法精度數值錯誤.請教各位大哥如何解決.不可能所有的欄位都要user必填吧
謝謝!

解决方案 »

  1.   

    ADOQuery1.ParamByName('fname').AsString := Edit1.text;
    这样就可以了
      

  2.   

    if trim(edit1.text):='' then Parameter.ParamByName('fname').Value:='0'
    else Parameter.ParamByName('fname').Value:=Edit1.text;
      

  3.   

    Parameter.ParamByName('fname').asstring:=Edit1.text;
      

  4.   

    IF Trim(Edit1.Text)='' then
      Parameter.ParamByName('fname').Value:= 0
    Else
     Parameter.ParamByName('fname').Value:= StrToInt(Trim(Edit1.text));
      

  5.   

    ADOQuery1.ParamByName('fname').AsString := Edit1.text;
    上面的寫法好象是不對的.
    用IF Trim(Edit1.Text)='' then
      Parameter.ParamByName('fname').Value:= 0是不是太麻煩了,一個project中的語句都要這樣寫是不是太浪費時間了有沒有更好的辦法
      

  6.   

    你应该专门写个函数进行对字符串的处理
    function TxtToNum(const sTxt: String): Extended;
    begin
      Result := 0;
      try
        Result := StrToFloat(Trim(sTxt));
      except
      end;
    end;使用的时候
    Parameter.ParamByName('fname').Value:=TxtToNum(TEdit1.text);
      

  7.   

    我找到方法了;
    function TxtToNum(const sTxt: String): string;
    begin
      if stxt='' then
      begin
        Result:=#0;//可以是一些特殊字符如#10也可以
      end
      else
      begin
        Result:=Stxt;
      end;
    end;