我在ComboBox控件里输入数据,并把它保存在MS_SQL数据库中,当我再次打算往ComboBox里输入数据时,如果这个数据我已经输过了,就希望出现提示,或者当我焦点转移到下一个框时,就提示或者不能输入什么的。总之,就是希望如果在ComboBox里已经输入过数据并保存到数据库后,就不希望ComboBox里再次输入相同的内容,并能提示给输入者,请教高手,谢谢! 
PS:希望告诉我事件在哪里触发,并给出代码,谢谢了!!!

解决方案 »

  1.   

    在焦点转移到下一个输入框是提示,在该输入框的onEnter事件里做判断,从数据库里查询combobox中的内容是否在数据库中又存在,如果存在则弹出提示框就可以了
      

  2.   

    下一个输入框的onEnter事件中:
    begin
    with query do
    begin
      close;
      sql.clear;
      sql.add(select * from table where field=:p1);
      parameters.parameterbyname('p1').value:=combobox1.text;
      open;
    end;
    if query1.recordcount>0 then
    begin
      Application.messagebox('已经输入过此数据','提示',0+mb_iconquestion)  ;
      combobox1.setfocus;
      combobox1.text:='';
    end;
    end;
    这一次绝对够详细,应该满足你的要求吧,放分吧!
      

  3.   

    2楼上怎么知道下一个输入框 用户点的是哪个?
    建议在COMBOBOX焦点离开事件写
    procedure TForm1.ComboBox1Exit(Sender: TObject);
    begin 
    with query do 
    begin 
      close; 
      sql.clear; 
      sql.add(select * from table where field=:p1); 
      parameters.parameterbyname('p1').value:=combobox1.text; 
      open; 
    end; 
    if query1.recordcount>0 then 
    begin 
      Application.messagebox('已经输入过此数据','提示',0+mb_iconquestion)  ; 
      combobox1.setfocus; 
      combobox1.text:=''; 
    end; 
    end; 引用楼上点代码
      

  4.   

    谢谢你,我肯定会给你分的,这个你放心好了,我试了你的程序,运行编译不过去啊,提示:
    [Error] Unit1.pas(35): Undeclared identifier: 'select',不信你试试
      

  5.   

    procedure TForm1.ComboBox1Exit(Sender: TObject);
    begin 
    with query do 
    begin 
      close; 
      sql.clear; 
      sql.add(select * from table where field=:p1); 
      parameters.parameterbyname('p1').value:=combobox1.text; 
      ShowMessage(SQL.text); //用这句话来看你的SQL写得对不对
      open; 
    end; 
    if query1.recordcount>0 then 
    begin 
      Application.messagebox('已经输入过此数据','提示',0+mb_iconquestion)  ; 
      combobox1.setfocus; 
      combobox1.text:=''; 
    end; 
    end; 
      

  6.   

    谢谢您!还是编译不过去啊,出错:
    [Error] Unit1.pas(35): Undeclared identifier: 'select'
    能是什么原因呢,我数据库用一个ADOCOnection和ADOquery连的,还有我随便建了个表aa,字段名就命名为name吧,怎么就编译不过去呢,高手帮解答写,谢谢!
      

  7.   

    谢谢您!还是编译不过去啊,出错: 
    [Error] Unit1.pas(35): Undeclared identifier: 'select' 
    能是什么原因呢,我数据库用一个ADOCOnection和ADOquery连的,还有我随便建了个表aa,字段名就命名为name吧,怎么就编译不过去呢,高手帮解答写,谢谢!
      

  8.   

    哎,这是sql语句的错误,这个你都不会啊?我疏忽忘了写了
    sql.add('select * from table where field=:p1');
    sql语句要加单引号的,标识是string类型的。