两个问题:
1。有两字段(设为time_1,time_2)在access中格式为小数点两位。
  即可能有值:0 ;1.01.13.1...等等。现想在dbgrid中显示为诸如:00:00 ,01:01
等时间格式
   如果还有一个字段(设为day)用于存储是第几天到。,day的值为0到5之间的整数,为o表示当天,为1表示次日,为2表示第三天。我想在dbgrid中显示值为象“次日02:12"的格式,方法是通过取time_2的值。然后根据day的值(转换)来显示。。
    要求不另建表不改变原有数据本题60分
2。有两表:设为a,b本题40分
a表:                     b表             
------                  ---------------------
a_id    distance            price
1         0                 10     
2         20                 20     
3         45                50     
4         75                80     
5         31                 100     
6         10                 150     
7         32                 200   
要求结果为:
--------------------------------------
a_id    distance            price
1         0                  10   
2         20                 20     
3         45                 50     
4         75                 80     
5         31                 50     
6         10                 10     
7         32                 50   
即每条记录中,
先取distance值<=b表的price
然后,取b表中最小的值。
  怎么完成?

解决方案 »

  1.   

    select a.id,a.distance,min(b.price) from 
    a,b where a.distance<b.price
    group by a.id,a.distance第二个这样试试
      

  2.   

    function DoubleToTimeStr(AValue:Double):String;
     function Get2BitStr(ADouble:Double):String;
     var
      I:Integer;
      S:String;
     begin
      Result:='';
      S:=FloatTOStr(ADouble);
      for I:=0 to 2-Length(S)-1 do
        Result:='0'+Result;
      Result:=Result+S;
     end;
    var
     ADouble:Double;
     S1,S2:String;
    begin
     ADouble:=1.23;
     S1:=Get2BitStr(Int(ADouble));
     S2:=Get2BitStr((ADouble-Int(ADouble))*100);
     Result:=Format('%s:%s',[S1,S2]);{这就是你要的结果}
    end;
    你可以在OnCalcFields事件中,加入本函数进行计算.
      

  3.   

    Sorry,把ADouble=1.23删除,然后把Var中的ADouble的定义删除,然后把其它的ADouble改为AValue.原来我是一个过程,现在把它改为了函数,有些东西没有改好.:)
      

  4.   

    呵呵,这是改好的:)
    function DoubleToTimeStr(AValue:Double):String;
     function Get2BitStr(ADouble:Double):String;
     var
      I:Integer;
      S:String;
     begin
      Result:='';
      S:=FloatTOStr(ADouble);
      for I:=0 to 2-Length(S)-1 do
        Result:='0'+Result;
      Result:=Result+S;
     end;
    var
     S1,S2:String;
    begin
     S1:=Get2BitStr(Int(AValue));
     S2:=Get2BitStr((AValue-Int(AValue))*100);
     Result:=Format('%s:%s',[S1,S2]);{这就是你要的结果}
    end;DoubleToTimeStr(1.23)的结果为01:23