我有一个入库表,现在要从入库表中读出某个月数据并显示到DBGrid中,但是要求DBGrid中显示的日期要每天都有,比如说今天是11月17号,查询11月的入库记录,DBgrid就要如下显示,第一行是字段名,入库表中入库日期对应的字段是rkrq,
入库日期 …… ……
11-01 …… ……
11-02
…………
11-17
  但是如果有些天没有入库,例如我这些天只有4号和5号入库了,那么直接从数据库中读取DBGrid就会只显示两行
11-04 …… ……
11-05 …… ……
  我怎么把其他的行制作出来呢?本来在数据库中是没有的

解决方案 »

  1.   


    declare @date datetime   
    set @date='2009-02-05'  
      
    select [day]=convert(varchar,DATEADD(mm,DATEDIFF(mm,0,@date),0)+number,112)   
    from master..spt_values   
    where type='p'  
      and number< datediff(dd,@date,dateadd(mm,1,@date))   
      
    /*  
     day  
    20090201  
    20090202  
    20090203  
    20090204  
    20090205  
    20090206  
    20090207  
    20090208  
    20090209  
    20090210  
    20090211  
    20090212  
    20090213  
    20090214  
    20090215  
    20090216  
    20090217  
    20090218  
    20090219  
    20090220  
    20090221  
    20090222  
    20090223  
    20090224  
    20090225  
    20090226  
    20090227  
    20090228  
    */  
      

  2.   

    使用master..spt_values,或者自己建个
    create table tbNumber(id int)
    GO
    declare @i int
    set @i=1
    while @i<4001 --4000个应该足够了
    begin
    insert into tbnumber  select @i
    set @i=@i+1
    end--
    declare @s varchar(10)
     set @s=left(convert(varchar(10),getdate(),108),8)+'01' --本月首日
     select * from tb,tbnumber where dateadd(day,tbnumber.id,cast(@s as datetime))=createtime and tbnumber.id between 1 and 30