起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 528|回复: 28

【结贴】使用DataSetBroker1.DataSet.Append报错

[复制链接]
发表于 2008-9-2 16:43:14 | 显示全部楼层 |阅读模式
代码如下
Query2 := TQuery.Create(self);
      Query2.ConnectionString := 'DATABASEURL=Biz:JUSTEPCOOPERATIONSYSTEMCooperationDB.Database';
      Query2.CommandText := 'select * from OA_DesignTaskRequisitionDetail '+
                            'where fid='''+Query1.FieldByName('Id').AsString+'''';
      Query2.Open;
      Query2.First;
      for j:=1 to Query2.RecordCount do
      begin
        DataSetBroker1.DataSet.Edit;
        DataSetBroker1.DataSet.Append;


        DataSetBroker1.DataSet.FieldByName('OrderNO').AsString := Query2.FieldByName('OrderNO').AsString; ;) //此处出错
        DataSetBroker1.DataSet.FieldByName('ExportForm').AsString := Query2.FieldByName('ExportForm').AsString;
        DataSetBroker1.DataSet.FieldByName('DocType').AsString := Query2.FieldByName('DocType').AsString;
        DataSetBroker1.DataSet.FieldByName('TaskContent').AsString := Query2.FieldByName('TaskContent').AsString;

        Query2.Next;
      end;

出错提示见下图

出错信息.jpg

17.24 KB, 下载次数: 181

回复

使用道具 举报

发表于 2008-9-2 17:25:34 | 显示全部楼层
1、是第一次进来就报错吗?
2、屏蔽这句,下面的报错吗?
3、直接给 DataSetBroker1.DataSet.FieldByName('OrderNO').AsString  赋值一个值,例如:'1',这样ok吗?
4、DataSetBroker1.DataSet.Append; 执行前不需要执行DataSetBroker1.DataSet.Edit;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 17:29:12 | 显示全部楼层
1.不是一进去就报错,而是运行循环超过3次就报错
2.屏蔽掉这句,就好了
3.直接赋值也报错
4.取消掉Edith并不能改变报错的现象
回复 支持 反对

使用道具 举报

发表于 2008-9-2 17:31:47 | 显示全部楼层
第四点,我只是说了,edit 这句在这里没有意义,跟报错没有关系。
那你跟踪一下,出错的时候,Query2.FieldByName('OrderNO').AsString  值是啥?
回复 支持 反对

使用道具 举报

发表于 2008-9-2 17:42:17 | 显示全部楼层
Query2 := TQuery.Create(self);
      Query2.ConnectionString := 'DATABASEURL=Biz:\JUSTEPCOOPERATIONSYSTEM\CooperationDB.Database';
      Query2.CommandText := 'select * from OA_DesignTaskRequisitionDetail '+
                            'where fid='''+Query1.FieldByName('Id').AsString+'''';
      Query2.Open;
      Query2.First;
      //for j:=1 to Query2.RecordCount do
      while not Query2.Eof do
      begin
        //DataSetBroker1.DataSet.Edit;
        DataSetBroker1.DataSet.Append;


        DataSetBroker1.DataSet.FieldByName('OrderNO').AsString := Query2.FieldByName('OrderNO').AsString; ;) //此处出错
        DataSetBroker1.DataSet.FieldByName('ExportForm').AsString := Query2.FieldByName('ExportForm').AsString;
        DataSetBroker1.DataSet.FieldByName('DocType').AsString := Query2.FieldByName('DocType').AsString;
        DataSetBroker1.DataSet.FieldByName('TaskContent').AsString := Query2.FieldByName('TaskContent').AsString;

        Query2.Next;
      end;

你这样子改进一下,应该就对了。问题应该处在你的循环处。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 17:45:47 | 显示全部楼层
2.1.2
一个很简单的序号值,string型
回复 支持 反对

使用道具 举报

发表于 2008-9-2 17:49:27 | 显示全部楼层
按照5楼试试看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 17:50:50 | 显示全部楼层
不可以,照楼上的改过了,还是报错
回复 支持 反对

使用道具 举报

发表于 2008-9-2 17:54:31 | 显示全部楼层
在这句DataSetBroker1.DataSet.FieldByName('TaskContent').AsString := Query2.FieldByName('TaskContent').AsString;

后面加上DataSetBroker1.DataSet.Post;
看看呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-3 09:45:34 | 显示全部楼层
还是一样
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 16:38 , Processed in 0.067718 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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