结果name怎么也插不进去,不管输什么,每次插进去的都是空值,但我name字段还是主键,居然还能插进空值,请问怎么解决?      with qry1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('insert into 用户表 values(:name1,:password)');
      Parameters.ParamByName('name1').Value := name;
      Parameters.ParamByName('password').Value := password;
      ExecSQL;
      ShowMessage('添加成功!');
    end;

解决方案 »

  1.   

    单步调试后,name上已经赋值了,却进不了数据库里
      

  2.   

     SQL.Add('insert into 用户表(字段名1,字段名2) values(:name1,:password)');
    是不是字段数量不一致了
      

  3.   

    在界面里再设一下两个参数的数据类型,弄成ftstring。
      

  4.   

    password  password能很正常的插入
      

  5.   

    真悲剧了还不行。。另外我的access是今天刚从sql2008  导出过来的
      

  6.   

    又试了下
          SQL.Add('insert into [用户表]([用户名],[密码]) values(:name1,:password)');
          Parameters.ParamByName('name1').Value := '1234';
          Parameters.ParamByName('password').Value := '1234';
    这得就能插进去。
          SQL.Add('insert into [用户表]([用户名],[密码]) values(:name1,:password)');
          Parameters.ParamByName('name1').Value := name;
          Parameters.ParamByName('password').Value := '1234';
    这得name有值,也传不进去
      

  7.   

    有一个全局变量的name了。我错了,耽误了大家这么多时间
      

  8.   

    name从那里来的?
    如果没有传值,会以Form的name值,或者其它的控件name值
    若这些代码放在unit,有可能就是空的完整代码贴出来!!!!
      

  9.   

    嘿嘿 一开始声明的是name
    后来我改成name1  就正常了
    procedure TForm3.btn5Click(Sender: TObject);
    var
      name1,password: string;
      confirm: Boolean;
    begin
      confirm := InputQuery('用户名','请输入用户名',name1);
      if not confirm then
        Exit;
      confirm := InputQuery('密码','请输入密码(密码必须大于3位数)',password);
      if not confirm then
        Exit;
      if (Length(name) < 3) or (Length(name) > 10) then
      begin
        ShowMessage('用户名必须在3-10位数之间!');
        Exit;
      end;
      if (Length(password) < 4) or (Length(password) > 15) then
      begin
        ShowMessage('密码必须在4-15位数之间!');
        Exit;
      end;
      try
        with qry1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('insert into [用户表]([用户名],[密码]) values(:name1,:password)');
          Parameters.ParamByName('name1').Value := name1;
          Parameters.ParamByName('password').Value := password;
          ExecSQL;
          ShowMessage('添加成功!');
          cbb1.Items.Add(name1);
          tbl1.Refresh;
        end;
      except
        ShowMessage('添加失败!');
        Exit;
      end;end;
      

  10.   

    procedure TForm3.btn5Click(Sender: TObject);
    var
      name1,password: string;
      confirm: Boolean;
    begin
      confirm := InputQuery('用户名','请输入用户名',name1);
      if not confirm then
        Exit;
      confirm := InputQuery('密码','请输入密码(密码必须大于3位数)',password);
      if not confirm then
        Exit;
      if (Length(name) < 3) or (Length(name) > 10) then
      begin
        ShowMessage('用户名必须在3-10位数之间!');
        Exit;
      end;
      if (Length(password) < 4) or (Length(password) > 15) then
      begin
        ShowMessage('密码必须在4-15位数之间!');
        Exit;
      end;
      try
        with qry1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('insert into [用户表]([用户名],[密码]) values(:name1,:password)');
          Parameters.ParamByName('name1').Value := name1;
          Parameters.ParamByName('password').Value := password;
          ExecSQL;
          ShowMessage('添加成功!');
          cbb1.Items.Add(name1);
          tbl1.Refresh;
        end;
      except
        ShowMessage('添加失败!');
        Exit;
      end;end;