procedure TForm1.Buttom1Clicl(Sender: TObject);
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into 图书');
ADOQuery1.SQL.Add('(名称)');
ADOQuery1.SQL.Add('Values('''+Edit1.Text+''');');
ADOQuery1.ExecSQL;
end;名称为主键
可以把Edit1里的图书名称添加进图书表中名称列
但是加进去的时候DBGird不显示[DBGird连的是图书表]
我加个Button2想用来刷新DBGird内容
写了
ADOQuery1.Close;
ADOQuery1.Open;
或者
ADOQuery1.Active:=False;
ADOQuery1.Active:=True;
用来刷新一刷它就说XXXXXXXXXX'违反了PRIMARY KEY 约束 'PK_图书'。
不能在对象'图书'中插入重复键。可是我直接用Button1一个个加是没问题的
查看SQL里也有
就是DBGird里不会自动刷新
要重新运行程序DBGird才能显示新添加的图书名称到底是那里错了呢?
是刷新语句错了
还是本身SQL表设计就有问题呢?

解决方案 »

  1.   

    用两个ADOQuery
    DBGird连ADOQuery1
    SQL select * from 图书ADOQuery2
    SQL不填
    procedure TForm1.Buttom1Click(Sender: TObject);
    begin
    ADOQuery2.Close;
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Add('insert into 图书');
    ADOQuery2.SQL.Add('(名称)');
    ADOQuery2.SQL.Add('Values('''+Edit1.Text+''');');
    ADOQuery2.ExecSQL;
    ADOQuery1.Active:=False;
    ADOQuery1.Active:=True;
    end;
      

  2.   

    znssc2000()   我的方法跟你的一样
    可是还是跟楼主的情况一样!!!!!!
    我的表没设主键