起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 308|回复: 17

【结】插请教插入复制和新增复制的区别和扩展。**

[复制链接]
发表于 2008-8-1 12:27:24 | 显示全部楼层 |阅读模式
1、请问插入复制和新增复制的区别是什么?
目前我感觉好像没区别:)

2、有什么办法可以复制新增表的从表记录?
例如,付款表是合同表的从表,某合同记录有三条付款记录,我想在在新增复制合同记录的同时也将其三条付款记录一同复制,请问应该如何实现?
回复

使用道具 举报

发表于 2008-8-1 13:37:25 | 显示全部楼层
1、请问插入复制和新增复制的区别是什么?
目前我感觉好像没区别:)

插入和新增的是有区别,一个是在当前光标所在的记录前插入一条(即执行的是dataset.insert),一个是最后插入一条记录(即执行的是dataset.Append),复制就是除主键,其他字段的值都跟当前光标所在的记录是一样的。

2、有什么办法可以复制新增表的从表记录?
例如,付款表是合同表的从表,某合同记录有三条付款记录,我想在在新增复制合同记录的同时也将其三条付款记录一同复制,请问应该如何实现?
那只能自己写代码处理了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-1 14:14:01 | 显示全部楼层
好像是这样的,呵呵。

关于如何代码处理复制新增表的从表记录能不能帮忙看看。
复制多条从表数据的时候如何建立主从关系,并保持从表关键字的自动填充,这些感觉还是蛮难处理的。

曹姐最好能帮忙写个小例子看看,例如指定某合同表的ID,做一个button,插入复制这个合同及其从表。
回复 支持 反对

使用道具 举报

发表于 2008-8-1 14:27:47 | 显示全部楼层
楼主自己先做一下试试,我感觉atiger也不是特别明白你说的。
碰到问题再继续提问。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-1 15:23:55 | 显示全部楼层
那我说清楚点吧,如附件所示一张统计表有时间、统计人和若干统计项目。

主表字段是ID、时间、机组出力、统计人
从表字段是ID、主表ID、名称、KKS、门前温度、门后温度、泄露判断。
其中ID都是自动填充的,从表字段“主表ID”关联主表字段“ID”

其实每一张统计表的统计项目都是一样的,通过复制历史的统计表就可以了,现在从表复制不了,想让从表也能复制,如果要写代码,代码怎么写?

jietu.jpg

56.35 KB, 下载次数: 148

回复 支持 反对

使用道具 举报

发表于 2008-8-1 15:45:07 | 显示全部楼层
lixy 瞎说,呵呵,我是明白了,他自己没有明白

,附件是例子
我现在没有定义主从,是用代码过滤另一个数据集的,
mDataSet是主数据集,dDataSet是从数据集。

aa.rar

941.36 KB, 下载次数: 39

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-1 16:41:29 | 显示全部楼层
导入后打开功能和窗体老是报错“URL“Biz:\OPERATION\CRMSPACE\DataGridFZXX.Info”转换为文件名失败”,可能是版本问题,我们是3002的。

曹姐,我已经知道案例中的的主从表结构了,把代码给我看看吧,告诉我写在哪里。
我们的需求要求主从表的关键字ID按照数据字典中定义的自动填充生成。
回复 支持 反对

使用道具 举报

发表于 2008-8-1 16:49:24 | 显示全部楼层
unit MainForm;

interface

uses
  Business.System, Business.Model, Business.Forms, Business.Data;

type
  TMainForm = class(TForm)
    FuncBroker: TFuncBroker;
    InfoBrokerZCXX: TInfoBroker;
    ControlBar: TControlBar;
    DataNavigator: TDataNavigator;
    DocViewBar: TDocViewBar;
    Panel: TPanel;
    Splitter: TSplitter;
    DocViewZCXX_ZWG: TDocView;
    DocViewZCXX_CWG: TDocView;
    Button1: TButton;
    mDataSet: TDataSetBroker;
    dDataSet: TDataSetBroker;
    Query1: TQuery;
    procedure Button1Click(Sender: TObject);
    procedure mDataSetAfterOpen(DataSet: TDataSet);
    procedure mDataSetAfterScroll(DataSet: TDataSet);
    procedure BizFormShow(Sender: TObject);
  private
    {private declarations}
  public
    {public declarations}
  end;

implementation


procedure TMainForm.Button1Click(Sender: TObject);
var
  lStr,lID,lNAME: String;
begin
  lID := Business.System.JSCommon.CreateGUIDStr;
  lStr := mDataSet.DataSet.FieldByName('ID').AsString;
  Query1.Close;
  Query1.CommandText := 'Select * from SJB11 Where ID='''+ lStr+'''';
  Query1.open;
  while not Query1.eof do
  begin
    dDataSet.DataSet.Append;
    dDataSet.DataSet.FieldByName('ZD2').AsString := Query1.FieldByName('ZD2').AsString;
    dDataSet.DataSet.FieldByName('ZD3').AsString := Query1.FieldByName('ZD3').AsString;
    dDataSet.DataSet.FieldByName('ID').AsString :=  lID;
    dDataSet.DataSet.post;
    Query1.Next;
  end;
  lNAME := mDataSet.DataSet.FieldByName('NAME').AsString;
  mDataSet.DataSet.InsertRecord([lID,lNAME]);
  dDataSet.DataSet.ApplyUpdates;
  mDataSet.DataSet.ApplyUpdates;
  mDataSetAfterScroll(mDataSet.DataSet);
end;


procedure TMainForm.mDataSetAfterOpen(DataSet: TDataSet);
begin
  TSqlDataSet(dDataSet.DataSet).SQL.Text  := 'select * from SJB11 Where ID ='''+  mDataSet.DataSet.FieldByName('ID').AsString+ '''';
  dDataSet.DataSet.open;
end;

procedure TMainForm.mDataSetAfterScroll(DataSet: TDataSet);
begin
  dDataSet.DataSet.Close;
  TSqlDataSet(dDataSet.DataSet).SQL.Text  := 'select * from SJB11 Where ID ='''+  mDataSet.DataSet.FieldByName('ID').AsString+ '''';
  //dialogs.ShowMessage(TSqlDataSet(dDataSet.DataSet).SQL.Text);
  dDataSet.DataSet.open;

end;

procedure TMainForm.BizFormShow(Sender: TObject);
begin
  mDataSet.DataSet.open;
end;

end.

这是功能上的所有代码,其他地方没有写任何代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-4 10:42:35 | 显示全部楼层
有一个问题
Business.System.JSCommon.CreateGUIDStr好像是自动的GUID
我的ID使用的是&[编号],这个应该怎么写?

还有,例子中是先插入从表,再插入主表,我是先插入主表,再插入从表,应该没问题吧。
回复 支持 反对

使用道具 举报

发表于 2008-8-4 10:45:33 | 显示全部楼层
对,是填充的GUID,呵呵,那读你的编号参数值
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-20 11:43 , Processed in 0.047071 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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