错误提示:
class EDBEngineError with message 'General SQL error,[Microsoft][ODBC SQL Server Deriver][SQL server]将数据类型varchar转换为numeric时出错。'语句为: 
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * from docu_table where  j_num= '+trim(Edit2.Text));//j_num为varchar型
                
Query1.Prepare;
Query1.Open;

解决方案 »

  1.   

    是不是应该这样啊 j_num='''+trim(edit1.text)+'''  我在delphi5.0中是这样写的。
    不可能只用一对单引号的。
      

  2.   

    不是,应该是:
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from docu_table where  j_num='''+trim(Edit2.Text)+'''');//j_num为varchar型
                    
    Query1.Prepare;
    Query1.Open;注意,最后是四个单引号!
    或者也可以写成:Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from docu_table where  j_num=:j');//j_num为varchar型
    query1.Parameters.ParamByName('j').value:=trim(edit1.text);
                    
    Query1.Prepare;
    Query1.Open;
      

  3.   

    楼上的绝对正确。在这里我帮忙解释一下:在表示字符串一对单引号中,用两个相连的单引号来表示一个单引号字符。例如:''''表示字符串--'--  。又如:'天下''太平':表示字符串--天下'太平。为了在sql查询语句中生成--'select * from docu_table where  j_num= '字符串'--, 在delphi中应写为:--'select * from docu_table where  j_num= '''+字符串变量+''''--。
      

  4.   

    那“adoquery”的也可以这么写吗???
      

  5.   

    adodataset  adoquery  adocommand都可以!
      

  6.   

    给字符串加单引号为何不直接用函数QuotedStr呢。
    这样写:
    Query1.Close;
    Query1.SQL.Clear;
    Query1.SQL.Text := 'select * from docu_table where  j_num= '+QuotedStr(trim(Edit2.Text));//j_num为varchar型
    Query1.Open;
      

  7.   

    我觉着,使用参数的形式是最好的!这样可以尽可能让你的sql语句简洁易读,而且当值涉及多种类型时,不需要转来转去!