Ejemplo n.º 1
0
 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();
            }
        }
Ejemplo n.º 4
0
 internal void Apply(UserFieldsMD field, PropertyInfo property)
 {
     field.Name        = DetermineFieldName(property);
     field.Description = DetermineFieldDescription(property);
 }
Ejemplo n.º 5
0
 public UpdateUserField(Company company, UserFieldsMD field)
 {
     this.company = company;
     this.field   = field;
 }
Ejemplo n.º 6
0
        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);
            }
        }