我在QUERY中用SQL实现查询功能,如何将查询出的结果进行修改(50分)

T

tullip

Unregistered / Unconfirmed
GUEST, unregistred user!
我在QUERY中用SQL实现查询功能,如何将查询出的结果进行修改。谢谢!
这是我的查询语句:
query1.Close;{首先关闭query1}
query1.SQL.Clear;{置空SQL语句}
query1.SQL.Add("select *");
query1.SQL.Add("from claim_data");
query1.SQL.Add("where claim_data.部门=:p1");
query1.ParamByName("p1").AsString:=edit1.Text;
query1.Prepare;{准备展开query1语句}
query1.Open;{展开}
{将查询出的字段显示在EDIT2中}
edit2.Text:=query1.fieldbyname("部门").asstring;
end;

我想问问,我用什么语句可以修改EDIT2中的内容,并且将修改的内容保存。
 
1、query的requestlive:=true,此时可以直接对query结果编辑
2、你可以在你的edit2的onchange事件里判断,将新值写回去
或者用dbedit
 
您能不能给我写一段详细点的程序,谢谢
 
query1.edit;
query1.fieldbyname("部门").asstring:=edit2.Text;
query1.post;

 
先修改edit2的值
query1.edit
query1.fieldbyname("部门").asstring:= edit2.Text;
query1.post
 
jsxjd你好
你的这种方法只可以修改表中的第一行的,但是我查询的是第二行时就不可以了
 
更正:
事件写在onexit里更合适
代码如下:

procedure Tform1.Edit2exit(Sender: TObject);
begin
if ls<>edit2.text then //ls为全局变量
begin
query1.requestlive:=true;
query1.active:=true;
if query1.Locate('字段名',ls,[]) then
begin
query1.Active:=true;
query1.Edit;
query1.FieldByName('字段名').AsString:=edit2.text;
query1.Post;
end;
end;
end;
 
你应该象写tabel一样的用几个基本的BUTTON来实现各个工能
用一个EDIT将要查询的条件写入,写EDIT的代码如下:
query1.close;
query1.sql.clear;
query1.sql.add('select name,age from rskb where name=:num');
query1.parambyname('num').asstring:=EDIT1.text;
query1.prepare;
query1.open;
EIDT2。TEXT:=query1.fieldbyname('name').asstring;
在用修改按钮控制修改状态、写上一条、下一条进行记录的移动,写给保存按钮将数据写会
数据库就能实现你要的功能了
 
lanbing1400你好:
我实在是太笨了,你给的程序我还是没有用成功,请您在给详细一点。


谢谢!
 
query1.Close;{首先关闭query1}
query1.SQL.Clear;{置空SQL语句}
query1.SQL.Add("select *");
query1.SQL.Add("from claim_data");
query1.SQL.Add("where claim_data.部门=:p1");
query1.ParamByName("p1").AsString:=edit1.Text;
query1.Prepare;{准备展开query1语句}
query1.Open;{展开}
{将查询出的字段显示在EDIT2中}
edit2.Text:=query1.fieldbyname("部门").asstring;
for i:=0 to query1.recordcount
begin
Query1.edit;
query1.fieldbyname('').asstring:=Trim(edit1.text);
query1.post;
query1.next;
end;
end;




 
我也是新手,建议你先看一点delphi关于数据库的书,很好懂的。
像你上面的问题
肯定要用到一个循环
for i:=0 to query1.recordcount do //query1.recordcount为query1数据集中数据数返回整数
begin
Query1.edit;//使数据库处于编辑状态,还可用query1.append
query1.fieldbyname('字段名').asstring:=Trim(edit1.text);
query1.post;//提教
query1.next;//使当前记录移到下一条记录
end;

 
if query1.recordcount>0 then
begin
query1.first;
while not query1.eof do
begin
Query1.edit
query1.fieldbyname('字段名').asstring:=Trim(edit1.text);
query1.post;
query1.next;
end;
end;
 
多人接受答案了。
 
顶部