急! DBGrid单元格失去焦点时触发事件

时间:2021-03-15 19:28:20
问题是这样的,窗体上有一个DBGrid1控件,列名主要有:进单号,供应商号,供应商名,当输入“供应商号”后“供应商名”获得焦点的同时,自动查询数据库里面是否有该“供应商号”,如果没有则弹出输入“供应商信息”的对话框,这要怎样实现

8 个解决方案

#1


是不是想对输入的供应商号做校验呀?
自定义过程
procedure FieldSetText(Sender: TField; const Text: String);
数据集打开事件里
DataSet.FieldByName('供应商号').OnSetText:=FieldSetText;
在过程FieldSetText中实现查询数据检测

#2


可以在“供应商号”字段的OnSetText 事件中做数据校验,来实现

#3


发不了帖?!

#4


可以在“供应商号”字段的OnSetText事件里对数据进行校验

#5


谢谢你了,谢三少,不过,能否具体一点,代码

#6


DBGrid的DataSet的AfterOpen 事件里
procedure TFm_TranAmmeter.FieldSetText(Sender: TField; const Text: String);
var
  Value :double;
begin
  //Text--就是你输入的 供应商号 
  这里实现查询过程即可。'select * from 表 where 供应商号= text'

end;

procedure TForm1.cds_DataAfterOpen(DataSet: TDataSet);
begin
  if DataSet.FindField('供应商号') <> nil then
    DataSet.FieldByName('供应商号').OnSetText:=FieldSetText;
end;

#7


一般不在失去焦点的时候去做,当然要这么做也可以,你可以将代码写在列对象的OnExit事件中

#8


我认为数据有效的校验还是应该放在录入数据后来做!

#1


是不是想对输入的供应商号做校验呀?
自定义过程
procedure FieldSetText(Sender: TField; const Text: String);
数据集打开事件里
DataSet.FieldByName('供应商号').OnSetText:=FieldSetText;
在过程FieldSetText中实现查询数据检测

#2


可以在“供应商号”字段的OnSetText 事件中做数据校验,来实现

#3


发不了帖?!

#4


可以在“供应商号”字段的OnSetText事件里对数据进行校验

#5


谢谢你了,谢三少,不过,能否具体一点,代码

#6


DBGrid的DataSet的AfterOpen 事件里
procedure TFm_TranAmmeter.FieldSetText(Sender: TField; const Text: String);
var
  Value :double;
begin
  //Text--就是你输入的 供应商号 
  这里实现查询过程即可。'select * from 表 where 供应商号= text'

end;

procedure TForm1.cds_DataAfterOpen(DataSet: TDataSet);
begin
  if DataSet.FindField('供应商号') <> nil then
    DataSet.FieldByName('供应商号').OnSetText:=FieldSetText;
end;

#7


一般不在失去焦点的时候去做,当然要这么做也可以,你可以将代码写在列对象的OnExit事件中

#8


我认为数据有效的校验还是应该放在录入数据后来做!