adoquery怎样循环插入多行记录?最好有例子 adqty.sql.text:= sql语句;
adqty.Open;循环体内
//--------------
adqty.Append;
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').AsString := FieldByName('规格').AsString;
adqTY.fieldbyname('名称').AsString := FieldByName('名称').AsString;
end;
//---------错误:当第一次执行时append时没错,第二次执行到append时,就出错
:无法插入空行,行必须有一列值集
adqty.Open;循环体内
//--------------
adqty.Append;
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').AsString := FieldByName('规格').AsString;
adqTY.fieldbyname('名称').AsString := FieldByName('名称').AsString;
end;
//---------错误:当第一次执行时append时没错,第二次执行到append时,就出错
:无法插入空行,行必须有一列值集
解决方案 »
- 大数储存,怎么弄?
- DBGridEh下拉筛选条件显示中文.
- 请教个装EhLib的问题
- 我在网上找的一个代码,可是有个问题,帮帮我吧看一下
- 哪位老大有D6中文帮助文件
- 多层设计中的关键是什么?我有几个关于COM+的小问题不知有人能给予解答否?
- 使用Delphi制作DLL文件使用的问题,散分了!!!
- 有谁知道如何在菜单和TabControl控键上动态添加应用程序的图标
- 如何读取快捷方式的路径和名称(路径和名称都是未知的)?
- 在VB6工程选单,引用窗口中为什么找不到Microsoft ActiveX Object Library ?
- 使用Variant数组指针时出现错误,诸位帮我看看,如何解决?
- 打开POS机的钱箱命令
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').AsString := FieldByName('规格').AsString;
adqTY.fieldbyname('名称').AsString := FieldByName('名称').AsString; end;
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').AsString := FieldByName('规格').AsString;
adqTY.fieldbyname('名称').AsString := FieldByName('名称').AsString;
POST;//这个
end;
不过这样的操作最好给连接加 事物
或用批模式adqty.LockType=ltBatchOptimistic;全完成后
adqty.UpdateBatch();
中途出错就
adqty.CancelBatch();下面的会比你那样写快一点;
adqTY.fieldbyname('名称').Value := FieldByName('名称').Value;
open;
begin
.........
插入............
next;
end;
adqty.Append;
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').AsString := FieldByName('规格').AsString;
adqTY.fieldbyname('名称').AsString := FieldByName('名称').AsString;
adqTY.post;
end;
那还是不要用SQL 语句。删除 还是用批的比较好。
没打开 adqty 之前或把 adqty.LockType 在设计时就改 ltBatchOptimistic
adqty.LockType=ltBatchOptimistic;
adqty.Open;//然后你 选一条插一条 因为 ltBatchOptimistic 模式就是在本地操作不会写数据库
//速度也不会慢。
adqty.Append;
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').Value := FieldByName('规格').Value;
adqTY.fieldbyname('名称').Value := FieldByName('名称').Value;
adqTY.post;
end;
......
//最后 点击保存“按钮” 的时候adqTY.Connection.BeginTrans
try
adqty.UpdateBatch();
...进行其他任务....
except
adqty.Connection.RollbackTrans;
Exit;
end;
QueryCA_Voch.Connection.CommitTrans
//如果你的数据库没事物 就不要加 BeginTrans,RollbackTrans,CommitTrans 这三行!
操作 在没完成之前是不可以写数据库的。
一般都是用
adqty.LockType=ltBatchOptimistic;
adqty.UpdateBatch();
两个dbgrid 连的 Query 都要这样。adqty.Append;
with DBGrid1.DataSource.DataSet do
begin adqTY.FieldByName('规格').Value := FieldByName('规格').Value;
adqTY.fieldbyname('名称').Value := FieldByName('名称').Value;
adqTY.post;
{DBGrid1.DataSource.DataSet.}
Delete;
end;
open;
begin
.........
插入............
next;
end;