我在做报表的时候要实现,如果第一行的数据和第二行的数据相同的话,那么第二行的数据就不显示了
比如:宽度和高度都是属于外观,那么外观就显示在第一行,并且第一行外观下面的表格线要让它不显示出来
应该怎么在程序中设置呢?

解决方案 »

  1.   

    建議在查詢語句中處理SELECT DISTINCT au_id
    FROM titleauthor來將重復的去掉!
      

  2.   

    qrreport生成這種格式有點難度;
    水晶報表我沒有用過;我的建議是放棄
      

  3.   

    试下,
    如有Table1
        ItemID, ItemTypeID,项目类别(ItemType)   项目名称(ItemName)
          1 1 外观       长度
          2 1 外观       宽度
          3 2 温度      里面温度
          4 2 温度       外面温度说明:ItemID为自动编号
          ItemTypeID 为类别ID号
    //建立存储过程如下:
    CREATE PROCEDURE PROCEDURE1
    ASSELECT DISTINCT ItemTypeID,ItemType INTO #TMP01 FROM table1CREATE TABLE #Result(
    [ItemID][int],
    [TypeID][int],
    [ItemTypeID][int],
    [ItemType][varchar](50),
    [ItemName][varchar](50),
    )DECLARE @TypeID int,@ItemtypeID int,@ItemType varchar(50),@ItemName Varchar(50)SELECT @TypeID=0DECLARE Item_Cursor SCROLL CURSOR FOR SELECT ItemType,ItemtypeID FROM #TMP01 
    OPEN Item_Cursor
    FETCH Item_Cursor INTO @ItemType,@ItemtypeID
    WHILE @@FETCH_STATUS=0
    BEGIN   INSERT #Result(TypeID,ItemID,ItemTypeID,ItemType,ItemName)
       SELECT TOP 1 @TypeID,ItemID,@ItemtypeID,@ItemType,ItemName FROM table1 WHERE ItemType=@ItemType
      
    FETCH Item_Cursor INTO @ItemType,@ItemtypeID
    END
    CLOSE Item_Cursor
    DEALLOCATE Item_CursorINSERT INTO #Result(TypeID,ItemID,ItemTypeID,ItemType,ItemName)
      SELECT 1,ItemID,ItemtypeID,ItemType,ItemName FROM table1
      WHERE ItemID NOT IN (SELECT itemID from #Result)UPDATE #Result SET ItemType=NULL WHERE TypeID<>0SELECT ItemType,ItemName FROM #Result ORDER BY ItemTypeID,TypeID调用存储过程
    Exec Procedure1
    得如下结果:
    ItemType  ItemName
    外观 长度
    NULL 宽度
    温度 里面温度
    NULL 外面温度
      

  4.   

    如果用fastreport,可用“压缩重复值”即可实现
      

  5.   

    不必要这么难吧,用quickreport中onNeedData事件作不久可以了。设定一个old外观,当新外观等于旧外观时,就等于空,不等于的时候就打印,并设置old外观等于新外观
      

  6.   

    用SQL语句可以 约束不显示 重复的记录呀,它可以有满足条件的记录有多条的时候,只显示第一条呀