用while.. for.. if.. 就搞定了

解决方案 »

  1.   

    to:zgb
      可以说的详细一点吗?
      

  2.   

    如果您用 Printer 来打印(直接打印到打印机),编程序循环打印;如果您用QuickRep来打印,在 SQL Server 中写存储过程来取数据:
    (假设表为:test2(name char(10),num integer))Create procedure print_test
    asSET NOCOUNT ONdeclare @num integer
    declare @name char(10)
    declare @i integerCreate table #temp1 (name char(10))
     
    DECLARE test_cursor CURSOR FOR 
      SELECT name,num FROM test2OPEN test_cursorFETCH NEXT FROM test_cursor 
      INTO @name, @numWHILE @@FETCH_STATUS = 0
    BEGIN  select @i = 0  while @i < @num
      begin    insert into #temp1 values(@name)    select @i = @i + 1
      
      end    FETCH NEXT FROM test_cursor 
         INTO @name, @numENDCLOSE test_cursorDEALLOCATE test_cursorselect * from #temp1 GO
     
      

  3.   

     to:jingpingyi
    我存储过程不熟,用printer如何打印,可以给举个例子吗?
      

  4.   

    //我没有试过,不一定能正确打印,但方法应该不错。
      x := 10;
      y := 10;
      gs := 1; 
      printer.begindoc;
      while Query1.eof do  
        for i := 1 to Query1.fieldbyname('num').asinteger do 
        begin
          x := x + 100;    //把 x 定位到合适的位置
          printer.Canvas.TextOut(x,y,Query1.fieldbyname('name').asstring);
          gs := gs+1;   //一行已打印的个数; 
          if gs>10 then
          begin
            x := 10; //行的开始位置
            y := y + 50 ; //下一行
            if y > 1000 then   //页尾
            begin
              printer.EndDoc;    //换页
              Printer.begindoc;
            end;
          end; 
        end;
        Query1.next;
      end;
      printer.enddoc;============================================
    //用存储过程的话,改下我上面的存储过程就可以了:
      Create Table #temp1(
        name1 char(10),
        name2 char(10),
        name3 char(10), 
        name4 char(10),
        name5 char(10),
        name6 char(10), 
        name7 char(10),
        name8 char(10),
        name9 char(10),
        name10 char(10)
      )
    然后在往 #Temp1 中 Insert 时做相应的一些修改。