internal static void removeField(UserFieldsMD uf, string tableName, int fieldID, SAPbouiCOM.Application app, SAPbobsCOM.Company company) { int ret; string errMsg; if (uf.GetByKey(tableName, fieldID)) { ret = uf.Remove(); if (ret != 0) { company.GetLastError(out ret, out errMsg); app.SetStatusBarMessage(string.Format("Error removing field {0}-{1}", tableName, fieldID), SAPbouiCOM.BoMessageTime.bmt_Short, true); throw new Exception(errMsg); } app.StatusBar.SetSystemMessage(string.Format("Removed field {0}-{1}", tableName, fieldID), SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success); } }
/// <summary> /// Increase UserField Size /// </summary> /// <param name="tableName"></param> /// <param name="fieldAlias"></param> /// <param name="size"></param> /// <param name="editSize"></param> /// <returns></returns> public static void IncreaseUserFieldSize(string tableName, string fieldAlias, int size, int editSize = 0) { UserFieldsMD userFieldsMd = null; try { userFieldsMd = SboApp.Company.GetBusinessObject(BoObjectTypes.oUserFields) as UserFieldsMD; if (userFieldsMd == null) { return; } var fieldId = GetFieldId(tableName, fieldAlias); if (fieldId == -1) { return; } if (!userFieldsMd.GetByKey(tableName, fieldId)) { return; } bool changed = false; if (userFieldsMd.Size < size && userFieldsMd.EditSize < editSize) { if (editSize == 0) { editSize = size; } userFieldsMd.Size = size; userFieldsMd.EditSize = editSize; changed = true; } else if (userFieldsMd.Size < size) { userFieldsMd.Size = size; changed = true; } else if (userFieldsMd.EditSize < editSize) { userFieldsMd.EditSize = editSize; changed = true; } if (changed) { userFieldsMd.Update(); } } catch (Exception ex) { SboApp.Logger.Error($"Increase User Field Size Error: {ex.Message}", ex); throw; } finally { if (userFieldsMd != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(userFieldsMd); } userFieldsMd = null; GC.Collect(); } }
/// <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="editSize"></param> /// <param name="subType"></param> /// <param name="validValues">Dropdown values</param> /// <param name="defaultValue"></param> /// <param name="linkedTable"> use '@' with usertables</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, string linkedTable = null, int editSize = 0) { 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 = editSize != 0 ? 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(); } } if (linkedTable != null) { if (DatabaseHelper.TableExists(linkedTable)) { userFieldsMd.LinkedTable = linkedTable.Trim('@'); } else { throw new Exception($"Linked table '{linkedTable}' could not be found"); } } 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); } userFieldsMd = null; GC.Collect(); } }
internal void Apply(UserFieldsMD field, PropertyInfo property) { field.Name = DetermineFieldName(property); field.Description = DetermineFieldDescription(property); }
public UpdateUserField(Company company, UserFieldsMD field) { this.company = company; this.field = field; }
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); } }