Delphi中DataSet追加数据显示在TDBGrideh上 10
Delphi中怎样实现增加一条数据及时的显示在TDBGrideh上问题是最初加载的TDBGrideh对应显示的值是用TQOraQuery执行SQL语句后赋值给datase...
Delphi中怎样实现增加一条数据及时的显示在TDBGrideh上
问题是最初加载的TDBGrideh对应显示的值是用TQOraQuery执行SQL语句后赋值给dataset的
部分代码如下:
SQLExecute(MyQuery, SQL语句, False)>0
--------------------------------------------------------
with MyDataset do
while not MyQuery.Eof do
begin
Myquery.Append;
for I := 0 to Myquery.Fields.Count - 1 do
begin
if MyDataset .FieldDefList.IndexOf(Myquery.Fields[I].FieldName) >= 0 then
begin
FieldByName(Myquery.Fields[I].FieldName).Value := Myquery.Fields.Fields[I].Value;
end
end; {for I}
MyDataset .Post;
AQuery.Next;
end;
---------------------------
现在的问题是增加一条数据后要在TDBGrideh显示出增加的这条数据,原来做法是数据库中新增后程序再执行一次上面的代码 但是这样运行会很慢。请教各位我要怎么做才能完成新增和修改的需求而且不用重新执行一次上面的while循环 这样太慢了。悬赏分绝对够 展开
问题是最初加载的TDBGrideh对应显示的值是用TQOraQuery执行SQL语句后赋值给dataset的
部分代码如下:
SQLExecute(MyQuery, SQL语句, False)>0
--------------------------------------------------------
with MyDataset do
while not MyQuery.Eof do
begin
Myquery.Append;
for I := 0 to Myquery.Fields.Count - 1 do
begin
if MyDataset .FieldDefList.IndexOf(Myquery.Fields[I].FieldName) >= 0 then
begin
FieldByName(Myquery.Fields[I].FieldName).Value := Myquery.Fields.Fields[I].Value;
end
end; {for I}
MyDataset .Post;
AQuery.Next;
end;
---------------------------
现在的问题是增加一条数据后要在TDBGrideh显示出增加的这条数据,原来做法是数据库中新增后程序再执行一次上面的代码 但是这样运行会很慢。请教各位我要怎么做才能完成新增和修改的需求而且不用重新执行一次上面的while循环 这样太慢了。悬赏分绝对够 展开
2个回答
展开全部
with MyDataset do
while not MyQuery.Eof do
begin
Append;//Myquery 不应该是Myquery的insert,而是MyDataset的insert
for I := 0 to Myquery.Fields.Count - 1 do
begin
if MyDataset .FieldDefList.IndexOf(Myquery.Fields[I].FieldName) >= 0 then
begin
FieldByName(Myquery.Fields[I].FieldName).Value := Myquery.Fields.Fields[I].Value;
end
end; {for I}
MyDataset .Post;
AQuery.Next;
end;
while not MyQuery.Eof do
begin
Append;//Myquery 不应该是Myquery的insert,而是MyDataset的insert
for I := 0 to Myquery.Fields.Count - 1 do
begin
if MyDataset .FieldDefList.IndexOf(Myquery.Fields[I].FieldName) >= 0 then
begin
FieldByName(Myquery.Fields[I].FieldName).Value := Myquery.Fields.Fields[I].Value;
end
end; {for I}
MyDataset .Post;
AQuery.Next;
end;
更多追问追答
追问
那个位置没问题吧 上面with MydataSet do了的
追答
while not MyQuery.Eof do
begin
Myquery.Append;
....
end;
你自己体会体会喽。
展开全部
我实在是没搞懂你为什么要这样写,还不如直接执行下INSERT INTO 语句,然后在刷新下MyDataset数据集~
追问
我也觉得这代码写得不好,我是接手别人07年的老代码新增功能,以前做Java的Delphi我都是刚刚开始碰,恼火哇,朋友有方法解决吗 另外我想请教下不这样的话MyQuery里面的数据怎样能一一对应到dataset中的每个field呢
追答
你直接用ADOQUERY执行SQL的INSERT语句嘛,多表插入的,比如 Insert Into A Select * from B。然后被插入的表绑定的数据集再刷新下就好了, Insert Into A Select * from B 根据你的需要加条件或者字段
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询