listview中的第5列中有日期
listview中的内容是从数据库中读出
listview的行数不确定
我想让当前的时间减去listview第5列中的日期
将差值改写到数据库中”费用“字段里,并且更新listview第7列中费用下的相对映的内容!
请大家尽量写清楚一点,我是初学,谢谢!

解决方案 »

  1.   

    或者也可以直接到数据库操作
    数据库中的内容是在当前数据表中的借出日期里,listview第5列就是读取这个字段中的内容
    需要达到的就是上面的功能,刚才那一贴没人能回答正确!
      

  2.   

    直接用sql在数据库改,然后刷新ListView的内容
      

  3.   

    问题是我不懂呀!
    我希望能给出原码
    刚才有朋友给出这样的代码,但编译通不过while not adotable1.eof do
     with adotable1 do
    begin
      edit;
      fieldbyname('费用').asinteger := date-fieldbyname('借出日期').asdatetime;end;
     adotable1.Next;
      

  4.   

    第5列
    listview1.items.subitems.strings[4];就是它的值
    转换为日期
    strtodatetime(listview1.items.subitems.strings[4]);
    用当前时间减
    得到的值放到第7列中
    var
      s: string;
      s := datetimetostr(now() -  strtodatetime(listview1.items.subitems.strings[4]));
    listview1.items.subitems.strings[6] :=  s;
    更新数据库用s去更新
    'update tablename set 费用 = ' + s 要加条件
      

  5.   

    假设有查询控件query1
    表名是table1,存放日期的字段名是date1,费用字段是f1
    可以这样写
    query1.sql.text:='update table1 set f1=sysdate-date1';
    query1.execsql;
      

  6.   

    ado1.sql.text:='update 当前数据 set 费用=sysdate-借出日期';
    ado1.execsql;运行时会出错我需要的是每半小时对数据库进行检查,如果当前日期-借出日期的值大于1那么就将差值*2写到费用上去,很简单的呀……
    我可能没有说明白…
      

  7.   

    基本同意 zsy_good(只要坚定不移的走下去,那一定会成功) ,楼主出错出在哪呢?
      

  8.   

    出错说是
    sysdate没有默认值
      

  9.   

    我觉得好像不对呀!
    ado1.sql.text:='update 当前数据 set 费用=sysdate-借出日期';
    ado1.execsql;这条代码没有历遍数据库能修改其中的所有内容吗?
      

  10.   

    当然能修改全部内容了
    如果你还是不明白,就在QQ上说吧
    把你的QQ号给我
      

  11.   

    呵呵,你那条语句没有指定条件的话就是说操作对象是全体记录了!
    对了,Sysdata指什么呢?是数据库的函数吗?我好象没见过这种函数呢!
      

  12.   

    我用的是access
    我的qq是948905