问一下:情况:在调价单中输入一条记录(商品编号、商品名称、新进价、供应商信息等等),在调进价单模块输入相同的商品时请增加提示功能。目前在调进价单中输入了相同的商品系统没有提示,到单据保存时出现单据不能保存。
我现在的想法是:在Query1.NewRecord事件中添加代码,先在数据库中判断一下,看有没有这条记录,如果有相同的商品编码就MessageDlg()提示一下。这个要怎么写代码?
一种是在‘保存’按钮事件中写;一种是在 Query1.NewRecord中加判断?
急!!!!!!!!!!

解决方案 »

  1.   

    自己先UP一下,那位给我一点代码试试!我现在刚刚学Delphi!
      

  2.   

    >>我现在的想法是:在Query1.NewRecord事件中添加代码,先在数据库中判断一下,看有没有这条记录,如果有相同的商品编码就MessageDlg()提示一下。这个要怎么写代码?
    具体看你的数据量,还有数据库,如果是本地的,或者数据量不大,则可直接用个Query查下如果是sql server类,可用个存储过程检查
      

  3.   

    写个SQL语句查一下,有该条记录就提示,没有就Post就完了.
    adoquery1.close;
    adoquery1.sql.text:='select * from tablename where '(唯一索引)
    adoquery1.open;
    if adoquery1.recordcount>0 then
    begin
      application.message('数据重复,请检查后重新保存.','系统提示'mb_ok); 
      exit;
    end;
    这样应该可以吧...
      

  4.   

    试试,但是上一条记录还没有保存,在输入完一条记录后再判断下一条记录的GoodsID有没有出现过,还没有点保存按钮啊,这样的话查什么表啊,没有表可以查询。用光标判断不行么?怎么写代码?
      

  5.   

    数据量不大,怎么写Query实现?楼上的兄弟》
      

  6.   

    就是加一个提示功能,不用这么复杂吧。不是输入完了就保存的,你怎么在表中取输入的数据,还没有保存呢?
    我想用光标的POST取。就是输入后移动鼠标到下一个格子后就会提示一个信息窗口
    类似这样的 不知道我说的明白不?
      

  7.   

    在保存按钮里写:
    ADODatasetCheck.Close;
    ADODatasetCheck.CommandText:='Select Count(*) as sl From 表名 Where 商品名称='+Quotedstr(ADODatasetTJD.FieldsByName('商品名称').asstring)+' and 供应商='+Quotedstr(ADODatasetTJD.FieldsByName('供应商').asstring);
    ADODatasetCheck.Open;
    if ADODatasetCheck.FieldsByName('SL').asInteger > 0 then
      begin
      Showmessage('有重复值!');
      exit;
      end;
      

  8.   

    现在保存按钮没有问题,就是想在DBGrid中输入时候控制一下。用Query1GoodsID.NewValue= Query1GoodsID.OldValue判断后,语句怎么写,怎么控制啊?
      

  9.   

    写个SQL语句查一下,有该条记录就提示,没有就Post就完了.
    VAR 
    SQLSTR:string;
    begin
    sqlstr:='select * from tablename where 商品名称='+''''+edit1.text+'''';adoquery1.close;
    adoquery1.sql.clear();
    adoquery1.sql.add(sqlstr);
    doquery1.open;
    if adoquery1.recordcount>0 then
    begin
      application.message('数据重复,请检查后重新保存.','系统提示'mb_ok); 
      exit;
      

  10.   

    这样我会的,现在是想用Query1GoodsID.NewValue= Query1GoodsID.OldValue作判断,怎么作?
      

  11.   

    采用找到就提示,但一定要查找,用QUERY得到记录集或记录数,没有就POST