起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 93|回复: 1

根据数据字典,创建一个空表结构的问题(表名是变化的)**

[复制链接]
发表于 2009-7-2 10:10:44 | 显示全部楼层 |阅读模式
var
  lNewTableDef: TBizTableDef;
begin
  lNewTableDef := TBizTabledef.Create(BizSys.GlobalContext);
  try
    lNewTableDef.FieldDefs.Assign(FBizTableDef.FieldDefs);
    lNewTableDef.IndexDefs.Assign(FBizTableDef.IndexDefs);
    lNewTableDef.ForeignKeyDefs.Assign(FBizTableDef.ForeignKeyDefs);
    lNewTableDef.ID := FBizTableDef.ID+'_TEMP';
    CreateEmptyPhyTable(lNewTableDef);
  finally
    lNewTableDef.Free;
  end;


procedure TPhyTableGenerator.CreateEmptyPhyTable(ABizTableDef: TBizTableDef);
var
  lTableDefSchemaTable: TTableDefSchemaTable;
  lTableBuilder: TTableBuilder;
begin
  lTableBuilder := TTableBuilder.Create;
  lTableDefSchemaTable := TTableDefSchemaTable.Create(ABizTableDef,
    BizSchemaTypes.cDriver_ORACLE);
  try
    lTableBuilder.CreateTable(nil, FConnection, lTableDefSchemaTable, Business.Model.TCreateMode.cmtCreate,
      false, True, -1);
  finally
    lTableDefSchemaTable.Free;
    lTableBuilder.Free;
  end;
end;

这样创建,没有异常错误,表也未创建成功,有别的什么好办法没,注意(数据字典和实际物理表结构不一致,所以不能使用物理表来拷贝结构)
回复

使用道具 举报

发表于 2009-7-2 11:06:58 | 显示全部楼层
楼主,试试这个:
procedure CreateLogicTable(ABizTableDef: TBizTableDef; ADBURL : String;
  ACreateNew: Boolean);
var
  lDesc: TTableDefDesc;
  lCreator: TTableDefCreator;
  lBizTableDef : TBizTableDef;
begin
  lDesc := TTableDefDesc.Create(nil);
  lDesc.LanguageExt := '.pas';
  lDesc.FileName := ABizTableDef.ID + '.Table';
  lDesc.DisplayName := ABizTableDef.DisplayName;
  if ACreateNew then
    lDesc.CreateMode := Business.Forms.TCreateMode.cmNew
  else lDesc.CreateMode := Business.Forms.TCreateMode.cmRecreate; //修改

  lBizTableDef := lDesc.TableDef;  //用lbiztabledef替换temptabledef,需要单独释放temptabledef
  lDesc.TableDef := ABizTableDef;

  lCreator := TTableDefCreator.Create;
  try
    lCreator.Execute(Business.Model.BizSys.ObjectInfo(ADBURL).BizURL, lDesc,
      BizSys.GlobalContext);
    lCreator.Save;
  finally
    lDesc.TableDef := lBizTableDef;
    lDesc.Free;
    lCreator.Free;
  end;
end;
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-19 06:12 , Processed in 0.040877 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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