//edt can be null public AxTableField BuildField(AxEdt edt) { AxTableField axTableField; switch (FieldType) { case FieldType.String: axTableField = new AxTableFieldString(); if (edt == null) { if (NewStrEdtLen > 0) { AxTableFieldString axTableFieldString = (AxTableFieldString)axTableField; axTableFieldString.StringSize = NewStrEdtLen; } } break; case FieldType.Integer: axTableField = new AxTableFieldInt(); break; case FieldType.Real: axTableField = new AxTableFieldReal(); break; case FieldType.DateTime: axTableField = new AxTableFieldUtcDateTime(); break; case FieldType.Guid: axTableField = new AxTableFieldGuid(); break; case FieldType.Int64: axTableField = new AxTableFieldInt64(); break; case FieldType.Enum: axTableField = new AxTableFieldEnum(); if (edt != null) { AxEdtEnum edtEnum = edt as AxEdtEnum; AxTableFieldEnum fieldEnum = axTableField as AxTableFieldEnum; if (edtEnum != null) { fieldEnum.EnumType = edtEnum.EnumType; } } break; case FieldType.Time: axTableField = new AxTableFieldTime(); break; case FieldType.Container: axTableField = new AxTableFieldContainer(); break; case FieldType.Memo: axTableField = new AxTableFieldString(); break; case FieldType.Date: axTableField = new AxTableFieldDate(); break; default: throw new NotImplementedException( $"Field type {FieldType.ToString()} is not supported"); } axTableField.Name = FieldName; if (IsMandatory) { axTableField.Mandatory = NoYes.Yes; } if (edt != null) { axTableField.ExtendedDataType = edt.Name; } else { if (LabelText != String.Empty) { axTableField.Label = LabelText; } if (HelpTextText != String.Empty) { axTableField.HelpText = HelpTextText; } } if (IsEdtExist && edt != null) { if (LabelText != String.Empty && edt.Label != LabelText) { axTableField.Label = LabelText; } if (HelpTextText != String.Empty && edt.HelpText != HelpTextText) { axTableField.HelpText = HelpTextText; } } return(axTableField); }
void DoTableCreate() { AxTable newTable = _axHelper.MetadataProvider.Tables.Read(TableName); if (newTable == null) { newTable = new AxTable(); newTable.Name = TableName; newTable.Label = TableLabel; newTable.TitleField1 = KeyFieldName; newTable.CacheLookup = RecordCacheLevel.Found; newTable.ClusteredIndex = $"{KeyFieldName}Idx"; newTable.PrimaryIndex = newTable.ClusteredIndex; newTable.ReplacementKey = newTable.ClusteredIndex; newTable.TableGroup = TableGroup.Group; newTable.CreatedBy = NoYes.Yes; newTable.CreatedDateTime = NoYes.Yes; newTable.ModifiedBy = NoYes.Yes; newTable.ModifiedDateTime = NoYes.Yes; AxTableField primaryField = new AxTableFieldString(); primaryField.Name = KeyFieldName; primaryField.ExtendedDataType = PrimaryKeyEdtName; primaryField.IgnoreEDTRelation = NoYes.Yes; primaryField.AllowEdit = NoYes.No; primaryField.Mandatory = NoYes.Yes; newTable.AddField(primaryField); AxTableField descriptionField = new AxTableFieldString(); descriptionField.Name = "Description"; descriptionField.ExtendedDataType = "Description"; newTable.AddField(descriptionField); AxTableIndexField axTableIndexField = new AxTableIndexField(); axTableIndexField.DataField = KeyFieldName; axTableIndexField.Name = KeyFieldName; AxTableIndex axTableIndex = new AxTableIndex(); axTableIndex.Name = newTable.ClusteredIndex; axTableIndex.AlternateKey = NoYes.Yes; axTableIndex.AddField(axTableIndexField); newTable.AddIndex(axTableIndex); AxTableFieldGroup axTableFieldGroup; AxTableFieldGroupField axTableFieldGroupField; axTableFieldGroup = new AxTableFieldGroup { Name = "AutoReport", IsSystemGenerated = NoYes.Yes }; axTableFieldGroupField = new AxTableFieldGroupField { Name = KeyFieldName, DataField = KeyFieldName }; axTableFieldGroup.AddField(axTableFieldGroupField); newTable.AddFieldGroup(axTableFieldGroup); axTableFieldGroup = new AxTableFieldGroup { Name = "AutoLookup", IsSystemGenerated = NoYes.Yes }; newTable.AddFieldGroup(axTableFieldGroup); axTableFieldGroup = new AxTableFieldGroup { Name = "AutoIdentification", IsSystemGenerated = NoYes.Yes, AutoPopulate = NoYes.Yes }; newTable.AddFieldGroup(axTableFieldGroup); axTableFieldGroup = new AxTableFieldGroup { Name = "AutoSummary", IsSystemGenerated = NoYes.Yes }; newTable.AddFieldGroup(axTableFieldGroup); axTableFieldGroup = new AxTableFieldGroup { Name = "AutoBrowse", IsSystemGenerated = NoYes.Yes }; newTable.AddFieldGroup(axTableFieldGroup); axTableFieldGroup = new AxTableFieldGroup { Name = "Overview", Label = "Overview" }; axTableFieldGroupField = new AxTableFieldGroupField { Name = KeyFieldName, DataField = KeyFieldName }; axTableFieldGroup.AddField(axTableFieldGroupField); if (descriptionField != null) { axTableFieldGroupField = new AxTableFieldGroupField { Name = descriptionField.Name, DataField = descriptionField.Name }; axTableFieldGroup.AddField(axTableFieldGroupField); } newTable.AddFieldGroup(axTableFieldGroup); AddTableFindMethodParms findMethodParms = new AddTableFindMethodParms(); findMethodParms.IsCreateFind = true; findMethodParms.IsTestMode = true; findMethodParms.TableName = TableName; findMethodParms.VarName = TableVarName; findMethodParms.Fields = new List <AxTableFieldParm> { new AxTableFieldParm { FieldName = KeyFieldName, FieldType = PrimaryKeyEdtName, IsMandatory = true } }; AxMethod axMethod = new AxMethod(); axMethod.Name = "find"; axMethod.IsStatic = true; axMethod.Source = findMethodParms.GenerateResult(); newTable.AddMethod(axMethod); _axHelper.MetaModelService.CreateTable(newTable, _axHelper.ModelSaveInfo); _axHelper.AppendToActiveProject(newTable); AddLog($"Table: {newTable.Name}; "); AxEdt edtLocal = _axHelper.MetadataProvider.Edts.Read(PrimaryKeyEdtName); if (edtLocal != null) { if (String.IsNullOrEmpty(edtLocal.ReferenceTable)) //check for the existing EDT. Do not modify it { if (edtLocal.Relations == null || edtLocal.Relations.Count == 0) //no old style relations { edtLocal.ReferenceTable = TableName; edtLocal.AddTableReference(TableName, KeyFieldName); _axHelper.MetaModelService.UpdateExtendedDataType(edtLocal, _axHelper.ModelSaveInfo); _axHelper.AppendToActiveProject(edtLocal); } } //AddLog($"EDT: {edtLocal.Name}; "); } } }