// Floud API public UserDefinedTable CreateUDF(string fieldName, string fieldDescription, BoFieldTypes type = BoFieldTypes.db_Alpha, int size = 50, BoFldSubTypes subType = BoFldSubTypes.st_None, IDictionary <string, string> validValues = null, string defaultValue = null) { CreateField(TableName, fieldName, fieldDescription, type, size, subType, validValues, defaultValue); return(this); }
/// <summary> /// Create UDF on UDT /// </summary> /// <param name="tableName">UDT Name without @</param> /// <param name="fieldName">Field name</param> /// <param name="fieldDescription"></param> /// <param name="type">BoFieldTypes type</param> /// <param name="size"></param> /// <param name="subType"></param> /// <param name="validValues"></param> /// <param name="defaultValue"></param> /// <param name="linkedTable"> use '@' with usertables</param> /// <param name="editSize"></param> /// <returns></returns> public static void CreateFieldOnUDT(string tableName, string fieldName, string fieldDescription, BoFieldTypes type = BoFieldTypes.db_Alpha, int size = 50, BoFldSubTypes subType = BoFldSubTypes.st_None, IDictionary <string, string> validValues = null, string defaultValue = null, string linkedTable = null, int editSize = 0) { tableName = "@" + tableName; CreateField(tableName, fieldName, fieldDescription, type, size, subType, validValues, defaultValue, linkedTable, editSize); }
public Int32 CriaCampo(String Nome, string descricao, int tamanho, BoFieldTypes fldtype, BoFldSubTypes fldsubtype, string tabela, string tabelalink = "", Boolean validvalue = false, string ValidValue1 = "", string ValidDscr1 = "", string ValidValue2 = "", string ValidDscr2 = "", string ValidValue3 = "", string ValidDscr3 = "", string ValidValue4 = "", string ValidDscr4 = "", string ValidValue5 = "", string ValidDscr5 = "") { Int32 i = 0; try { UserFieldsMD oUserFieldsMD; oUserFieldsMD = (UserFieldsMD)ocompany.GetBusinessObject(BoObjectTypes.oUserFields); oUserFieldsMD.Name = Nome; oUserFieldsMD.Type = fldtype; oUserFieldsMD.Description = descricao; oUserFieldsMD.Size = tamanho; oUserFieldsMD.SubType = fldsubtype; oUserFieldsMD.TableName = tabela; oUserFieldsMD.LinkedTable = tabelalink; if (validvalue == true) { oUserFieldsMD.ValidValues.Value = ValidValue1; oUserFieldsMD.ValidValues.Description = ValidDscr1; oUserFieldsMD.ValidValues.Add(); oUserFieldsMD.ValidValues.Value = ValidValue2; oUserFieldsMD.ValidValues.Description = ValidDscr2; oUserFieldsMD.ValidValues.Add(); oUserFieldsMD.ValidValues.Value = ValidValue3; oUserFieldsMD.ValidValues.Description = ValidDscr3; oUserFieldsMD.ValidValues.Add(); if (ValidValue4 != "") { oUserFieldsMD.ValidValues.Value = ValidValue4; oUserFieldsMD.ValidValues.Description = ValidDscr4; oUserFieldsMD.ValidValues.Add(); } if (ValidValue5 != "") { oUserFieldsMD.ValidValues.Value = ValidValue5; oUserFieldsMD.ValidValues.Description = ValidDscr5; oUserFieldsMD.ValidValues.Add(); } } i = oUserFieldsMD.Add(); //if (i != 0) // throw new Exception(ocompany.GetLastErrorDescription()); return(i); } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); return(i); } }
/// <summary> /// Create field on table /// </summary> /// <param name="tableName"></param> /// <param name="fieldName"></param> /// <param name="fieldDescription"></param> /// <param name="type"></param> /// <param name="size"></param> /// <param name="subType"></param> /// <param name="validValues">Dropdown values</param> /// <param name="defaultValue"></param> /// <returns></returns> public static void CreateField(string tableName, string fieldName, string fieldDescription, BoFieldTypes type = BoFieldTypes.db_Alpha, int size = 50, BoFldSubTypes subType = BoFldSubTypes.st_None, IDictionary <string, string> validValues = null, string defaultValue = null) { UserFieldsMD userFieldsMd = null; try { userFieldsMd = SboApp.Company.GetBusinessObject(BoObjectTypes.oUserFields) as UserFieldsMD; if (userFieldsMd == null) { throw new NullReferenceException("Failed to get UserFieldsMD object"); } var fieldId = GetFieldId(tableName, fieldName); if (fieldId != -1) { return; } userFieldsMd.TableName = tableName; userFieldsMd.Name = fieldName; userFieldsMd.Description = fieldDescription; userFieldsMd.Type = type; userFieldsMd.SubType = subType; userFieldsMd.Size = size; userFieldsMd.EditSize = size; userFieldsMd.DefaultValue = defaultValue; if (validValues != null) { foreach (var validValue in validValues) { userFieldsMd.ValidValues.Value = validValue.Key; userFieldsMd.ValidValues.Description = validValue.Value; userFieldsMd.ValidValues.Add(); } } ErrorHelper.HandleErrorWithException(userFieldsMd.Add(), "Could not create field"); } catch (Exception ex) { SboApp.Logger.Error($"Create Field {tableName}.{fieldName} Error: {ex.Message}", ex); throw; } finally { if (userFieldsMd != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(userFieldsMd); } } }
/// <summary> /// Builds a B1DbColumn from its main members information. /// </summary> /// <param name="table">Name of the parent table that this field refers to.</param> /// <param name="name">Field name.</param> /// <param name="description">Description of the field.</param> /// <param name="type">Data type, which describes the nature of the data, of the specified field.</param> /// <param name="subtype">Data subtype, which describes the nature of the type, of the specified field.</param> /// <param name="size">Size of the field.</param> /// <param name="validValues">List of valid values for the specified user defined field.</param> /// <param name="defaultValue">Default value of the field.</param> public B1DbColumn( string table, string name, string description, BoFieldTypes type, int size, B1DbValidValue[] validValues, int defaultValue) : this(table, name, description, type, BoFldSubTypes.st_None, size, validValues, defaultValue) { }
///////////////////////////////////////////////////////////////////////////// /// <summary> /// Builds a B1DbColumn from a Fields collection. /// </summary> /// <param name="fields">Collection of Field objects.</param> public B1DbColumn( Fields fields) { this.Name = (string)fields.Item(0).Value; this.Size = (int)fields.Item(1).Value; this.Type = (BoFieldTypes)fields.Item(2).Value; //Not given by SBObob.GetTableFieldList() this.SubType = (BoFldSubTypes)fields.Item(3).Value; this.IsNullable = (((string)fields.Item(3).Value).Equals("0"))?false:true; this.HasValidValues = ((int)fields.Item(4).Value == 0)?false:true; this.LinkedTo = (string)fields.Item(5).Value; this.Description = (string)fields.Item(6).Value; }
/// <summary> Constructor. </summary> /// <remarks> Ranaya, 02/05/2017. </remarks> /// <param name="pIntPriority"> The int priority. </param> /// <param name="pStrName"> Name of the string. </param> /// <param name="pStrDescription"> Information describing the string. </param> /// <param name="pEnmType"> Type of the enm. </param> /// <param name="pEnmSubType"> Type of the enm sub. </param> /// <param name="pIntSize"> Size of the int. </param> /// <param name="pIntSubSize"> Size of the int sub. </param> public FieldAttribute(int pIntPriority, string pStrName, string pStrDescription, BoFieldTypes pEnmType, BoFldSubTypes pEnmSubType, int pIntSize, int pIntSubSize) { mIntPriority = pIntPriority; mStrName = pStrName; mStrDescription = pStrDescription; mEnmType = pEnmType; mEnmSubType = pEnmSubType; mIntSize = pIntSize; mIntSubSize = pIntSubSize; mStrLinkedTable = ""; mStrLinkedUDO = ""; }
/// <summary> Constructor. </summary> /// <remarks> Ranaya, 02/05/2017. </remarks> /// <param name="pStrName"> Name of the string. </param> /// <param name="pStrDescription"> Information describing the string. </param> public FieldAttribute(string pStrName, string pStrDescription) { mIntPriority = 0; mStrName = pStrName; mStrDescription = pStrDescription; mEnmType = BoFieldTypes.db_Alpha; mEnmSubType = BoFldSubTypes.st_None; mIntSize = 11; mIntSubSize = 10; mStrLinkedTable = ""; mStrLinkedUDO = ""; }
public AlterTableCommand Column(string columnName, string columnDescription, BoFieldTypes dbType, Action <CreateColumnCommand> column = null) { var command = new CreateColumnCommand(Name, columnName, columnDescription); command.WithType(dbType); if (column != null) { column(command); } TableCommands.Add(command); NeedIndex(command); return(this); }
public static void AddUserFieldIfNotExist(string tableName, string name, string description, BoFieldTypes type = BoFieldTypes.db_Alpha, BoFldSubTypes subType = BoFldSubTypes.st_None, int?editSize = null, Dictionary <string, string> validValues = null, string defaultValue = null, string linkedUdo = null, bool?mandatory = false) { if (UserFieldExists(tableName, name)) { Logger.Info("UserField {1} found in table {0}, skipping creation.", tableName, name); } else { AddUserField(tableName, name, description, type, subType, editSize, validValues, defaultValue, linkedUdo, mandatory); } }
public UserDefiniedField(string tableName, string fieldName, string fieldDescription, BoFieldTypes type = BoFieldTypes.db_Alpha, int size = 50, BoFldSubTypes subType = BoFldSubTypes.st_None, IDictionary <string, string> validValues = null, string defaultValue = null) { TableName = tableName; FieldName = fieldName; FieldDescription = fieldDescription; Type = type; Size = size; SubType = subType; ValidValues = validValues; DefaultValue = defaultValue; }
internal static int AddCampo(string nomeCampo, string nomeTabela, BoFieldTypes tipoCampo, BoFldSubTypes subTipo, int tamanho, BoYesNoEnum mandatory, string descricao, string valorPadrao, List <ValoresValidos> valoresValidos, Tipos.TipoTabela tipoTabela, string nomeUdoReferencia = "", string nomeTabelaReferencia = "") { int intRetCode = -1; SAPbobsCOM.UserFieldsMD objUserFieldsMD = null; //instancia objeto para criar campo objUserFieldsMD = (UserFieldsMD)B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields); //seta propriedades objUserFieldsMD.Name = nomeCampo; objUserFieldsMD.TableName = tipoTabela == Tipos.TipoTabela.Usuario ? "@" + nomeTabela : nomeTabela; objUserFieldsMD.Type = tipoCampo; objUserFieldsMD.SubType = subTipo; objUserFieldsMD.EditSize = tamanho; objUserFieldsMD.Mandatory = (BoYesNoEnum)mandatory; objUserFieldsMD.Description = descricao; objUserFieldsMD.AddValidValues(valoresValidos); if (!string.IsNullOrEmpty(nomeUdoReferencia)) { objUserFieldsMD.LinkedUDO = nomeUdoReferencia; } if (!string.IsNullOrEmpty(nomeTabelaReferencia)) { objUserFieldsMD.LinkedTable = nomeTabelaReferencia; } objUserFieldsMD.DefaultValue = valorPadrao; //adiciona campo intRetCode = objUserFieldsMD.Add(); //verifica e retorna erro if (intRetCode != 0 && intRetCode != -2035) { B1Exception.throwException("MetaData.CriaCampos: ", new Exception(B1AppDomain.Company.GetLastErrorDescription())); } //mata objeto para reutilizar senao trava Marshal.FinalReleaseComObject(objUserFieldsMD); objUserFieldsMD = null; GC.Collect(); return(intRetCode); }
public B1DbColumn( string table, string name, string description, BoFieldTypes type, BoFldSubTypes subtype, int size, bool mandatory, B1DbValidValue[] validValues, int defaultValue) { this.Table = table; this.Name = name; this.Description = description; this.Type = type; this.SubType = subtype; this.Size = size; this.IsNullable = mandatory; this.ValidValues = validValues; this.DefaultValue = defaultValue; }
/// <summary> /// Builds a B1DbColumn from a Fields collection. /// </summary> /// <param name="field">Collection of Field objects.</param> public B1DbColumn( UserFieldsMD field) { this.Table = field.TableName; this.Name = field.Name; this.Size = field.Size; this.Type = field.Type; this.SubType = field.SubType; this.IsNullable = (field.Mandatory == BoYesNoEnum.tYES? false: true); // Count = 0 => Value and Description empty if (field.ValidValues.Count == 0) { this.HasValidValues = false; } else { field.ValidValues.SetCurrentLine(0); this.HasValidValues = (field.ValidValues.Value == ""? false: true); } this.LinkedTo = field.LinkedTable; this.Description = field.Description; }
public CreateColumnCommand WithType(BoFieldTypes fieldType) { ColumnType = fieldType; return(this); }
//Cria campo de usuario public void CreateField(string tableName, string tableField, string fieldDescr, BoFieldTypes type, int size, BoFldSubTypes subType = SAPbobsCOM.BoFldSubTypes.st_None, string defaultValue = "", string[] validValues = null, BoYesNoEnum mandatory = BoYesNoEnum.tNO) { int err = 0; string errMsg = ""; UserFieldsMD oUserFieldsMD = null; try { bool exist = UserFieldsExist(tableName, tableField); oUserFieldsMD = ((UserFieldsMD)(oConnection.Company.GetBusinessObject(BoObjectTypes.oUserFields))); //se o campo nao existe, cria if (!exist) { if (tableField.Length >= 20) { throw new Exception("Nome de campo maior que 19 caracteres: " + tableField + " Len: " + tableField.Length); } if (fieldDescr.Length >= 30) { throw new Exception("Descrição de campo maior que 29 caracteres: " + fieldDescr + " Len: " + fieldDescr.Length); } //Adiciona o campo oUserFieldsMD.TableName = tableName;//.Length >= 20 ? tableName.Substring(0, 20) : tableName; oUserFieldsMD.Name = tableField; oUserFieldsMD.Description = fieldDescr; oUserFieldsMD.Type = type; oUserFieldsMD.Size = size; oUserFieldsMD.EditSize = size; oUserFieldsMD.SubType = subType; oUserFieldsMD.DefaultValue = defaultValue; oUserFieldsMD.Mandatory = mandatory; if (validValues != null) { IValidValuesMD vals = oUserFieldsMD.ValidValues; for (int i = 0; i < validValues.Length; i++) { string[] dv = validValues[i].Trim().Split(new char[] { ',', '|', '=' }); vals.SetCurrentLine(i); vals.Value = dv[0]; vals.Description = dv[1]; vals.Add(); } System.Runtime.InteropServices.Marshal.ReleaseComObject(vals); vals = null; System.GC.Collect(); } if (oUserFieldsMD.Add() != 0) { oConnection.Company.GetLastError(out err, out errMsg); logMessage = "Erro ao criar Campo de Usuário: '" + tableField + "' em '" + tableName + "': " + errMsg + " : " + err; logger.log(logMessage, Logger.LogType.ERROR, null, false); } else { //mostra msg logMessage = "Criado campo de Usuário: '" + tableField + "' em '" + tableName; logger.log(logMessage, Logger.LogType.INFO); } System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD); oUserFieldsMD = null; System.GC.Collect(); } } catch (Exception e) { oConnection.Company.GetLastError(out err, out errMsg); logMessage = "Erro ao criar Campo de Usuário: '" + tableField + "' em '" + tableName + "': " + errMsg + " : " + err; logger.log(logMessage, Logger.LogType.ERROR, e); //SB1ControlException.SB1ControlException.Save(e); if (oUserFieldsMD != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD); } oUserFieldsMD = null; System.GC.Collect(); if (oUserFieldsMD != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD); } oUserFieldsMD = null; System.GC.Collect(); } }
public static void AddUserField(string tableName, string name, string description, BoFieldTypes type = BoFieldTypes.db_Alpha, BoFldSubTypes subType = BoFldSubTypes.st_None, int?editSize = null, Dictionary <string, string> validValues = null, string defaultValue = null, string linkedUdo = null, bool?mandatory = false) { if (UserFieldExists(tableName, name)) { throw new Exception(string.Format("Userfield {0} already exists in table {1}", name, tableName)); } using (var factory = new SboDisposableBusinessObjectFactory()) { var userFieldsMd = factory.Create <UserFieldsMD>(BoObjectTypes.oUserFields); userFieldsMd.TableName = tableName; userFieldsMd.Name = name; userFieldsMd.Description = description; userFieldsMd.Type = type; userFieldsMd.SubType = subType; if (!editSize.HasValue) { switch (type) { case BoFieldTypes.db_Alpha: editSize = 254; break; case BoFieldTypes.db_Memo: break; case BoFieldTypes.db_Numeric: break; case BoFieldTypes.db_Date: break; case BoFieldTypes.db_Float: break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } } if (!type.Equals(BoFieldTypes.db_Date) && editSize.HasValue) { userFieldsMd.EditSize = editSize.Value; } if (validValues != null) { int insertedValues = 0; foreach (string key in validValues.Keys) { userFieldsMd.ValidValues.Value = key; userFieldsMd.ValidValues.Description = validValues[key]; if (insertedValues < validValues.Count - 1) { userFieldsMd.ValidValues.Add(); } insertedValues++; } } if (defaultValue != null) { userFieldsMd.DefaultValue = defaultValue; } if (linkedUdo != null) { userFieldsMd.LinkedUDO = linkedUdo; } userFieldsMd.Mandatory = mandatory.GetValueOrDefault(false) ? BoYesNoEnum.tYES : BoYesNoEnum.tNO; Logger.Debug("Adding field {0} to table {1}", name, tableName); if (userFieldsMd.Add() != 0) { throw new Exception(SboAddon.Instance.Company.GetLastErrorDescription()); } Logger.Info("Added field {0} to table {1}", name, tableName); } }
/// <summary> /// Initializes a new instance of the <see cref="UserFieldAttribute" /> class. /// </summary> /// <param name="type">The type.</param> /// <param name="subtype">The subtype.</param> /// <exception cref="ArgumentException"> /// Thrown when the size provided for the type is invalid. /// <para /> /// Valid sizes are: /// <para /> /// Alpha [1..254] /// <para /> /// Numeric [1..11] /// </exception> public UserFieldAttribute(BoFieldTypes type, BoFldSubTypes subtype) : this(type, subtype, 0) { }
/// <summary> /// Initializes a new instance of the <see cref="UserFieldAttribute" /> class. /// </summary> /// <param name="type">The type.</param> /// <param name="subtype">The subtype.</param> /// <param name="size">The size.</param> /// <exception cref="System.ArgumentException"> /// Thrown when the size provided for the type is invalid. /// <para /> /// Valid sizes are: /// <para /> /// Alpha [1..254] /// <para /> /// Numeric [1..11] /// </exception> public UserFieldAttribute(BoFieldTypes type, BoFldSubTypes subtype, int size) { Type = type; SubType = subtype; Size = size; }
public static string CreateField(string tablename, string fieldname, string description, BoFieldTypes type, int size, bool isMandatory, bool isSapTable = false, string likedToTAble = "", string defaultValue = "", BoFldSubTypes subType = BoFldSubTypes.st_None) { // Get a new Recordset object Recordset oRecordSet = (Recordset)Company.GetBusinessObject(BoObjectTypes.BoRecordset); string sqlQuery = $"SELECT T0.TableID, T0.FieldID FROM CUFD T0 WHERE T0.TableID = '@{tablename}' AND T0.AliasID = '{fieldname}'"; oRecordSet.DoQuery(sqlQuery); var updateFlag = oRecordSet.RecordCount == 1; var fieldId = int.Parse(oRecordSet.Fields.Item("FieldID").Value.ToString()); System.Runtime.InteropServices.Marshal.ReleaseComObject(oRecordSet); UserFieldsMD oUfield = (UserFieldsMD)Company.GetBusinessObject(BoObjectTypes.oUserFields); if (updateFlag) { return(""); //oUfield.GetByKey(tablename, fieldId); } try { oUfield.TableName = tablename; oUfield.Name = fieldname; oUfield.Description = description; oUfield.Type = type; oUfield.Mandatory = isMandatory ? BoYesNoEnum.tYES : BoYesNoEnum.tNO; oUfield.DefaultValue = defaultValue; if (type == BoFieldTypes.db_Float) { oUfield.SubType = subType; } if (type == BoFieldTypes.db_Alpha || type == BoFieldTypes.db_Numeric) { oUfield.EditSize = size; } oUfield.LinkedTable = likedToTAble; int ret = updateFlag ? oUfield.Update() : oUfield.Add(); if (ret == 0) { System.Runtime.InteropServices.Marshal.ReleaseComObject(oUfield); return(string.Empty); } else { System.Runtime.InteropServices.Marshal.ReleaseComObject(oUfield); return(Company.GetLastErrorDescription()); } } catch (Exception e) { return($"exeption : {e.Message}, Sap Error {Company.GetLastErrorDescription()}"); } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(oUfield); } }
/// <summary> /// Create UDF on UDT /// </summary> /// <param name="tableName">UDT Name without @</param> /// <param name="fieldName">Field name</param> /// <param name="fieldDescription"></param> /// <param name="type">BoFieldTypes type</param> /// <param name="size"></param> /// <param name="subType"></param> /// <returns></returns> public static void CreateFieldOnUDT(string tableName, string fieldName, string fieldDescription, BoFieldTypes type = BoFieldTypes.db_Alpha, int size = 50, BoFldSubTypes subType = BoFldSubTypes.st_None) { tableName = "@" + tableName; CreateField(tableName, fieldName, fieldDescription, type, size, subType); }
/// <summary> /// Initializes a new instance of the <see cref="Column" /> class. /// </summary> /// <param name="name">The column name.</param> /// <param name="type">The column type.</param> public Column(string name, BoFieldTypes type) { Name = name; Type = type; }
public void CriaCampo(Company oCompany, string sTabela, string sCampo, string sDescricao, BoFieldTypes Tipo, BoFldSubTypes SubTipo, int iComprimento, BoYesNoEnum Obrigatorio, bool bValorPadrao, string sValorPadrao, bool bValoresValidos, string[,] sValoresValidos, out string sMensagem) { sMensagem = string.Empty; try { if (!VerificaExistenciaCampo(oCompany, sTabela, sCampo)) { int lErrCode; string lErrStr; int lRetVal; UserFieldsMD oUserFieldMD = null; //Limpa a memória oUserFieldMD = (UserFieldsMD)oCompany.GetBusinessObject(BoObjectTypes.oUserFields); System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldMD); oUserFieldMD = null; GC.Collect(); oUserFieldMD = (UserFieldsMD)oCompany.GetBusinessObject(BoObjectTypes.oUserFields); oUserFieldMD.TableName = sTabela; oUserFieldMD.Name = sCampo; oUserFieldMD.Description = sDescricao; oUserFieldMD.Type = Tipo; oUserFieldMD.SubType = SubTipo; oUserFieldMD.Mandatory = Obrigatorio; if (bValoresValidos) { for (int i = 0; i < sValoresValidos.GetLength(0); i++) { oUserFieldMD.ValidValues.Value = sValoresValidos[i, 0]; oUserFieldMD.ValidValues.Description = sValoresValidos[i, 1]; oUserFieldMD.ValidValues.Add(); } } if (bValorPadrao) { oUserFieldMD.DefaultValue = sValorPadrao; } if (iComprimento > 0) { oUserFieldMD.Size = iComprimento; } lRetVal = oUserFieldMD.Add(); if (lRetVal != 0) { oCompany.GetLastError(out lErrCode, out lErrStr); sMensagem = string.Format("Falha! Descricao B1: {0} - Codigo Erro B1: {1}", lErrStr, lErrCode.ToString()); } else { sMensagem = string.Format("Campo {0} - {1}, criado com sucesso..", sCampo, sDescricao); } //Limpa a Memória System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldMD); oUserFieldMD = null; GC.Collect(); } } catch (Exception ex) { sMensagem = string.Format("Erro ao criar Tabela/Campos SAP, Erro: {0}", ex.Message); } }