保存和删除记录之后窗口的listview显示的数据没有自动更新
listview和删除按纽是在form1 ,保存按纽是在form2,用vpq_query查询的
如何让它自动更新数据呢,谢谢!procedure Tfrm_leaderlist.cmd_delClick(Sender: TObject);
var
namestr,pidstr : string;
ListItem : TListItem;
Query : TADOQuery;
begin
ListItem := ListView1.Selected;
if ListItem = nil then
Exit;
pidstr := trim(ListView1.Selected.Caption);
namestr := trim(Listview1.Selected.SubItems[0]);
if pidstr = '' then exit;
if MessageBox(handle,pchar('ÄãÕæµÄҪɾ³ý"'+namestr+'"£¿'),'ɾ³ý',MB_YESNO+MB_ICONQUESTION)<>IDYES then
exit; Query := TADOQuery.Create(Self);
try
Query.ConnectionString :=vgs_ConnStr;
with query do
begin
close;
sql.Clear;
sql.Add('delete t_leader where leader_id=:leader_id');
parameters.ParamByName('leader_id').Value:=strtoint(pidstr);
try
execsql;
except
showmessage('Êý¾Ýɾ³ý²»³É¹¦!');
exit;
end;
end; finally
Query.Close;
Query.Free;
end;
end;procedure Tfrm_leaderlist.FormShow(Sender: TObject);
var
listitem:Tlistitem;
begin
vpq_query:=Tadoquery.Create(nil);
vpq_query.ConnectionString:=vgs_connstr;
with vpq_query do
begin
close;
sql.Clear;
sql.Add('select * from t_leader order by leader_id');
try
open;
except
execsql;;
end;
end;
while not vpq_query.Eof do
begin
listitem:=listview1.Items.Add;
listitem.Caption:=vpq_query.fieldbyname('leader_id').AsString;
listitem.SubItems.Add(trim(vpq_query.fieldbyname('leader_name').asstring));
listitem.SubItems.Add(trim(vpq_query.fieldbyname('re').asstring));
vpq_query.Next;
end;
end;procedure Tfrm_operate.saveClick(Sender: TObject);
begin
saveinfo;
if not chkAddContinous.Checked then
Close
else
begin
txt_kind.text:=f_autoaddid('leader_id','t_leader',2);
end;
end;procedure Tfrm_operate.saveinfo;
var
SqlStr : String;
query : Tadoquery;
opeid : string;
begin
query := Tadoquery.Create(self);
try
query.ConnectionString :=vgs_ConnStr;
if chkAddContinous.Visible then
begin //Ôö¼Ó
query.Close;
query.SQL.Clear;
query.SQL.Add('insert into t_leader(leader_id,leader_name,re) values (:leader_id,:leader_name,:re)');
query.Parameters.ParamByName('leader_id').Value:=strtoint(txt_kind.Text);
query.Parameters.ParamByName('leader_name').Value:=trim(txt_name.Text);
try
query.ExecSQL;
except
showmessage('Êý¾ÝÔö¼Ó³ö´í£¬ÇëÓëϵͳ¹ÜÀíÈËÔ±ÁªÏµ£¡');
exit;
end;
end
else
begin //±à¼­
query.Close;
query.SQL.Clear;
query.SQL.Add('update t_leader set leader_name=:leader_name,re=:re,');
query.SQL.Add('content=:content,leader_name=:leader_name,re=:re ');
query.sql.add('where leader_id=:leader_id');
query.Parameters.ParamByName('leader_id').Value:=strtoint(txt_kind.Text);
query.Parameters.ParamByName('leader_name').Value:=trim(txt_name.text);
query.Parameters.ParamByName('re').Value:=trim(txt_re.Text);
try
query.ExecSQL;
except
showmessage('Êý¾ÝÐ޸ijö´í£¬ÇëÓëϵͳ¹ÜÀíÈËÔ±ÁªÏµ£¡');
exit;
end;
end;
finally
query.close;
query.Free;
end;
end;
end;
listview和删除按纽是在form1 ,保存按纽是在form2,用vpq_query查询的
如何让它自动更新数据呢,谢谢!procedure Tfrm_leaderlist.cmd_delClick(Sender: TObject);
var
namestr,pidstr : string;
ListItem : TListItem;
Query : TADOQuery;
begin
ListItem := ListView1.Selected;
if ListItem = nil then
Exit;
pidstr := trim(ListView1.Selected.Caption);
namestr := trim(Listview1.Selected.SubItems[0]);
if pidstr = '' then exit;
if MessageBox(handle,pchar('ÄãÕæµÄҪɾ³ý"'+namestr+'"£¿'),'ɾ³ý',MB_YESNO+MB_ICONQUESTION)<>IDYES then
exit; Query := TADOQuery.Create(Self);
try
Query.ConnectionString :=vgs_ConnStr;
with query do
begin
close;
sql.Clear;
sql.Add('delete t_leader where leader_id=:leader_id');
parameters.ParamByName('leader_id').Value:=strtoint(pidstr);
try
execsql;
except
showmessage('Êý¾Ýɾ³ý²»³É¹¦!');
exit;
end;
end; finally
Query.Close;
Query.Free;
end;
end;procedure Tfrm_leaderlist.FormShow(Sender: TObject);
var
listitem:Tlistitem;
begin
vpq_query:=Tadoquery.Create(nil);
vpq_query.ConnectionString:=vgs_connstr;
with vpq_query do
begin
close;
sql.Clear;
sql.Add('select * from t_leader order by leader_id');
try
open;
except
execsql;;
end;
end;
while not vpq_query.Eof do
begin
listitem:=listview1.Items.Add;
listitem.Caption:=vpq_query.fieldbyname('leader_id').AsString;
listitem.SubItems.Add(trim(vpq_query.fieldbyname('leader_name').asstring));
listitem.SubItems.Add(trim(vpq_query.fieldbyname('re').asstring));
vpq_query.Next;
end;
end;procedure Tfrm_operate.saveClick(Sender: TObject);
begin
saveinfo;
if not chkAddContinous.Checked then
Close
else
begin
txt_kind.text:=f_autoaddid('leader_id','t_leader',2);
end;
end;procedure Tfrm_operate.saveinfo;
var
SqlStr : String;
query : Tadoquery;
opeid : string;
begin
query := Tadoquery.Create(self);
try
query.ConnectionString :=vgs_ConnStr;
if chkAddContinous.Visible then
begin //Ôö¼Ó
query.Close;
query.SQL.Clear;
query.SQL.Add('insert into t_leader(leader_id,leader_name,re) values (:leader_id,:leader_name,:re)');
query.Parameters.ParamByName('leader_id').Value:=strtoint(txt_kind.Text);
query.Parameters.ParamByName('leader_name').Value:=trim(txt_name.Text);
try
query.ExecSQL;
except
showmessage('Êý¾ÝÔö¼Ó³ö´í£¬ÇëÓëϵͳ¹ÜÀíÈËÔ±ÁªÏµ£¡');
exit;
end;
end
else
begin //±à¼­
query.Close;
query.SQL.Clear;
query.SQL.Add('update t_leader set leader_name=:leader_name,re=:re,');
query.SQL.Add('content=:content,leader_name=:leader_name,re=:re ');
query.sql.add('where leader_id=:leader_id');
query.Parameters.ParamByName('leader_id').Value:=strtoint(txt_kind.Text);
query.Parameters.ParamByName('leader_name').Value:=trim(txt_name.text);
query.Parameters.ParamByName('re').Value:=trim(txt_re.Text);
try
query.ExecSQL;
except
showmessage('Êý¾ÝÐ޸ijö´í£¬ÇëÓëϵͳ¹ÜÀíÈËÔ±ÁªÏµ£¡');
exit;
end;
end;
finally
query.close;
query.Free;
end;
end;
end;
解决方案 »
- Delphi 可以将函数在定义时指明连接到或者继承到某个函数吗?
- 界面已经开发好了,都用的是标准VCL,怎么改成skin的?
- 报表页面显示问?最后一条记录后增加‘以下为空’然后都是空格框出现的版面。
- 如何判断Panel里面有多少个CheckBox打勾了?
- DataModual 模快被多个窗体引用,相互串扰怎么办?
- Tlist的释放问题。
- 无可奈何的选择-delphi + dbf数据库(200分,如果问题能够解决还可另加)
- 关于取整和取余数。
- 大家给我推荐一本关于SQLSERVER2000的好书!
- 怎么通过计算机名得到其所在的工作组!!(是好答案,我一定马上给分)
- COM+的继承问题和类工厂问题--具体看里面。
- 找两个东西?高手请进
当保存时 ListView重新读取一下数据
把这个写成一个过程,然后,当删除后,再调一次这个过程就行了。
var
listitem:Tlistitem;
begin
vpq_query:=Tadoquery.Create(nil);
vpq_query.ConnectionString:=vgs_connstr;
with vpq_query do
begin
close;
sql.Clear;
sql.Add('select * from t_leader order by leader_id');
try
open;
except
execsql;;
end;
end;
while not vpq_query.Eof do
begin
listitem:=listview1.Items.Add;
listitem.Caption:=vpq_query.fieldbyname('leader_id').AsString;
listitem.SubItems.Add(trim(vpq_query.fieldbyname('leader_name').asstring));
listitem.SubItems.Add(trim(vpq_query.fieldbyname('re').asstring));
vpq_query.Next;
end;
end;把这个写成一个过程,别在show里面直接写。
供其它的地方能调用它