使用Sql(TQuery控件的SQL)查询数据库,如何将返回的结果取出(赋值给变量)?(100分)

  • 主题发起人 主题发起人 魏启明
  • 开始时间 开始时间

魏启明

Unregistered / Unconfirmed
GUEST, unregistred user!
在查询时可以确信得到的只是一个数字或者字符串;但是返回的结果却是一个数据集;
如何将该结果赋值给一个变量。

请指教!
 
不可能你取出来的肯定是数据集
下面的仅供参考
function sqllookup(sql_str:string):variant;
begin
with dtmdl_main.ADOQryShare do
begin
close;
sql.clear;
sql.add(sql_str);
open;
end;
if dtmdl_main.ADOQryShare.RecordCount=0 then
begin
if dtmdl_main.ADOQryShare.Fields[0].datatype in [ftsmallint,ftinteger,ftfloat] then result:=0
else result:='';
end
else
begin
if dtmdl_main.ADOQryShare.Fields[0].IsNull then
begin
if dtmdl_main.ADOQryShare.Fields[0].datatype in [ftsmallint,ftinteger,ftfloat] then result:=0
else result:='';
end
else
result:=dtmdl_main.ADOQryShare.Fields[0].value;
end;
end;
 
var
TmpStr:String;
begin
with Query1 Do
begin
close;
sql.clear;
sql.add(Your Sql);
open;
While not Eof Do
Begin
TmpStr:=FieldByName(Fields Name).AsString;
Next;
End;
end;
end;
 
一个值,返回的也是结果集。除非用中间层控制。
 
lijianbao32,
什么意思
你是说只用sql来定位吗?
 
sql如此流行和强大,难道会没有考虑到有可能需要对数据进行单独处理吗?
 
阁下真会开玩笑
 
sql如此流行和强大,难道会没有考虑到有可能需要对数据进行单独处理吗?
 
s:=fields[0].asstring
n:=fields[0].asinteger
 
即使只是一个数字或者字符串,也是用数据集的形式返回.
 
var
query1:tquery;
i:integer;
s:string;
procedure abc;
begin
i:=query1['字段名'];
或者
s:=query1['字段名'];
end;
注:实际返回值是variant型的值,所以有可能是null,如果真是这程情况,就必须先判断
一下,不然直接赋值是会出错的!
 
返回数字Fields[字段index].asinteger;
返回字符串Fields[字段index].asstring;
 
各位:
我的前提是使用sql语句
如果不是使用sql,我也会的。
 
SQL?都是数据集吧?使用Cursor?好像也不太行。
您的客户端如何使用?

可以使用XML(SqlServe,Oracle都支持)来查询,返回的就是一个XML的值,不过操作有点麻烦。
 
SQL本来就只是对集合操作的,怎么可能只返回一个元素?!
如果核桃长出来就只有仁,那该多好!但可能吗?
 
我有相关的资料.可能比较多,我已发给你了.程序较多你自己查找一下吧.如果找到了就加
我分吧.哈哈 :)
 
多人接受答案了。
 
后退
顶部