先有一问题如下:procedure Tmain.BitBtn7Click(Sender: TObject);
begin
adotable1.Open;
adotable1.First;
if (Edit1.Text='') or (Edit2.Text='') then
begin
showmessage('你还未登陆系统!');
end
else
if not adotable1.Eof then
begin
//控制员工一天只能签到一次,但现在有点问题!
while not adotable1.Eof do
begin
if (datetostr(date)=adotable1.FieldValues['建表时间']) and (Edit1.Text=adotable1.FieldValues['编号'])then
begin
showmessage('你已经签过到了,一天只能签一次到!');
end;
adotable1.Next;
end;
end
else
begin
BitBtn7.Visible:=false;
with adodataset1 do
begin
append;
fieldvalues['编号']:=Edit1.Text;
fieldvalues['姓名']:=Edit2.Text;
fieldvalues['建表时间']:=datetostr(date);
fieldvalues['签到时间']:=timetostr(time);
fieldvalues['签到状态']:=0;
post;
//签到的时间状态存入数据库;
end;
end;
end;
其中有一段代码是判断用户有没有在同一天中重复按键,如果有的话,提示'你已经签过到了,一天只能签一次到!'并返回。现在问题就出来了,在程序不从新启动的情况下,用户可以无限次的按键。但是当程序从新启动后,按键后提示'你已经签过到了,一天只能签一次到!'。这应该是数据库刷新的问题,请高手帮我看看应该如何及时的刷新数据库或者让程序能够及时的知道数据库已经更新了?
我在最后面加了个refresh如下:
with adodataset1 do
begin
append;
fieldvalues['编号']:=Edit1.Text;
fieldvalues['姓名']:=Edit2.Text;
fieldvalues['建表时间']:=datetostr(date);
fieldvalues['签到时间']:=timetostr(time);
fieldvalues['签到状态']:=0;
post;
refresh;
//签到的时间状态存入数据库;
end;结果程序报错。
begin
adotable1.Open;
adotable1.First;
if (Edit1.Text='') or (Edit2.Text='') then
begin
showmessage('你还未登陆系统!');
end
else
if not adotable1.Eof then
begin
//控制员工一天只能签到一次,但现在有点问题!
while not adotable1.Eof do
begin
if (datetostr(date)=adotable1.FieldValues['建表时间']) and (Edit1.Text=adotable1.FieldValues['编号'])then
begin
showmessage('你已经签过到了,一天只能签一次到!');
end;
adotable1.Next;
end;
end
else
begin
BitBtn7.Visible:=false;
with adodataset1 do
begin
append;
fieldvalues['编号']:=Edit1.Text;
fieldvalues['姓名']:=Edit2.Text;
fieldvalues['建表时间']:=datetostr(date);
fieldvalues['签到时间']:=timetostr(time);
fieldvalues['签到状态']:=0;
post;
//签到的时间状态存入数据库;
end;
end;
end;
其中有一段代码是判断用户有没有在同一天中重复按键,如果有的话,提示'你已经签过到了,一天只能签一次到!'并返回。现在问题就出来了,在程序不从新启动的情况下,用户可以无限次的按键。但是当程序从新启动后,按键后提示'你已经签过到了,一天只能签一次到!'。这应该是数据库刷新的问题,请高手帮我看看应该如何及时的刷新数据库或者让程序能够及时的知道数据库已经更新了?
我在最后面加了个refresh如下:
with adodataset1 do
begin
append;
fieldvalues['编号']:=Edit1.Text;
fieldvalues['姓名']:=Edit2.Text;
fieldvalues['建表时间']:=datetostr(date);
fieldvalues['签到时间']:=timetostr(time);
fieldvalues['签到状态']:=0;
post;
refresh;
//签到的时间状态存入数据库;
end;结果程序报错。
如果你fieldbyname('').value来复制的话就可以持久的存储到数据库中了.
建议有sql来检测:
begin
query1.close;
query1.sql.clear;
query1.sql.add('select * from table where 建表时间='+quotedstr(datetostr (date))+' and 编号='+quotedstr(edit1.text));
query1.prepared;
query1.open;
if query1.recordcount>0 then showmessage('你已经签过到了,一天只能签一次到!')
else begin
// 插入一条新记录
end;
end;