只想让数据库保存一段时间的数据,就6天吧,假如今天是第7天,那么把今天的数据写入数据库后第一天的数据就自动消失,让数据库只保存6天的记录,应该怎么样写啊?各位大侠,可以给个思路或者代码吗?在线等,分不多,但立即给

解决方案 »

  1.   

    楼主可以在添加新的数据之后.再把数据排序(升),
    然后取第一记录的日期字段的值,再delete from youtable where rq=那个日期
      

  2.   

    自己的问题自己解决
    可怎么给分呢?
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       adoquery1.Close;
       adoquery1.SQL.Clear;
       adoquery1.SQL.Text:='select * from table1';
       adoquery1.Open;
       adoquery1.Edit;
       adoquery1.Append;
       adoquery1.FieldByName('date').AsString:=formatdatetime('yyyy-mm-dd',now);
       adoquery1.FieldByName('openprice').AsString:=edit1.Text;
       adoquery1.FieldByName('closeprice').AsString:=edit2.Text;
       adoquery1.FieldByName('highprice').AsString:=edit3.Text;
       adoquery1.FieldByName('lowprice').AsString:=edit4.Text;
       adoquery1.Post;
       adoquery1.First;
       adoquery1.Edit;
       adoquery1.Delete;
    end;
      

  3.   

    with adoquery1 do
    begin
      // 删除第一天的数据(数据库中保存了数据插入时间)
      Close;
      SQL.Text := 'Delete from table1 where date = ''' + DateToStr(Now - 6) + '''';
      ExecSQL;
    end;
      

  4.   

    上面的不行啊,如果之间隔了几天那怎么办啊?有礼拜6和天休息的哦还有是不是可以根据上一条记录的值计算出下一条记录的新添加的计算字段的值?
    procedure TForm1.ADOQuery1CalcFields(DataSet: TDataSet);
    begin
       adoquery1.FieldByName('ema').AsString:=inttostr((adoquery1.fieldbyname('closeprice').asinteger+adoquery1.fieldbyname('openprice').asinteger)div 2);
    end;
    但是这样的话不是根据上一条记录来计算的啊?如果要根据上条记录的值来计算新字段的值该怎么样搞啊?