用Tquery访问数据库,用select语句找到多条记录,我怎么能知道这些值(谢谢)(200分)

  • 主题发起人 主题发起人 sunny01
  • 开始时间 开始时间
S

sunny01

Unregistered / Unconfirmed
GUEST, unregistred user!
用Tquery访问数据库,用select语句找到多条记录,我怎么能知道这些值
在Delphi里有没有象VB的数据集一样的功能
 
用TQuery的指针控制行,用TQuery的Fields[Index].AsString/AsInteger...访问列。
 
用Tquery.fieldbyname('字段名').value即可.
 
var
a,...:string;
根据情况改变,可用double;integer等.


Query.First;
while not Query.Eof do
begin
a := Query.FieldByName().AsString
.
.
.
根据情况改变,可用AsFloat;AsInteger等.
Query.Next;

end;
 
这分也太好拿了。提问的兄弟看来是数据库新手。贴一段代码给你。
 
//从表user-admin中取所有用户的ID,存入Users列表中。
users : TStringlist ;
...
with query1 do
begin
close;
sql.clear ;
sql.add('select id from user_admin ' );
open;
first;
while not eof do
begin
users.add(fieldbyname('id').asstring);
next;
end;
end;
// query1.fieldbyname('id').asstring就是访问数据集的语句。这里的ID是
字符类型字段。
其他如 整数(query1.fieldbyname('fieldname').asinteger)
浮点数(query1.fieldbyname('fieldname').AsFloat)
布尔类型query1.fieldbyname('fieldname').AsBoolean
金额类型 query1.fieldbyname('fieldname').AsCurrency
日期时间query1.fieldbyname('fieldname').AsDateTime
variant类型query1.fieldbyname('fieldname').AsVariant
可查TField的帮助。
 
他们说的够详细的了,看样子没分拿了!












 
g:BrainTwist
 
哦,来晚了。
 
首先谢谢各位回答
再下能否再问:如果我的数据量很大,一个一个记录next是否太麻烦
这与用TTable似乎没什么区别?难道Delphi如此?
 
那要看你要怎样处理这些数据了。
如果由用户编辑,用 dbgrid 即可,这样你就不必因
“数据量很大,一个一个记录next,太麻烦了”
具体做法:
1.加一个datasource, dataset 置成 你的 query
2.放一个dbgrid, datasource 置成 上面的 datasource
3.query 的active置成 true
4.ok
 
来晚了。
 
>>如果我的数据量很大,一个一个记录next是否太麻烦
>>这与用TTable似乎没什么区别?难道Delphi如此?
这要看您的需要,若是您想一次改大量有规律性的数据,
您可以用UPDATE,若是您无法找到规律,那就只有
一个一个记录的处理了.
 
使用TQuery查询到数据后,使用fieldByname('field').AsString(AsFloat,asInteger
等...)取得查询数据的值,而使用next只是在取得的数据中的下一个,所以使用TQuery
比TTable来的有效率。
 
Tquery.fieldbyname('字段名').value
 
不知他要问什么。
 
>>不知他要问什么。
同意!!
 
所有改动完成后,一个Update搞定,系统自动根据状态位提交Sever一个SQL批。
 
多人接受答案了。
 
后退
顶部