给100分 如何把每天06:00--18:00点内每隔30分钟 如06:00 ,06:30,07:00时间插入到FTime 字段 ( 积分: 100 )

  • 主题发起人 主题发起人 modernzheng
  • 开始时间 开始时间
M

modernzheng

Unregistered / Unconfirmed
GUEST, unregistred user!
在06:00 ---18:00所有每隔半小时的时间一次性全部插入..代码如何实现?
序号 FTime字段
1 06:00
2 06:30
3 07:00
07:30
18:00

以此类推 到18:00 停止。 时间更改到明天也就像上面一样自动插入记录到18:00点 为止
有具体代码实现吗? 急 给100分
 
没有理解你想插什么,但给你个例子;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
updatebase:boolean;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
hh,mm:string;
begin
hh:=FormatDateTime('hh',time);
showmessage(hh);
if hh='06' then
updatebase:=true;
if hh='18' then
updatebase:=false;
if updatebase then
begin
mm:=FormatDateTime('mm',time);
if mm='30' then
begin
you code....
end;
end;
end;

end.
 
楼主主要是每隔半个小时就要写如一条记录,就这个意思了,想简单的话,用个timer,时间间隔设置成1800*1000即可,然后在ontimer事件里面写代码.
 
楼主gsj0791 可能没有理解我的意思.
我意思是一次性写入记录FTime字段 其实就是日程安排提前把时间写入到表 如果时间更改到2008 年某月某日.也可以看到以下时间段记录.
序号 FTime字段
1 06:00
2 06:30
3 07:00
4 07:30
......
18:00
 
var
ftime:Tdatetime;
begin
ftime:=strtotime('6:0:0');
for i:=0 to (18-6)*2-1 do //一天18-6小时*2个30分
begin
...
字段:=formatdatetime('hh:nn:ss',ftime);
....
ftime:=ftime+strtotime('0:30:0');
end;
..........
 
在SQL中用作业来完成呀!
 
频率设为每天,作业内容为执行一个INSERT语句,条件当然是时间在6:00到18:00之间,
 
原来是这个意思啊,呵呵,试试我帮你写的,时间仓促,写的乱,见谅
procedure TForm1.BitBtn1Click(Sender: TObject);
const arrSecond :array[0..1] of string= ('00','30');
var
strminute,strSecond :string;
i,j,intcount :Integer;
begin
intcount := 1;
for i := 6 to 18 do
begin
for j := 0 to 1 do
begin
if (i = 18) and (j = 1) then Continue;
with ZTable1 do
begin
if i < 10 then
strminute := '0' + IntToStr(i)
else strminute := IntToStr(i);
strSecond := arrSecond[j];
Append;
FieldByName('id').AsInteger := intcount;
FieldByName('FTime').AsString := strminute + ':' + strSecond;
Post;
Inc(intcount);
end;
end;

end;

end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var
I,K,J,M,iCount:Integer;
myarray:array[0..1] of integer;
myStr:String;
begin
myarray[0]:=0;
myarray[1]:=30;
iCount:=1;
For I:=6 to 18 do
Begin
For J:=0 to 1 do
Begin
mystr:=Inttostr(I)+':'+Inttostr(myArray[J]);
Try
adoquery2.sql.text:='insert into table1(xh,ftime,date) values('+Inttostr(icount)+','''+myStr+''','''+DateToStr(Date)+''')';
adoquery2.execsql;
except
end;
Inc(iCount);
end;
end;
end;
 
用time做判断不行吗?
当系统时间为hh:00:00或hh:30:00触发事件
 
谢谢。我找到方法了。做一个固定的数据表把那些数据输入.不用程序写入什么了.省事情.给分.很感谢,谢谢各位!!
 
多人接受答案了。
 

Similar threads

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