起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 274|回复: 15

【结贴】数据集问题**

[复制链接]
发表于 2009-3-3 10:00:43 | 显示全部楼层 |阅读模式
首先我用一个sql语句插入了一些记录
然后,我打开了这个表的数据集,但是跟踪发现数据集是空的,
执行完了以后,数据集才有,我想插入完了以后,就打开数据集,对里面的记录进行操作
回复

使用道具 举报

发表于 2009-3-3 10:15:50 | 显示全部楼层
你sql语句怎么插入的?
你说执行完后数据集才有,那人家都没有执行完,那就是说数据库里都没有数据,那数据集里怎么来的数据呢?

如果你想实现类似的效果,你可以这样:用用户数据集,代码给这个用户数据集赋值,然后你就可以对这个用户数据集做操作,然后最后自己代码把这个用户数据集的数据进行入库。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-3 10:18:33 | 显示全部楼层
query1.Close;
      query1.CommandText := 'insert into ddmxsjb(txm,bm,spmc,pc,yj,spbh,gysmc,gysbh,ddphl) values ('''+txm+''','''+bm+''','''+mc+''','''+pc+''',''false'','''+bh+''','''+gys+''','''+gysbh+''','''+sysutils.IntToStr(phsl)+''')';
      query1.Execute;

     { dsbbmdd.DataSet.Open;
      dsbbmdd.DataSet.Append;
      dsbbmdd.DataSet.FieldByName('txm').AsString := txm;
      dsbbmdd.DataSet.FieldByName('spbh').AsString := bh;
      dsbbmdd.DataSet.FieldByName('spmc').AsString := mc;
      dsbbmdd.DataSet.FieldByName('pc').AsString := pc; }
      //query1.Open;
      dsbdd.DataSet.Next;
    end;
  dsbjs.DataSet.Next;
  end;
// dsbbmdd.DataSet.open;
  dsbzx.DataSet.Refresh;
  dsbzx.DataSet.Open;
  dsbbmdd.DataSet.Open;
  dsbbmdd.DataSet.First;
  while not dsbbmdd.DataSet.Eof do
  begin
    dsbbmdd.DataSet.Edit;
    dsbbmdd.DataSet.FieldByName('zt').AsString := 'T';
    dsbbmdd.DataSet.Post;
    dsbbmdd.DataSet.Next;
  end;
  dsbbmdd.DataSet.ApplyUpdates;
  dsbbmdd.DataSet.Refresh;


看一下我的代码:
上面是插入的数据集,下面dsbbmdd数据集中没有数据
要怎么改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-3 10:21:36 | 显示全部楼层
写到两个按钮里就可以
回复 支持 反对

使用道具 举报

发表于 2009-3-3 10:27:05 | 显示全部楼层
dsbbmdd.DataSet是不是一开始就open开了?
dsbbmdd.DataSet.Close一下,再Open看看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-3 10:33:30 | 显示全部楼层
还是不行
回复 支持 反对

使用道具 举报

发表于 2009-3-3 10:52:13 | 显示全部楼层
1、是跟踪发现数据集是空的,请问你是跟踪到哪句发现是空的
2、执行完了以后,数据集才有是哪个数据集没有数据,是指执行到哪句才有数据的
3、dsbbmdd 哪个数据集是从  ddmxsjb 这个表生成的?
4、请贴全你现在的代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-3 10:53:09 | 显示全部楼层
1、  dsbbmdd.DataSet.Open;
  dsbbmdd.DataSet.First;
  while not dsbbmdd.DataSet.Eof do
  begin
    dsbbmdd.DataSet.Edit;
    dsbbmdd.DataSet.FieldByName('zt').AsString := 'T';
    dsbbmdd.DataSet.Post;
    dsbbmdd.DataSet.Next;
  end;
  dsbbmdd.DataSet.ApplyUpdates;
直接执行了最后一句
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-3 11:05:49 | 显示全部楼层
dsbjs.DataSet.Open;
  dsbjs.DataSet.First;
  while not dsbjs.DataSet.Eof do
  begin
    bm := dsbjs.DataSet.FieldByName('bm').AsString;
    dsbdd.DataSet.Open;
    dsbdd.DataSet.First;
    while not dsbdd.DataSet.Eof do
    begin
      txm := dsbdd.DataSet.FieldByName('txm').AsString;
      bh := dsbdd.DataSet.FieldByName('spbh').AsString;
      mc := dsbdd.DataSet.FieldByName('spmc').AsString;
      pc := dsbdd.DataSet.FieldByName('pc').AsString;
      gys := dsbdd.dataset.FieldByName('gysmc').asstring;
      gysbh := dsbdd.dataset.FieldByName('gysbh').asstring;
      phsl := dsbdd.dataset.FieldByName('ddphl').AsInteger;
      query1.Close;
      query1.CommandText := 'insert into ddmxsjb(txm,bm,spmc,pc,yj,spbh,gysmc,gysbh,ddphl) values ('''+txm+''','''+bm+''','''+mc+''','''+pc+''',''false'','''+bh+''','''+gys+''','''+gysbh+''','''+sysutils.IntToStr(phsl)+''')';
      query1.Execute;

     { dsbbmdd.DataSet.Open;
      dsbbmdd.DataSet.Append;
      dsbbmdd.DataSet.FieldByName('txm').AsString := txm;
      dsbbmdd.DataSet.FieldByName('spbh').AsString := bh;
      dsbbmdd.DataSet.FieldByName('spmc').AsString := mc;
      dsbbmdd.DataSet.FieldByName('pc').AsString := pc; }
      //query1.Open;
      dsbdd.DataSet.Next;
    end;
  dsbjs.DataSet.Next;
  end;
// dsbbmdd.DataSet.open;
  dsbzx.DataSet.Refresh;
  dsbzx.DataSet.Open;
{ dsbbmdd.DataSet.Close;
  dsbbmdd.DataSet.Open;
  dsbbmdd.DataSet.First;
  while not dsbbmdd.DataSet.Eof do
  begin
    dsbbmdd.DataSet.Edit;
    dsbbmdd.DataSet.FieldByName('zt').AsString := 'T';
    dsbbmdd.DataSet.Post;
    dsbbmdd.DataSet.Next;
  end;
  dsbbmdd.DataSet.ApplyUpdates;
  dsbbmdd.DataSet.Refresh; }

  flowaction1.Execute;
end;
回复 支持 反对

使用道具 举报

发表于 2009-3-3 11:08:26 | 显示全部楼层
1、让你在 dsbbmdd.DataSet.Open; 前Close一下数据集,即执行一下 dsbbmdd.DataSet.Close; 这句代码我没有看到。
2、不执行 dsbbmdd.DataSet.ApplyUpdates;也是有数据的吧,如果没有数据,那么循环内的代码肯定不会执行的,因此dsbbmdd.DataSet.ApplyUpdates 实际上也没有啥修改可以提交的,除非你还有其他的代码修改了 dsbbmdd 这个数据集中的记录

你再跟踪看看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-26 16:20 , Processed in 0.043259 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表