表格的新的两列中插入数据,还有怎么在按下button后,在dbgrid显示需要显示的表格

Lynn_8 2006-04-15 08:45:23
我在一张已经有三个字段的表格里(充满数据),插入了新的两列,然后要在这两列中插入已经算好的两个数组MA和Ot,但我要从第四行开始插入数据(前三行和最后三行都没为空)。
我试过将指针移到第四行再开始查数据,但总出现错误。
请求帮助!
还有,按下button2后,在dbgrid1中显示插入两列后的新的表格(这个
表格是和原来表格不是同一个名字)怎么写语句???
以下是我写的语句
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
begin
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.LoadFromFile('MODEL1.sql');
prepared:=true;
try
ExecSQL;
except
end;
end;//以上这段可以执行的,我验证过了(插入新的两列)。
// 问题是下边的这段。
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Text:='select * from model_1';
ADOTable1.TableName:='model_1';//我希望在dbgrid中能显示这张表格。
ADOTable1.Active:=True;
Open;
Edit;
First;
for i:=1 to 3 do //我就想用这个来移动指针到第四个记录,以便导入数据
begin
i:=i+1;
Next;
end;
for j:=4 to adoquery1.RecordCount-3 do //这段插入数据的语句我也不知道行不行!
begin
ADOTable1.FieldByName('MA').AsFloat:=ma[j-3];
ADOTable1.FieldByName('Ot').AsFloat:=ot[j-3];
Post;
end;

end;

end;


...全文
153 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Lynn_8 2006-04-17
with ADOQuery1 do
begin
Active:=False;
Close;
SQL.Clear;
SQL.Text:='select * from model_1';
adotable1.Open;//运行的时候警告:cannot perform this operation on an open dataset.
//我试过改成close,但运行时警告:cannot perform this operation on an closed dataset.
ADOTable1.TableName:='model_1';//能在dbgrid中显示这张表格。不知道这样改是不是对。
ADOTable1.Active:=True;
Edit;
First;
for i:=1 to adoquery1.RecordCount-3 do //以下是我修改的,那个update在查询分析器
begin // 里可以添加数据,但怎么在这里写语句我不会啊。
if i in [1..3] then
next
else
ADOTable1.FieldByName('MA').AsFloat:=ma[i-3];
ADOTable1.FieldByName('Ot').AsFloat:=ot[i-3];
end;

end;
  • 打赏
  • 举报
回复
lulu_xp 2006-04-17
Anylib已经推出新版本!主要增加以下功能:
1.数据库支持
2.数据分组
3.分页符
4.多栏打印
5.背景图

欢迎到我们的网站下载试用版。
http://www.anylib.com
  • 打赏
  • 举报
回复
Lynn_8 2006-04-16
那怎么从第四行开始插入数据呢?
  • 打赏
  • 举报
回复
Lynn_8 2006-04-16
那个append我也是抄书的,我也不知道啥意思!
那个for....next,开始我用while写的,
所以用了i:=i+1;忘了删了。
  • 打赏
  • 举报
回复
Lynn_8 2006-04-16
那怎么办啊?有什么简便的方法啊?
我快郁闷死了。
我刚刚才开始学习delphi,不到一个月。老师又非要让我用delphi做。
  • 打赏
  • 举报
回复
angle097113 2006-04-16
由于你采用数组来保存要插入的数据,这就造成不能一次更新只能循环操作,
所以你可以直接UPDATE操作完成的,只是把数组的算法写到SQL语句而已,
我觉得你把简单的问题复杂化了,不应该是这样来实现的,
  • 打赏
  • 举报
回复
SNYQ411 2006-04-15
procedure TForm1.Button2Click(Sender: TObject);
var
i,j:integer;
begin
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.LoadFromFile('MODEL1.sql');
prepared:=true;
try
ExecSQL;
except
end;
end;//以上这段可以执行的,我验证过了(插入新的两列)。
// 问题是下边的这段。
with ADOQuery1 do
begin
Active:=False;
SQL.Clear;
SQL.Text:='select * from model_1';
{ADOTable1.TableName:='model_1';
ADOTable1.Active:=True;//这两句不要放这里,等记录插入后在用,省得刷新}
Open;
for j:=0 to 1 do
begin
append;
ADOTable1.FieldByName('MA').AsFloat:=ma[j];
ADOTable1.FieldByName('Ot').AsFloat:=ot[j];
post;
end;

end;

end;

从第三行开始插的,为什么要从后面开始插入呢,从后面开始插入也不可能跳到第四行去啊,除非你连续用两次APPEND(而且字段不能有不允许为空的限制),
  • 打赏
  • 举报
回复
sxtdxvb 2006-04-15
for i:=1 to 3 do //我就想用这个来移动指针到第四个记录,以便导入数据
begin
i:=i+1;
Next;
end;


移动指针到第四个记录??

中间还要 i:=i+1;
干什么??
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库相关
加入

2462

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2006-04-15 08:45
社区公告
暂无公告