也可发到[email protected]  (shen__ye 是两个下划线),但请在此留言,我好加分,多谢了!

解决方案 »

  1.   

    To byrybye(BYRY):
       多谢关注!
       我对Delphi数据库不熟,求实现程序,越详细越好。
    To yg_xh(果皮):多谢帮忙!
      

  2.   

    你需要怎样?
    如果求哪个时间段,那么比较容易,假设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;
      

  3.   

    明白,我大概想一下,你看行吗?
    你可以用控件(TDATETIMEPICKER),或别的方法(程序控制)。
    每5秒,触发数据操作事件(没问题吧)[有时间记数,分为单位的]
    数据操作:判断时间和数据表里的最大时间,是否一样,是:依次
    判断,字段是否为空,为空,就UPDATE一下
    否:就加记录,
    这样比较笨。可能有好的方法,严格控制,循环次数,我想象了,该睡了
      

  4.   

      Oracle数据库中有一个公共表--dual,无论你用何身份登录都可访问,你可以通过SQL语句从表中获得当时的系统时间。
      SQL语句为:select sysdate from dual,选出来的系统时间包括了日期及时间,将时间部分用format函数提取出来,例如dtime=format(sysdate,"h:m:s"),再加上上面某个网友介绍的方法就可得出需要存的字段名了。或者,用最原始的方法,利用一个select case语句,你想点就点啦,明白了吗?
      

  5.   

    'select sysdate from dual'取当前时间
    然后按照Checky的方法。
    注意:你的表要建好
      

  6.   

    我的想法和‘chechy(chechy)’的一样。只是少了一个在一分钟以内的判断!!这个也是不难的!
    还有就是‘byrybye(BYRY)’的想法,这个好象是主动的存储方法,就是根据时间来存储的!而‘checht(chechy)’是当数据过来时根据当前时间在来判断存储的!两个方法有一定的区别!
    不过看起来都行!这就要看你的了!!觉得哪个合适就用哪个! 
      

  7.   

    在一个OnTimer事件中写吧:
       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为关键字,每一争钟测一次" 是不够严密的!!!
      

  8.   

    这个问题是有关控制与采样方面的,首先,要设置一个分钟控制。用于一次增加一个记录。再每每5秒采一次样作为一个新的纪录。用timer控件。
    在体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;
    //上面这儿由作者自己根据情况来确定代码。
      

  9.   

    试试下面的代码;
    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;
      

  10.   

    改正:(不好意思,上次变量定义重复)
    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; 
      

  11.   

    按first_lover(冷雨夜) 的意思,你定义一个数组(second1,second2...second12),收集完12条记录后再insert到数据库就行。
      

  12.   

    数据库本身的设计就有问题,谁还在采用col1, col2, ... coln的做法?
      

  13.   

    因为我是使用C++的,Pascal不太熟悉,所以可能有些用法不对,就当成伪代码看吧。function CreateSQL(data:yourtype,min:integer,sec:integer):string;
    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
      

  14.   

    改改
    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;