也可发到[email protected] (shen__ye 是两个下划线),但请在此留言,我好加分,多谢了!
解决方案 »
- windows server2003升2008 SocketConnection1无法连接
- 回调函数怎么传递参数呢?
- ******************(100分问题)如何才能在一个AUTOMATION对象的方法中返回自定义的AUTOMATION对象?****************
- 如何让程序至始至终让鼠标保持正常指针,而不要出现Sql查询时的crHourGlass形状??
- 谁能介绍一款比较好的界面控件,来者有分
- 为什么在tChart动态添加 Series 后 不能 显示出来 ?????????????????????????? 急!!!!!!!!!
- 诚招山东程序员,工作地烟台。
- 怎么实现DBGrid的宽度可以在运行状态下改变?
- delphi中如何实现特定的一个或几个form中 使combox失去对鼠标滚轮的响应
- delphi文本中数组查找与比较
- 大家周末好,我今天用delphi6做一控件,却遇到一个问题...
- batchmove有什么用
多谢关注!
我对Delphi数据库不熟,求实现程序,越详细越好。
To yg_xh(果皮):多谢帮忙!
如果求哪个时间段,那么比较容易,假设s代表秒数:
var
i: Integer;
FieldName: string;i := s div 5;
if s mod 5 <> 0 then
Inc(i);
FieldName := Format('second%d', [i]);
DataSet.Edit;
DataSet[FieldName] := YourSecondData;
DataSet.Post;
你可以用控件(TDATETIMEPICKER),或别的方法(程序控制)。
每5秒,触发数据操作事件(没问题吧)[有时间记数,分为单位的]
数据操作:判断时间和数据表里的最大时间,是否一样,是:依次
判断,字段是否为空,为空,就UPDATE一下
否:就加记录,
这样比较笨。可能有好的方法,严格控制,循环次数,我想象了,该睡了
SQL语句为:select sysdate from dual,选出来的系统时间包括了日期及时间,将时间部分用format函数提取出来,例如dtime=format(sysdate,"h:m:s"),再加上上面某个网友介绍的方法就可得出需要存的字段名了。或者,用最原始的方法,利用一个select case语句,你想点就点啦,明白了吗?
然后按照Checky的方法。
注意:你的表要建好
还有就是‘byrybye(BYRY)’的想法,这个好象是主动的存储方法,就是根据时间来存储的!而‘checht(chechy)’是当数据过来时根据当前时间在来判断存储的!两个方法有一定的区别!
不过看起来都行!这就要看你的了!!觉得哪个合适就用哪个!
var
MySec : integer ;
SqlStr : string ;
begin
Decodetime(now,hour,minute,second,Msec);
MySec := trunc(second/5) ;
SqlStr := 'update tab set ('second'+IntToStr(MySec)+'='+data+') where minute='+minute;
query1.execSQL;
你的"Minute为关键字,每一争钟测一次" 是不够严密的!!!
在体timer1ontime中加入(interval=5000):
现在要看是否能保证一分钟采到完整的顺序量。因此,
要在timer1time 中备份一个yourseconddata1[]和yourseconddata begin
yourseconddata1[num]:=getyournumber; //采样;
if num=12 then begin
num:=num+1;
yourseconddata:=yourseconddata1;
end
else
num:=1;
end;//这儿的num为一个全局变量;在 timer2time中( 用于分钟控制)填入:
var
I:integer;
begin
DataSet.Edit;
for I:=1 to 12 do
Begin
FieldName := Format('second%d', [i]);
DataSet[FieldName] := YourSecondData[I];
End;
DataSet.Post;
End;
//上面这儿由作者自己根据情况来确定代码。
procedure TForm1.Timer1Timer(Sender: TObject);
var
Hour, Min, Sec, MSec,mysec: Word;
sec : Integer;
begin
Decodetime(now,Hour,Min,MSec,mysec);
sec := MSec mod 5 ;
if sec = 0 then
begin
sec := MSec div 5 ;
if sec <> 0 then
begin
DataSet.Edit;
FieldName := Format('second%d', [i]);
DataSet[FieldName] := YourSecondData[I];//插入秒数据
end
else begin
DataSet.Append;
DataSet['minute'] := YourSecondData;//插入分钟数据
end;
DataSet.post;
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
Hour, Min, Sec, MSec,mysec: Word;
sect : Integer;
begin
Decodetime(now,Hour,Min,MSec,mysec);
sect := MSec mod 5 ;
if sect = 0 then
begin
sect := MSec div 5 ;
if sect <> 0 then
begin
DataSet.Edit;
FieldName := Format('second%d', [i]);
DataSet[FieldName] := YourSecondData[I];//插入秒数据
end
else begin
DataSet.Append;
DataSet['minute'] := YourSecondData;//插入分钟数据
end;
DataSet.post;
end;
end;
var
field:string;
begin
field := concat('second',str((sec div 5) + 1));
if (sec div 5) > 0 then
CreateSQL := concat('update yourtable set ',field,' = ',str(data),' where minute = ',str(min))
else
CreateSQL := concat('insert into yourtable(minute,',field,') values(',str(min),',',str(data),')');
end
procedure TForm1.Timer1Timer(Sender: TObject);
var
Hour, Min, Sec: Word;
i:integer;
begin
Decodetime(now,Hour,Min,Sec);
i:=Sec DIV 5;
if i>0 then
begin
table1.edit;
table1.Fields[i].value := YourSecondData[i];//插入秒数据
end else //i:=0;
begin
table1.Append;
table1.Fields[i].value := YourSecondData; //插入分钟数据
end;
end;