用while.. for.. if.. 就搞定了
解决方案 »
- 请问Delphi如何按要求的格式把SQL Server 2005 数据库中表的内容输出成excel文档?
- 有人还在用BDE吗,请教一个资料丢失问题
- 问一个数学问题!
- Clientdataset1:cann't perform this operation on a close dataset!老是出这个问题!立马给分
- 只能添加,查询,不能更新,删除。
- 讨论:用MIDAS架构做B/S系统的优势、劣势?
- 如何判断批更新模式下的ADO数据集的数据已经改变,类似于BDE数据集的UpdendPending属性
- 网络共享问题:程序要用到server上的*.txt文件,但该文件又不能让用户直接打开,应该怎么办?
- 春节前还要出差!真倒霉!公司真是剥削呀!
- 我用Delphi做好一个程序后,怎么打包成安装文件?
- 谁能推荐有关编写vxd的好书?
- .res文件的格式?
可以说的详细一点吗?
(假设表为: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
我存储过程不熟,用printer如何打印,可以给举个例子吗?
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 时做相应的一些修改。