我希望能够确保如果一个表格(在这种情况下为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
。建议?
答案 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
过程 - 在其他情况下,当用户更改值并点击其他时网格上的行 - 它会导致发布数据集,您可能会错过您的签入按钮单击。