回 帖 发 新 帖 刷新版面

主题:求助,delphi编程 关于一次性添加多条记录

本人是delphi新手,最近在学习数据库编程的时候,想对两条以上的记录进行一起添加。
form1 上有dbgrid query1    添加和保存两个按钮  edit1  edit2  edit3 
数据库表  成线(学号,课程号,成绩)


单击'添加'按钮  dbgrid 中显示  001   0001  75   但成绩表中未添加这条记录
再单击'添加'按钮 dbrid 中显示  002   0003  80   但成绩表中未添加这条记录
当我单击'保存'按钮才能将dbgrid 中两条记录添加到 数据表成绩表中.


请大侠们多多指教, 也可以发我邮箱80870789@qq.com





回复列表 (共10个回复)

沙发

没有POST吧?

板凳

我用SQL语句添加的,Execsql执行添加的

3 楼

贴上来代码看看.

4 楼

不清楚啊代码怎么写

5 楼

1、先要设置DataSet的锁类型是ltBatchOptimistic
(设置了这个属性后Post不能将数据提交到数据库中)

2、提交数据的时候用代码AdoDataSet1.BatchUpdate();来提交数据

6 楼

请问楼上的,对dbgrid1 中dataset 设置吗?

7 楼

可以设置变量先保存起来,当单击保存时再提交

8 楼

用临时表吧,更省力些,可以取消操作。

9 楼

var
  I: Integer;
  sqltemp,sqltemp1,sqltemp2:string;
begin
for I := 0 to DBGrid1.FieldCount-1 do    // Iterate
        begin
                sqltemp1:=sqltemp1+'['+DBGrid1.Fields[i].FullName+'],';
                sqltemp:=sqltemp+'['+DBGrid1.Fields[i].FullName+'] varchar(1000),';
        end;    // for
        sqltemp1:=Copy(sqltemp1,1,Length(sqltemp1)-1);
        sqltemp:=Copy(sqltemp,1,Length(sqltemp)-1);

Qry1.First;
        while not Qry1.Eof do
        begin
                with Qry2 do
                begin
                        sqltemp2:='';
                        for I := 0 to Qry1.FieldCount - 1 do    // Iterate
                        begin
                                sqltemp2:=sqltemp2+''''+Qry1.Fields[i].AsString+''',';
                        end;    // for
                        sqltemp2:=Copy(sqltemp2,1,Length(sqltemp2)-1);
                        Close;
                        SQL.Clear;
                        SQL.Add('insert into u_excel(id,'+sqltemp1+') ');
                        SQL.Add('values ('+''''+Edit1.Text+''','+sqltemp2+')');
                        ExecSQL;
                end;    // with
                Qry1.Next;
        end;    // while

end;

10 楼

怎么用临时表呢?????

我来回复

您尚未登录,请登录后再回复。点此登录或注册