如何赋给变量? ( 积分: 30 )

  • 主题发起人 主题发起人 frankie_24
  • 开始时间 开始时间
F

frankie_24

Unregistered / Unconfirmed
GUEST, unregistred user!
我用游标搜索出了符合条件的值,我想将这些值相加,怎么做啊>?
还有如何将搜索出的每一条记录都赋给一个定义的变量?
比较急啊,谢谢了..在线等...
 
没有人知道啊?>
随便说两句就可以啊
 
游标搜索出符合条件的值是不是指从数据库里提取的值
var
strSS :string;
begin
strSS := 数据库的字符串类型;
end;
 
如果是MSSQL,可以这样写:
代码:
declare @var1 Int
declare @var2 Int
declare cs1 Cursor FAST_FORWARD for 
		SELECT F1
		FROM TABLE1
OPEN cs1

FETCH NEXT FROM cs1
INTO @var1

WHILE @@FETCH_STATUS = 0
BEGIN
	SET @var2= @var2+@var1

	FETCH NEXT FROM cs1
	INTO @var1
END
CLOSE cs1
DEALLOCATE cs1
 
To yjfculy
是这个意思,就是提取出来的
能不能给我一个具体的例子,有点代码的,就是说:数据库的字符串类型应该怎么表示,谢谢

我现在没有别的办法就是把提取出的值,又放到一个表中,再重新搜索一下,真是晕了....
 
做一个循环就可以了。
while not qry.eof do
begin
var1:=qry.fieldbyname('aaa').asstring;
//处理var1
next;
end;
 
To :bellhuang

为什么我用了你的方法显示的都是一个值呢?
代码如下,你给我看看吧..
var
var1 :String;
begin
Str:='Exec OWNERPROCEDURE'; //我用的是存储过程
while not OpenSQL(Str).eof do //OpenSQL 是一个执行SQL的函数
begin
var1:=OpenSQL(Str).Fields[0].ASstring;
SHowMessage(var1);
next;
end;

应该是3个值
140
225
14
但是每次都是显示的140 ,是不是我用的不对啊,请教!
谢谢
 
没有人知道吗?
晕了...
 
哈。。你没在循环里移动指针
var
var1 :String;
begin
Str:='Exec OWNERPROCEDURE'; //我用的是存储过程
while not OpenSQL(Str).eof do //OpenSQL 是一个执行SQL的函数
begin
var1:=OpenSQL(Str).Fields[0].ASstring;
SHowMessage(var1);
OpenSql(str).next;
next;
end;
 
在循环里需要移动数据集当前记录指针。
 
还不如在数据库端,另外写一个统计的Procedure呢。
 
你在循环体中用OpenSQL(Str)的话,相当于又重新打开存储过程,当然只会取第一条记录了。你应该定义一个将OpenSQL(Str)给一个变量,然后再做循环。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
922
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部