如何使用Query控件(100分)

  • 主题发起人 主题发起人 jy
  • 开始时间 开始时间
J

jy

Unregistered / Unconfirmed
GUEST, unregistred user!
当我用Query控件的sql语言对数据库查询后,如何对查询结果进行编辑。
如何随机抽取特定条件的纪录。
 
写SQL语句,用Execsql
不至于吧!
 
sql语句中有多表的话用updatesql,只有一个table把RequestLive设置为true;
第二个问题不知道什么意思
 
查找数据用Quer1.locate函数,格式如下:
function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;
 
》如何对查询结果进行编辑?
用SQL就可以了。
》如何随机抽取特定条件的纪录?
什么意思?按照特定条件查询后的记录可以放在一个数据集中,再随机产生一个序号,
大于0,小于数据集的DATACOUNT,然后取出就可以了。
不知我的理解对不对?
 
如果是一个数据表,用TTable的Filter就行,在Filter中设置抽取特定的纪录的条件。
 
query1.edit;
query1.fieldbyname('fieldname').asstring:='修改的值';
如果是数值就用
query1.fieldbyname('fieldname').value:='修改的值';
query1.post;
 
TQuery 是从 TDataSet 继承的,你可以去理解 TDataSet,
上述问题就都解决了。动动脑筋!!!
 
第一个问题 query.requestlive:=true;
第二个问题 你可以用SQL的条件查询直接进行筛选的,
 
其實答案都差不多。若你的數據庫是Access﹐你將RequestLive設為True﹐然后就可以對
其做修改了。即Query1.Edit;改完了再Post就OK了。若你的數據庫是Oracle等大型數據庫﹐
你就還得設一個UpdateSQL控件﹐在Query中的UpdateObject中選定UpdateSQL的名稱﹐
再將RequestLive設為True﹐再在UpdateSQL中將Insert,Delete,Edit三個SQL設好﹐將Query
的CatchUpdate設為True﹐還有﹕在Query的OnUpdateRecord中加上﹕
try
Query1.UpdateObject:=UpdateSQL;
UpdateSQL.SetParams(UpdateKind);
UpdateSQL.ExecSQL(UpdateKind);
finally
UpdateAction:=uaApplied;
end;
在存盤按鈕上呼叫以下程式﹕
Query1.ApplyUpdates;
Query1.CommitUpdates;
即可。不能加在Query1的OnPost事件中﹐不然也會出問題。
第二個問題嘛就用Locate函數了。
 
1.如果要对某条记录进行编辑,先按条件locate某条记录,然后再对记录进行修改
with query1 do
begin
open;
Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions): Boolean; virtual;
fieldbyname('姓名').asstring:='qingxin';
edit;
post;
end;
2 .select 10 from query1
where ...
就可以从query1中选择10条记录,若要随即选取的话,应该再加一个随机函数即可!
希望以上信息能对你有用
 
1、如果要对某一条或几条特定记录进行编辑,直接用SQL UPDATE语句就可以搞定。
with query1 do
begin
active:=false;
sql.clear;
sql.add('update TableName set field1="value1,field2=value2…… ');
sql.add(format(' where 姓名="%S" ',['张三']);
execsql;
end;
2、如果随机抽取的特定记录要集中显示,可以将QUERY中相应记录保存到用内存表中。
 
多人接受答案了。
 
后退
顶部