with gpio_sql do
  begin
   close();
     SQL.Clear;
     SQL.text:='insert into gpiolog (table(:sqaddr,'+'''YSP-5'''+',:zpsl_i,:kpsl_o,getdate()),(:sqaddr,'+'''YSP-10'''+',:zpsl_i1,:kpsl_o1,getdate()),(:sqaddr,'+'''YSP-15'''+',:zpsl_i2,:kpsl_o2,getdate()),(:sqaddr,'+'''YSP-50'''+',:zpsl_i3,:kpsl_o3,getdate()))';
     Parameters.ParamByName('sqaddr').value:=''''+v+'''';
     Parameters.ParamByName('zpsl_i').value:=Edit1.text;
     Parameters.ParamByName('kpsl_o').value:=Edit5.text;
     Parameters.ParamByName('zpsl_i1').value:=Edit2.text;
     Parameters.ParamByName('kpsl_o1').value:=Edit6.text;
     Parameters.ParamByName('zpsl_i2').value:=Edit3.text;
     Parameters.ParamByName('kpsl_o2').value:=Edit7.text;
     Parameters.ParamByName('zpsl_i3').value:=Edit4.text;
     Parameters.ParamByName('kpsl_o3').value:=Edit8.text;
    open;
  end;编译通过,运行时提示“不正常的定义参数对象,提供了不完整或者不一致的信息”

解决方案 »

  1.   

    沙发!
    up...
    insert命令sql一般使用ExecSql,而不是open
    是不是v获得的值和左面不一致,下面的edit.text的没看出来,水平有限...
      

  2.   

    把open; 
    改成ExecSQL;
    就可以了
      

  3.   

    改成ExecSQL依然不行,运行还是有“不正常的定义参数对象,提供了不完整或者不一致的信息”的提示是不是SQL语句有问题呢???
      

  4.   

    那个sql看着有点发晕,没看懂
      

  5.   

    gpio_sql.ParamCheck:=False//参数数据中带有冒号,用此属性将此忽略
      

  6.   

    在你的Open语句上面加一条语句ShowMessage(SQL.Text);好好检查一下SQL语句
      

  7.   

    同意楼上的,把sql抓出来看看
      

  8.   

    不但要改成ExecSQL,而且你的语句也有问题//语句中的table改为values
    SQL.text:='insert into gpiolog (table(:sqaddr,'+'''YSP-5'''+',:zpsl_i,:kpsl_o,getdate()),(:sqaddr,'+'''YSP-10'''+',:zpsl_i1,:kpsl_o1,getdate()),(:sqaddr,'+'''YSP-15'''+',:zpsl_i2,:kpsl_o2,getdate()),(:sqaddr,'+'''YSP-50'''+',:zpsl_i3,:kpsl_o3,getdate()))';
    改为
    SQL.text:='insert into gpiolog (values(:sqaddr,'+'''YSP-5'''+',:zpsl_i,:kpsl_o,getdate()),(:sqaddr,'+'''YSP-10'''+',:zpsl_i1,:kpsl_o1,getdate()),(:sqaddr,'+'''YSP-15'''+',:zpsl_i2,:kpsl_o2,getdate()),(:sqaddr,'+'''YSP-50'''+',:zpsl_i3,:kpsl_o3,getdate()))';
    下面的open改为ExecSQL