如何输入时间 计算工龄(10)

L

lljimo

Unregistered / Unconfirmed
GUEST, unregistred user!
function GetworkAgeInID(const ID:string):Integer ;
//工龄计算var TmpStr:string ;
iYear1,iMonth1,iDay1,iYear2,iMonth2,iDay2:Word ;
begin
try DecodeDate(?????,iYear1,iMonth1,iDay1);
DecodeDate(Date,iYear2,iMonth2,iDay2);
Result:=iYear2-iyear1;
if (iMonth1 >iMonth2 ) then
Dec(Result) else
if (iMonth1=iMonth2)and(iDay1 >iDay2 ) then
Dec(Result) except Result:=0;
end;
end;
这部分是实现部分procedure TFrmbase_rszl.DBEditEh9Exit(Sender: TObject);
//计算工龄部分var TmpStr:string ;
begin
inherited;
if not IsValidDate(TDBEditEh(Sender).Text) then
begin
MsgShow('无效的日期格式!');
TDBEditEh(Sender).SetFocus;
end;
if TDBEditEh(Sender).Text='' then
Exit;
if TDBEditEh(Sender).DataSource.State in [dsinsert,dsedit] then
begin
TmpStr:=TDBEditEh(Sender).Text ;
with AdoQryrszldo
begin
FieldByName('gzgl').Value:= GetworkAgeInID(TmpStr);
FieldByName('gzrq').Value:=DBEditEh9.Text;
end;
end;
end;
我需要在DBEditEh9的控件里输入时间,然后再下一个控件里自动计算出工龄,???位置我曾经用strtodate('DBEditEh9.Text'),可是结果不能计算,说'DBEditEh9.Text'不是时间,请问如何解决
 
M

Mike1234567890

Unregistered / Unconfirmed
GUEST, unregistred user!
'DBEditEh9.Text'有问题你把引号去掉试试
 
S

Supermay

Unregistered / Unconfirmed
GUEST, unregistred user!
DaysBetween()+1,就是工作天数,其他的你会转换了吧
 
L

lljimo

Unregistered / Unconfirmed
GUEST, unregistred user!
我只要??部分的内容应该填写什么,''去掉那就更错误了
 
Z

znxia

Unregistered / Unconfirmed
GUEST, unregistred user!
DecodeDate( Strtodate(TDBEditEh(Sender).Text) ,iYear1,iMonth1,iDay1);-------------- if not IsValidDate(TDBEditEh(Sender).Text) then
begin
MsgShow('无效的日期格式!');
TDBEditEh(Sender).SetFocus;
exit;
//新增 end;
-----------------其实DateUtils单元有这个函数:function YearsBetween(const ANow, Athen
: TDateTime): Integer;
 
L

lljimo

Unregistered / Unconfirmed
GUEST, unregistred user!
你的意思是说??部分用StrtoDate(TDBEditEh(sender).Text)吗? 可是我那个部分是在另一个单元的function GetworkAgeInID(const ID:string):Integer ;
//工龄计算var TmpStr:string ;
iYear1,iMonth1,iDay1,iYear2,iMonth2,iDay2:Word ;
begin
try DecodeDate(?????,iYear1,iMonth1,iDay1);
DecodeDate(Date,iYear2,iMonth2,iDay2);
Result:=iYear2-iyear1;
if (iMonth1 >iMonth2 ) then
Dec(Result) else
if (iMonth1=iMonth2)and(iDay1 >iDay2 ) then
Dec(Result) except Result:=0;
end;
end;
独立单元,而控件事件部分是在另一个单元,StrtoDate(TDBEditEh(sender).无法找到TDBEditEh(sender,我已经在Uses 里添加了需要调用的单元,可是就是没有
 

火焰领主打伞

Unregistered / Unconfirmed
GUEST, unregistred user!
建立一个公共单元,建立一个公共变量,把TDBEditEh(sender).Text值给它。在独立单元里直接调用这个变量就行啦
 
L

lljimo

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部