SELECT *
from tableA
WHERE ID='''+edit1.Text+'''
ID为整型, edit1为广本编辑筐,
提示Varchar 值''+edit1.Text+''转换成数据类型为int的列时发生语法错误,不知道怎么转换

解决方案 »

  1.   

    'SELECT   * from   tableA WHERE ID= ' + edit1.Text
      

  2.   

    adoquery1.close;
    qdoquery1.sql.text :='SELECT   * from   tableA WHERE   ID=:ID';
    adoquery1.parameters.parambyname('ID').value := edit1.Text;利用绑定参数的方式好处,1不必考虑引号的 2.可读性好 3.数据库解析要快
      

  3.   

    这条语句是放到ADOQuery1.sql.TSring中执行的,你这样也不行
      

  4.   

    adoquery1.close; 
    qdoquery1.sql.text   :='SELECT       *   from       tableA   WHERE ID=:ID';      adoquery1.parameters.parambyname('ID').value   :=   edit1.Text; 看不懂,能不能解释一下
      

  5.   

    这里的':ID'是一个参数变量,可以自己随便定义.
    然后利用这个adoquery1.parameters.parambyname('ID').value       :=       edit1.Text;给这个变量赋值
    这样,:ID的值就成为edit1.text的内容了.
    这样写和你 sql.text := 'SELECT       *   from       tableA   WHERE   ID=   '   +   edit1.Text这样写查询结果是一样的.
    但是数据库中解析的方式却不一样.
    比如你执行多次相同的查询,用绑定参数,它只会解析一次(它会认为是同一个SQL)
    而用 ID='+edit1.text;它会认为是不同的SQL,每次都要解析.
      

  6.   

    SELECT       *   from       tableA   WHERE       ID=:ID
    提示:不正常定义参数对象,提供了不一致或不远整的信息
      

  7.   

    'SELECT * from tableA WHERE ID= ' + edit1.Text 此为正解
      

  8.   

    id为整形,请问一下楼主在Edit1当中输入的数据是整形数据或者能够被转换成整形的文本数据吗?
      

  9.   

    实在不行就写:
    SQL := 'SELECT * from tableA WHERE ID='+IntToStr(StrToIntDef(edit1.Text,0)); 
      

  10.   

    SELECT ICBomChild.FInterID,ICBomChild.FEntryID, ICBomChild.FEntryID, ICBomChild.FItemID, t002.FQtyDecimal, t002.FPriceDecimal, t002.FUnitGroupID, t002.FNumber as  FItemIDNumber, t002.FName as  FItemIDName, t002.FName as FItemName, t002.FModel as FModel,(SELECT FName FROM t_SubMessage WHERE t002.FErpClsID=FInterID) as FErpCls, ICBomChild.FHasChar, ICBomChild.FAuxPropID, t007.FNumber as  FAuxPropIDNumber, t007.FName as  FAuxPropIDName, ICBomChild.FUnitID, t008.FNumber as  FUnitIDNumber, t008.FName as  FUnitIDName, t009.FName as FBaseUnit, ICBomChild.FMaterielType, t010.FID as  FMaterielTypeNumber, t010.FName as  FMaterielTypeName, ICBomChild.FMarshalType, t011.FID as  FMarshalTypeNumber, t011.FName as  FMarshalTypeName, ICBomChild.FQty, ICBomChild.FAuxQty, ICBomChild.FBeginDay, ICBomChild.FEndDay, ICBomChild.FPercent, ICBomChild.FScrap, ICBomChild.FPositionNo, ICBomChild.FItemSize, ICBomChild.FItemSuite, ICBomChild.FOperSN, ICBomChild.FOperSN as  FOperSNNumber, ICBomChild.FOperSN as  FOperSNName, ICBomChild.FOperID, t022.FID as  FOperIDNumber, t022.FName as  FOperIDName, ICBomChild.FMachinePos, ICBomChild.FOffSetDay, ICBomChild.FBackFlush, t025.FID as  FBackFlushNumber, t025.FName as  FBackFlushName, t002.FIsKeyItem as FIsKeyItem,(SELECT FName FROM t_SubMessage WHERE t002.FUseState=FInterID) as FUseState, t002.FDeleted as FForbitUse, ICBomChild.FStockID, t029.FNumber as  FStockIDNumber, t029.FName as  FStockIDName, ICBomChild.FSPID, t030.FNumber as  FSPIDNumber, t030.FName as  FSPIDName, ICBomChild.FNote, ICBomChild.FNote1, ICBomChild.FNote2, ICBomChild.FNote3, t002.FErpClsID as FErpClsID, t002.FAuxClassID as FAuxPropCls, ICBomChild.FPDMImportDate, ICBomChild.FDetailID, ICBomChild.FEntrySelfZ0139, ICBomChild.FBrNo
    FROM ICBomChild join t_ICItem  t002 on t002.FItemID = ICBomChild.FItemID AND t002.FItemID <>0  left join t_AuxItem  t007 on t007.FItemID = ICBomChild.FAuxPropID AND t007.FItemID <>0  left join t_MeasureUnit  t008 on t008.FItemID = ICBomChild.FUnitID AND t008.FItemID <>0  left join t_MeasureUnit t009 on  t009.FItemID=t002.FUnitID  AND t009.FItemID<>0  left join t_SubMessage  t010 on t010.FInterID = ICBomChild.FMaterielType AND t010.FInterID <>0  left join t_SubMessage  t011 on t011.FInterID = ICBomChild.FMarshalType AND t011.FInterID <>0  left join t_SubMessage  t022 on t022.FInterID = ICBomChild.FOperID AND t022.FInterID <>0  left join t_SubMessage  t025 on t025.FInterID = ICBomChild.FBackFlush AND t025.FInterID <>0  left join t_Stock  t029 on t029.FItemID = ICBomChild.FStockID AND t029.FItemID <>0  left join t_StockPlace  t030 on t030.FSPID = ICBomChild.FSPID AND t030.FSPID <>0 
    WHERE ICBomChild.FInterID='''+edit1.Text+'''
    ORDER BY ICBomChild.FEntryID
      

  11.   

    WHERE   ICBomChild.FInterID='''+edit1.Text+''' 
    就这句有问题
      

  12.   

    这句这样写:WHERE   ICBomChild.FInterID='+edit1.Text或者:WHERE   ICBomChild.FInterID=:FInterID然后parameters.parambyname('FInterID').value :=edit1.Text;应该不会有问题的呀,你可以把你的SQL语句截出来,检查一下,到底哪出的错.
      

  13.   

    在查询分析器里面执行时
    WHERE       ICBomChild.FInterID=:FInterID 
    这行提示错误 
        服务器: 消息 170,级别 15,状态 1,行 3
        第 3 行: ':' 附近有语法错误。
      

  14.   

    如你在delphi开发的编程环境中可以使用绑定参数法.
    假如你在利用ADO查询方法时:
      with ADOQuery1 do
      begin
        close;
        sql.Clear;
        sql.Add('select * from tableA where ID=:a');
        parameters.ParamByName('a').Value:= StrToInt(trim(Edit1.Text));
        open;
      end;
    解释如下:冒号加参数名(符合参数命名法则,一般可以取a,b,c等字母)在以上查询语句中属于绑定参数的方法,即下面的
    parameters.ParamByName('a').Value:=    后可以是任何类型的,但是你必须符合你要查询的数据类型.