如何得到两个记录的时间差(50分)

  • 主题发起人 主题发起人 老蔡
  • 开始时间 开始时间

老蔡

Unregistered / Unconfirmed
GUEST, unregistred user!


如何得到两个记录的时间差.
如下所式.
sj jm brand 长度
19:00:00 新闻
19:30:00 XXX彩电 5
19:30:05 XXX 15
19:30:20 XXXX
要求用第二条记录的时间减第一条记录的时间,并在第一条记录的字段长度下填写时间差.
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
sj1,sj2:TDateTime;
a:Int64 ;
s:String ;
begin
sj1:=ADOTable1.FieldValues['sj'];
ADOTable1.Next ;
sj2:=ADOTable1.FieldValues['sj'] ;
a:=trunc(DateTimeToTimeStamp(sj1-sj2).Time);
ADOTable1.Edit;
ADOTable1.FieldValues['长度']:=a;
ADOTable1.Post ;
end;
 
function MinutesBetween(const ANow, AThen: TDateTime): Int64;
 
同意以上二位的.
 
_xiaofeng
运行后没有得到正确的结果,所有的长度都为0,
a:=trunc(DateTimeToTimeStamp(sj1-sj2).Time);
这句看不懂,为啥要用sj1-sj2.
 
这个问题我自己已经解决了.
 
又出问题了.
sj2:=form2.Table1.fieldbyname('时间').Value;
form2.Table1.Prior ;
sj1:=form2.Table1.Fieldbyname('时间').Value;
a:=round((sj2-sj1)*24*3600);
form2.Table1.Edit;
if form2.Table1.FieldByName('品牌').Value='' then
form2.Table1.FieldByName('长度').Value:=''
else
form2.Table1.Fieldbyname('长度').Value:=a;
form2.Table1.Post;

form2.Table1.Next;

我希望显示的结果如下:

时间 节目 品牌 长度(秒) 位置
19:00:00 新闻联播
19:30:00 XXXXX 5 1
19:30:05 XXXXX 5 2
19:30:10 XXXXX 5 3
19:31:00 天气预报
XXXXXXXX XXXXX X 1
XXXXXXXX XXXXX X 2

可是执行上面的代码后,长度错了一位.显示如下.
时间 节目 品牌 长度(秒) 位置
19:00:00 新闻联播 5
19:30:00 XXXXX 5 1
19:30:05 XXXXX 5 2
19:30:10 XXXXX 3
19:31:00 天气预报 X
XXXXXXXX XXXXX X 1
XXXXXXXX XXXXX 2


好象 if form2.Table1.FieldByName('品牌').Value='' then
form2.Table1.FieldByName('长度').Value:=''
没起作用.
还有位置的序号如何实现.我用reccount如何实现如上图所示的"位置"的记录号.
当然有其他的方法实现也可.
 
接受答案了.
 
if form2.Table1.FieldByName('品牌').Value='' then
form2.Table1.FieldByName('长度').Value:=''
应该改为:
if form2.Table1.FieldByName('品牌').Value=null then
form2.Table1.FieldByName('长度').Value:=null
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部