adoTable有问题

时间:2012-03-27 21:14:52

标签: delphi delphi-7

我希望能够确保如果一个表格(在这种情况下为adotHours)进入编辑或插入模式,并且用户点击了保存按钮,但意外地在Hours下发布了相同的值已输入的列,将显示一条消息Please enter another value,否则如果用户输入其他值,则使用另一段代码。

我尝试了以下方法,但它不起作用, - 无论用户输入消息Please enter another value出现了什么。

procedure TfrmLabour.Button6Click(Sender: TObject);
var 
  i,j, t: String;
begin
  Edit1.Text := adotHours['Hours'];
  j :=  Edit1.Text;
  adotHours.Post;
  Edit2.Text := adotHours['Hours'];
  t := Edit2.Text;
  if t = j then 
    showmessage ('Please enter another value')
  else begin.....
end;

虽然我知道它可能不是最优雅的代码,但我的想法是,一旦通过连接的adotHours将值发布到Hours DBgrid,如果它是不同的t之前的值将成为新值,因此adotHours['Hours']将不同并允许else begin。建议?

3 个答案:

答案 0 :(得分:7)

尝试针对OldValue属性检查输入的值。

adotHours.FieldByName('Hours').OldValue

答案 1 :(得分:2)

如果未修改字段值,

adotHours.FieldByName('Hours').NewValue将为Unassigned。在这种情况下,OldValue将包含(未修改的)值。

答案 2 :(得分:0)

您可以使用以下内容:

if adotHours.FieldByName('ItemName').OldValue = 
  adotHours.FieldByName('ItemName').Value then
  Showmessage(Please enter another value');

但对我来说,最好将此代码放在事件adotHours.BeforePost中,如果值相同则调用abort过程 - 在其他情况下,当用户更改值并点击其他时网格上的行 - 它会导致发布数据集,您可能会错过您的签入按钮单击。