小弟是新手,自己刚写了一个小程序,但是编译后发现除了删除功能可以正常使用外,添加和修改功能都不能实现,我连接数据库主要用了ADOConnection1,DataSource1,ADOQuery1,且都配置OK。程序初始化时,能在DBGRID中显示数据库中的数据。
我的主要数据项目用的时DBedit控件,且已经配置OK,不知道哪儿的错,只能删除数据,添加,修改都不行,请高手帮忙看看!
procedure TForm2.RzButton1Click(Sender: TObject);
begin
  dbedit1.ReadOnly:=false;(dbedit的datasource和datafiled属性已经配置OK)
  dbedit2.ReadOnly:=false;
  dbedit3.ReadOnly:=false;
  dbedit4.ReadOnly:=false;
  SB.ADOQuery1.Insert;
  
end;

解决方案 »

  1.   

    再加一句  
    SB.ADOQuery1.post
      

  2.   

    楼上的兄弟post方法有什么用?
    还有我加了这句语法,添加信息报错'Project 123.EXE raised exception class EOLeException with message'无法插入空行。行必须至少有一个列值集''
      

  3.   

    在离开编辑模式时加:SB.ADOQuery1.post
      

  4.   

    post是将本地的更改上传到数据库,DBGRID里的操作全是在本地的,还需要上传到数据库中
      

  5.   

    terence4444(T4) 谢谢你告诉我post的用法,但是程序还是不能添加,望指点哦
      

  6.   

    adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('insert into tableName (字段1,字段2) values(值1,值2)');
      

  7.   

    可能你的表设计为不允许为空,所以你直接insert后,有些字段可能没有被给值,POST就出错了,建议INSERT后给个初始值。
      

  8.   

    luxuewei5214(小卢) 开始我就用的这个方法写的,但是添加的时候系统老提示找不到某字段,所以我就改成了上面的写法,但是还是不对,郁闷
    belllab(菜鸟) 我的表设计除了主键外,其他均为允许为空,加了post后还是提示报错!
      

  9.   

    添加的时候系统老提示找不到某字段,是因为你的字段名称不正确,或因为某些值的类型与字段类型不一致(此时需要用CAST(值N as 类型)来转换)adoquery1.close;
    adoquery1.sql.clear;
    adoquery1.sql.add('insert into tableName (字段1,字段2) values(值1,值2)');
    adoquery1.execsql;  //加上这句还有:adoquery1 的LockType属性设为ltOptimistic看看
      

  10.   

    DB类控件是只读的显示数据库中表的内容,不能用于修改.你可以使用dbGrid这样的控件,或者直接用Edit这样的,这些控件接收到的输入,用程序写入数据库.
      

  11.   

    你把DBEdit换成Edit这样的控件,在显示数据的时候,你程序写一下,修改和添加自己再控制一下就好了。
      

  12.   

    再添加一个按钮
    然后在该安扭的Onclick事件中添加
    if trim(dbeditn.text)<>'' then  //dbeditn你的主键所对应的DBEDIT
      SB.ADOQuery1.post