query1.close;
query1.SQL.clear;
query1.SQL.add('select * from 表‘);
query1.open;
if query1.fieldbyname('品名’).asstring<>trim(edit1.text) then
begin
t:='insert into 表 (品名) values('''+trim(edit1.text)''')';
query1.SQL.clear;
query1.SQL.add(t);
query1.execsql;
and
else
showmessage('请输入品名‘);
and;
query1.fieldbyname('品名’).asstring=trim(edit1.text)时为什么还插入啊???
请帮帮我谢谢!!!

解决方案 »

  1.   

    <<if query1.fieldbyname('品名’).asstring<>trim(edit1.text) then楼主比较的永远是第一条记录
      

  2.   

    在if处加断点实际看看一样吗?query1.close;
    query1.SQL.clear;
    query1.SQL.add('select * from 表');
    query1.open;
    if query1.fieldbyname('品名').asstring <> trim(edit1.text) then
    begin
    t:='insert into 表(品名) values('+chr(39)+trim(edit1.text)+chr(39)+')';
    query1.close;
    query1.SQL.clear;
    query1.SQL.add(t);
    query1.execsql;
    and
    else
    showmessage('请输入品名‘);
    and;
      

  3.   

    应该不会吧!
    再不在else后加上
    begin
    end;还有就是,你调试一下,看看是不是存在什么逻辑错误!
      

  4.   

    最好用
    first;
    while not eof do
    begin
      if ...
    end;
      

  5.   

    query1.close;
    query1.SQL.clear;
    query1.SQL.add('select * from 表 where ‘品名’='''+edit1.text+'''');
    query1.open;
    if query1.recordcount=0 then
    begin
    t:='insert into 表 (品名) values('''+trim(edit1.text)''')';
    query1.SQL.clear;
    query1.SQL.add(t);
    query1.execsql;
    and
    else
    showmessage('请输入品名‘);
    and;
      

  6.   

    不出错!!!我主要是想这样!让数据库里有的就改变。没有的就追加!!有的就修改 !!!
    大家帮帮我!!
    数据库是这样的!!

    品名   数量   品种   单价  总价
    a      2      f      1    2
    如果没a就追加,有就让数量,单价,总价,修改!!
    谢谢各位大哥了!!!!
      

  7.   

    sql.text:='select count(*) from table where 品名 = ' + quotedstr(trim(edit1.text));
    if query.field[0].asInteger = 0 then
    sql.text:='insert into table (品名,数量,品种,单价,总价) values()';
    if query.field[0].asInteger > 0 then
    sql.text:='update table set 数量= ,品种=,单价=,总价= where 品名 = ' + quotedstr(trim(edit1.text));