k := StringGrid1.Cells[1,StringGrid1.Row];
 with DM do
    begin
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add('delete ptype where typeid = StrTOInt(k) );
      ADOQuery1.ExecSQL;删除ADO里的数值 怎么转换类型? 帮我改改

解决方案 »

  1.   

    ADOQuery1.SQL.Add(Format('delete ptype where typeid =%d',[k])); 这样最省事了
      

  2.   

        k := StringGrid1.Cells[1,StringGrid1.Row]; 
    with DM do 
        begin 
          ADOQuery1.Close; 
          ADOQuery1.SQL.Clear; 
          ADOQuery1.SQL.Add('delete ptype where typeid=(:k1)');
          ADOQuery1.Parameters.Item[0].value:=strtoInt(k); 
          ADOQuery1.ExecSQL; 
      

  3.   

    TO七郎去掉      ADOQuery1.Parameters.Item[0].value:=strtoInt(k); 执行不会出错;但
    数据库里并没有真正删除掉,
    多了      ADOQuery1.Parameters.Item[0].value:=strtoInt(k); 就错了
      

  4.   

    K是STRING类型       TYPEID是varchar  
      

  5.   

        k := (StringGrid1.Cells[1,StringGrid1.Row]);       ShowMessage(k);  值可以出来就是现在要删除SQL里这条记录  不知道怎么写
      

  6.   

        k := StringGrid1.Cells[1,StringGrid1.Row]; 
    with DM do 
        begin 
          ADOQuery1.Close; 
          ADOQuery1.SQL.Clear; 
          ADOQuery1.SQL.Add('delete ptype where typeid=(:k1)'); 
          ADOQuery1.Parameters.Item[0].value:=Trim(k); 
          ADOQuery1.ExecSQL; 
      

  7.   

    提示 list index out of bounds(1);
      

  8.   

    你没有看清那是一个带参数的,你少写了一个冒号!
    where typeid=(:k1)
      

  9.   

    哦,我错了,少写了个s
          ADOQuery1.Parameters.Items[0].value:=Trim(k); 
      

  10.   

    //将ADOQuery1的sql定义为 delete ptype where typeid=(:k1);
    //在sql语句里带冒号的,表明必须传递一个参数进去,参数的名称是k1;
          ADOQuery1.SQL.Add('delete ptype where typeid=(:k1)');
    //给参数赋值,由于语句只有一个参数,所以只需要给第一个参数赋值 
          ADOQuery1.Parameters.Item[0].value:=Trim(k); 给参数赋值也可以这样
    ADOQuery1.parameters.ParamByName('k1').Value:=Trim(k);