Esempio n. 1
0
        internal static int DeleteCampo(string nomeTabela, string nomeCampo)
        {
            int intRetCode = -1;

            SAPbobsCOM.UserFieldsMD objUserFieldsMD = null;

            //instancia objeto para criar campo
            objUserFieldsMD = (UserFieldsMD)B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);

            if (objUserFieldsMD.GetByKey(nomeTabela, idCampo(nomeCampo, nomeTabela)))
            {
                intRetCode = objUserFieldsMD.Remove();
                //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(0);
        }
        public static void Agregar_UDF(string Name, string Description, SAPbobsCOM.BoFieldTypes Type, int Size, int FieldSize, string TableName)
        {
            try
            {
                SAPbobsCOM.UserFieldsMD oUserFieldsMD = (SAPbobsCOM.UserFieldsMD)oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);

                oUserFieldsMD.Name        = Name;
                oUserFieldsMD.Description = Description;
                oUserFieldsMD.Type        = Type;
                oUserFieldsMD.Size        = Size;
                oUserFieldsMD.EditSize    = FieldSize;
                oUserFieldsMD.TableName   = TableName;


                // Adding the Field to the Table
                try
                {
                    int lRetCode = oUserFieldsMD.Add();
                }
                catch (Exception)
                { }
                finally
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(oUserFieldsMD);
                    oUserFieldsMD = null;
                    GC.Collect();
                }
            }
            catch (Exception)
            {
            }
        }
Esempio n. 3
0
        /// <summary> Gets user field. </summary>
        /// <remarks> Ranaya, 05/05/2017. </remarks>
        /// <returns> The user field. </returns>

        public UserFieldsMD GetUserField()
        {
            SAPbobsCOM.UserFieldsMD lObjUserField = null;
            lObjUserField = (SAPbobsCOM.UserFieldsMD)DIApplication.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);

            lObjUserField.TableName   = TableName;
            lObjUserField.Name        = GetAttributes().Name;
            lObjUserField.Description = GetAttributes().Description;
            lObjUserField.Type        = GetAttributes().Type;
            lObjUserField.SubType     = GetAttributes().SubType;
            lObjUserField.Size        = GetAttributes().Size;
            lObjUserField.EditSize    = GetAttributes().Type == BoFieldTypes.db_Alpha?  GetAttributes().Size : GetAttributes().SubSize;

            if (!string.IsNullOrEmpty(GetAttributes().LinkedTable))
            {
                lObjUserField.LinkedTable = GetAttributes().LinkedTable;
            }

            if (!string.IsNullOrEmpty(GetAttributes().LinkedUDO))
            {
                lObjUserField.LinkedUDO = GetAttributes().LinkedUDO;
            }

            return(lObjUserField);
        }
        public void RemoveUserField(string TableName, string FieldName)
        {
            Log.AppendFormat("Remoção do Campo {0}.{1}: ", TableName, FieldName);
            SAPbobsCOM.UserFieldsMD oUserFieldsMD = ((SAPbobsCOM.UserFieldsMD)(SBOApp.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)));

            string Sql = " SELECT FieldId FROM CUFD WHERE TableID = '{0}' AND AliasID = '{1}' ";

            Sql = String.Format(Sql, TableName, FieldName);

            string FieldId = QueryForValue(Sql);

            if (FieldId != null)
            {
                if (oUserFieldsMD.GetByKey(TableName, Convert.ToInt32(FieldId)))
                {
                    CodErro = oUserFieldsMD.Remove();
                    this.ValidateAction();
                }
            }
            else
            {
                MsgErro = "";
                CodErro = 0;
                Log.AppendLine(" Tabela/Campo não encontrado ");
            }

            Marshal.ReleaseComObject(oUserFieldsMD);
            oUserFieldsMD = null;
        }
        public void CreateUserField(string TableName, string FieldName, string FieldDescription, SAPbobsCOM.BoFieldTypes oType, SAPbobsCOM.BoFldSubTypes oSubType, int FieldSize, bool MandatoryYN = false, string DefaultValue = "")
        {
            if (FieldDescription.Length > 30)
            {
                FieldDescription = FieldDescription.Substring(0, 30);
            }
            if (FindColumns != null)
            {
                FindColumns.Fields.Add(FieldName, FieldDescription);
            }

            Log.AppendFormat(Environment.NewLine + "Criação/Atualização do Campo {0}.{1}: ", TableName, FieldName);
            SAPbobsCOM.UserFieldsMD oUserFieldsMD = ((SAPbobsCOM.UserFieldsMD)(SBOApp.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)));
            bool bUpdate;

            string Sql = " SELECT FieldId FROM CUFD WHERE TableID = '{0}' AND AliasID = '{1}' ";

            Sql = String.Format(Sql, TableName, FieldName);
            string FieldId = QueryForValue(Sql);

            if (FieldId != null)
            {
                bUpdate = oUserFieldsMD.GetByKey(TableName, Convert.ToInt32(FieldId));
            }
            else
            {
                bUpdate = false;
            }

            oUserFieldsMD.TableName   = TableName;
            oUserFieldsMD.Name        = FieldName;
            oUserFieldsMD.Description = FieldDescription;
            oUserFieldsMD.Type        = oType;
            oUserFieldsMD.SubType     = oSubType;
            oUserFieldsMD.Mandatory   = GetSapBoolean(MandatoryYN);
            if (!String.IsNullOrEmpty(DefaultValue))
            {
                oUserFieldsMD.DefaultValue = DefaultValue;
            }

            if (FieldSize > 0)
            {
                oUserFieldsMD.EditSize = FieldSize;
            }

            if (bUpdate)
            {
                //CodErro = oUserFieldsMD.Update();
                CodErro = 0;
            }
            else
            {
                CodErro = oUserFieldsMD.Add();
            }
            this.ValidateAction();

            Marshal.ReleaseComObject(oUserFieldsMD);
            oUserFieldsMD = null;
        }
        //Aplica valor padrão a campo de usuário
        public bool fSetaValorPadrao(string cTabela, string cCampo, string Valor, TipoTabela cTipoTabela)
        {
            string cTabelaAux = null;

            //TipoTabela: 0=user, 1=SAPB1

            if (cTipoTabela == TipoTabela.tUSER)
            {
                cTabelaAux = "@" + cTabela;
            }
            else
            {
                cTabelaAux = cTabela;
            }

            bool valorExiste = false;
            int  campoID     = fFieldId(cTabelaAux, cCampo);

            if (fExisteValorValido(cTabelaAux, campoID, Valor))
            {
                valorExiste = true;
            }

            //se existe esse valor válido
            if (valorExiste && (fExisteValorDefaultSet(cTabelaAux, campoID.ToString(), Valor)) == false)
            {
                GC.Collect();
                SAPbobsCOM.UserFieldsMD objUserFieldsMD;
                objUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                if (objUserFieldsMD.GetByKey(cTabelaAux, campoID))
                {
                    objUserFieldsMD.DefaultValue = Valor;
                }
                CodErroDB = objUserFieldsMD.Update();
                if (CodErroDB != 0)
                {
                    objUserFieldsMD = null;
                    oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                    // SBO_Application.StatusBar.SetText("Valor padrão para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com erro! " + CodErroDB.ToString() + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    return(false);
                }
                else
                {
                    objUserFieldsMD = null;
                    // SBO_Application.StatusBar.SetText("Valor padrão para o campo: [" + cCampo + "] da tabela [" + cTabela + "] setado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    return(true);
                }
            }
            else
            {
                return(false);
            }
        }
Esempio n. 7
0
        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);
        }
        //Aplica campo como obrigatorio
        public bool fSetaCampoObrigatorio(string cTabela, string cCampo, TipoTabela cTipoTabela)
        {
            string cTabelaAux = null;

            //'TipoTabela: 0=user, 1=SAPB1

            if (cTipoTabela == TipoTabela.tUSER)
            {
                cTabelaAux = "@" + cTabela;
            }
            else
            {
                cTabelaAux = cTabela;
            }

            int campoID = fFieldId(cTabelaAux, cCampo);

            SAPbobsCOM.UserFieldsMD objUserFieldsMD;
            GC.Collect();
            objUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
            if (objUserFieldsMD.GetByKey(cTabelaAux, campoID))
            {
                objUserFieldsMD.Mandatory = SAPbobsCOM.BoYesNoEnum.tYES;
                CodErroDB = objUserFieldsMD.Update();
            }

            if (CodErroDB != 0)
            {
                oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                // SBO_Application.StatusBar.SetText("Obrigatoriedade para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com sucesso! " + CodErroDB.ToString() + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                return(false);
            }
            else
            {
                // SBO_Application.StatusBar.SetText("Obrigatoriedade para o campo: [" + cCampo + "] da tabela [" + cTabela + "] setada com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                return(true);
            }
        }
Esempio n. 9
0
        internal static int UpdateCampo(string nomeTabela, string nomeCampo, int tamanho, BoYesNoEnum mandatory, string descricaoCampo, string valorPadrao, List <ValoresValidos> valoresValidos)
        {
            int intRetCode = -1;

            SAPbobsCOM.UserFieldsMD objUserFieldsMD = null;

            //instancia objeto para alterar campo
            objUserFieldsMD = (UserFieldsMD)B1AppDomain.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);


            if (objUserFieldsMD.GetByKey(nomeTabela, idCampo(nomeCampo, nomeTabela)))
            {
                //seta propriedades
                objUserFieldsMD.EditSize     = tamanho;
                objUserFieldsMD.Mandatory    = mandatory;
                objUserFieldsMD.Description  = descricaoCampo;
                objUserFieldsMD.DefaultValue = valorPadrao;
                objUserFieldsMD.AddValidValues(valoresValidos);


                //Atualiza Campos campo
                intRetCode = objUserFieldsMD.Update();
                //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);
        }
Esempio n. 10
0
        public bool AddColumns(string TableName, string Name, string Description, SAPbobsCOM.BoFieldTypes Type, int Size = 0, SAPbobsCOM.BoFldSubTypes SubType = SAPbobsCOM.BoFldSubTypes.st_None, string LinkedTable = "", string[,] LOV = null, string DefV = "")
        {
            bool outResult = false;

            try
            {
                SAPbobsCOM.UserFieldsMD v_UserField = default(SAPbobsCOM.UserFieldsMD);

                if (TableName.StartsWith("@") == true)
                {
                    if (!ColumnExists(TableName, Name))
                    {
                        v_UserField           = (SAPbobsCOM.UserFieldsMD)oDiCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                        v_UserField.TableName = TableName;
                        v_UserField.Name      = Name;
                        if (!string.IsNullOrEmpty(DefV))
                        {
                            v_UserField.DefaultValue = DefV;
                        }

                        if (LOV == null)
                        {
                        }
                        else
                        {
                            for (int k = 0; k <= LOV.Length - 1; k++)
                            {
                                v_UserField.ValidValues.Value = LOV[k, 0];
                                v_UserField.ValidValues.Value = LOV[k, 1];
                                v_UserField.ValidValues.Add();
                            }
                        }

                        v_UserField.Description = Description;
                        v_UserField.Type        = Type;
                        if (Type != SAPbobsCOM.BoFieldTypes.db_Date)
                        {
                            if (Size != 0)
                            {
                                v_UserField.Size     = Convert.ToInt16(Size);
                                v_UserField.EditSize = Convert.ToInt16(Size);
                            }
                        }
                        if (SubType != SAPbobsCOM.BoFldSubTypes.st_None)
                        {
                            v_UserField.SubType = SubType;
                        }
                        if (!string.IsNullOrEmpty(LinkedTable))
                        {
                            v_UserField.LinkedTable = LinkedTable;
                        }
                        v_RetVal = v_UserField.Add();
                        if (v_RetVal != 0)
                        {
                            oDiCompany.GetLastError(out v_ErrCode, out v_ErrMsg);
                            Program.objHrmsUI.oApplication.SetStatusBarMessage("Failed to add UserField " + Description + " - " + v_ErrCode + " " + v_ErrMsg);
                            return(false);
                        }
                        else
                        {
                            Program.objHrmsUI.oApplication.SetStatusBarMessage("[@" + TableName + "] - " + Description + " added successfully!!!");
                            outResult = true;
                            return(true);
                        }
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(v_UserField);
                        v_UserField = null;
                    }
                    else
                    {
                        return(false);
                    }
                }


                if (TableName.StartsWith("@") == false)
                {
                    if (!UDFExists(TableName, Name))
                    {
                        v_UserField           = (SAPbobsCOM.UserFieldsMD)oDiCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                        v_UserField.TableName = TableName;
                        v_UserField.Name      = Name;
                        if (!string.IsNullOrEmpty(DefV))
                        {
                            v_UserField.DefaultValue = DefV;
                        }

                        if (LOV == null)
                        {
                        }
                        else
                        {
                            for (int k = 0; k <= LOV.Length / 2 - 1; k++)
                            {
                                v_UserField.ValidValues.Value       = LOV[k, 0];
                                v_UserField.ValidValues.Description = LOV[k, 1];
                                v_UserField.ValidValues.Add();
                            }
                        }
                        v_UserField.Description = Description;
                        v_UserField.Type        = Type;
                        if (Type != SAPbobsCOM.BoFieldTypes.db_Date)
                        {
                            if (Size != 0)
                            {
                                v_UserField.Size     = Size;
                                v_UserField.EditSize = Size;
                            }
                        }
                        if (SubType != SAPbobsCOM.BoFldSubTypes.st_None)
                        {
                            v_UserField.SubType = SubType;
                        }
                        if (!string.IsNullOrEmpty(LinkedTable))
                        {
                            v_UserField.LinkedTable = LinkedTable;
                        }
                        v_RetVal = v_UserField.Add();
                        if (v_RetVal != 0)
                        {
                            oDiCompany.GetLastError(out v_ErrCode, out v_ErrMsg);
                            Program.objHrmsUI.oApplication.SetStatusBarMessage("Failed to add UserField " + Description + " - " + v_ErrCode + " " + v_ErrMsg);
                            return(false);
                        }
                        else
                        {
                            Program.objHrmsUI.oApplication.SetStatusBarMessage("Udf Created " + Description, SAPbouiCOM.BoMessageTime.bmt_Short, false);

                            outResult = true;
                            return(true);
                        }
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(v_UserField);
                        v_UserField = null;
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Failed to Add Columns : " + ex.Message);
            }
            finally
            {
            }
            return(outResult);
        }
        //Adiciona valor valido a campo de usuário
        public void fAdicionaValorValido(string cTabela, string cCampo, string Valor, string Descricao, TipoTabela cTipoTabela)
        {
            //TipoTabela: 0=user, 1=SAPB1
            string cTabelaAux = null;

            if (cTipoTabela == TipoTabela.tUSER)
            {
                cTabelaAux = "@" + cTabela;
            }
            else
            {
                cTabelaAux = cTabela;
            }
            bool valorExiste = false;
            int  campoID     = fFieldId(cTabelaAux, cCampo);

            if (fExisteValorValido(cTabelaAux, campoID, Valor))
            {
                valorExiste = true;
            }
            else
            {
                GC.Collect();
                SAPbobsCOM.UserFieldsMD objUserFieldsMD;
                objUserFieldsMD = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                objUserFieldsMD.GetByKey(cTabelaAux, campoID);
                SAPbobsCOM.ValidValuesMD oValidValues;
                oValidValues = objUserFieldsMD.ValidValues;
                if (!valorExiste)
                {
                    if (oValidValues.Value != "")
                    {
                        oValidValues.Add();
                        oValidValues.SetCurrentLine(oValidValues.Count - 1);
                        oValidValues.Value       = Valor;
                        oValidValues.Description = Descricao;
                        CodErroDB = objUserFieldsMD.Update();
                    }
                    else
                    {
                        oValidValues.SetCurrentLine(oValidValues.Count - 1);
                        oValidValues.Value       = Valor;
                        oValidValues.Description = Descricao;
                        CodErroDB = objUserFieldsMD.Update();
                    }

                    if (CodErroDB != 0)
                    {
                        oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com erro! " + CodErroDB + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    }
                    else
                    {
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] criado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    }
                }
                else
                {
                    CodErroDB = objUserFieldsMD.Update();
                    if (CodErroDB != 0)
                    {
                        oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] reportado com erro! " + CodErroDB.ToString() + " - " + MsgErroDB, SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error);
                    }
                    else
                    {
                        // SBO_Application.StatusBar.SetText("Valor válido para o campo: [" + cCampo + "] da tabela [" + cTabela + "] atualziado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    }
                }
            }
        }
        //Criação de campos de usuários em tabela de usuário ou em tabela do Sistema SAP
        public void fCriaCampo(string cTabela, string cCampo, string cDescricao, TipoCampo cTipo, short nsize, TipoTabela cTipoTabela)
        {
            string cTabelaAux;

            cTabelaAux = "";
            //TipoTabela: 0=user, 1=SAPB1
            if (cTipoTabela == 0)
            {
                cTabelaAux = "@" + cTabela;
            }
            else if (cTipoTabela == TipoTabela.tSBO)
            {
                cTabelaAux = cTabela;
            }

            if (!fExiteCampo(cTabelaAux, cCampo))
            {
                GC.Collect();
                objUserFieldsMD             = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields);
                objUserFieldsMD.TableName   = cTabela;
                objUserFieldsMD.Name        = cCampo;
                objUserFieldsMD.Description = cDescricao;

                if (cTipo == TipoCampo.tPrice)
                {
                    objUserFieldsMD.Type    = SAPbobsCOM.BoFieldTypes.db_Float;
                    objUserFieldsMD.SubType = SAPbobsCOM.BoFldSubTypes.st_Price;
                }
                else if (cTipo == TipoCampo.tPercent)
                {
                    objUserFieldsMD.Type    = SAPbobsCOM.BoFieldTypes.db_Float;
                    objUserFieldsMD.SubType = SAPbobsCOM.BoFldSubTypes.st_Percentage;
                }
                else if (cTipo == TipoCampo.tSum)
                {
                    objUserFieldsMD.Type    = SAPbobsCOM.BoFieldTypes.db_Float;
                    objUserFieldsMD.SubType = SAPbobsCOM.BoFldSubTypes.st_Sum;
                }
                else if (cTipo == TipoCampo.tALPHA)
                {
                    objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Alpha;
                }
                else if (cTipo == TipoCampo.tDATE)
                {
                    objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Date;
                }
                else if (cTipo == TipoCampo.tTime)
                {
                    objUserFieldsMD.Type    = SAPbobsCOM.BoFieldTypes.db_Date;
                    objUserFieldsMD.SubType = SAPbobsCOM.BoFldSubTypes.st_Time;
                }
                else if (cTipo == TipoCampo.tNUMBER)
                {
                    objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Numeric;
                }
                else if (cTipo == TipoCampo.tMEMO)
                {
                    objUserFieldsMD.Type = SAPbobsCOM.BoFieldTypes.db_Memo;
                }
                objUserFieldsMD.EditSize = nsize;
                // Adding the Field to the Table
                CodErroDB = objUserFieldsMD.Add();

                // Check for errors
                if (CodErroDB != 0)
                {
                    oCompany.GetLastError(out int CodErroDB, out string MsgErroDB);
                    // SBO_Application.MessageBox("Erro na Criação do Campo: " + cCampo + " " + CodErroDB.ToString() + " - " + MsgErroDB);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(objUserFieldsMD);
                    objUserFieldsMD = null;
                }
                else
                {
                    // SBO_Application.StatusBar.SetText("Campo: [" + cCampo + "] da tabela [" + cTabela + "] criado com sucesso!", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Success);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(objUserFieldsMD);
                    objUserFieldsMD = null;
                }
            }
            else
            {
            }
        }
        public void AddValidValueToUserField(string TableName, string FieldName, string Value, string Description, bool IsDefault)
        {
            SAPbobsCOM.UserFieldsMD oUserFieldsMD = ((SAPbobsCOM.UserFieldsMD)(SBOApp.Company.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oUserFields)));
            bool bUpdate;

            Log.AppendFormat("Criação de Valor válido {0}.{1}: ", TableName, FieldName);

            string Sql = @" SELECT FieldId FROM CUFD WHERE TableID = '{0}' AND AliasID = '{1}' ";

            Sql = String.Format(Sql, TableName, FieldName.Replace("U_", ""));
            string FieldId = QueryForValue(Sql);

            bUpdate = oUserFieldsMD.GetByKey(TableName, Convert.ToInt32(FieldId));

            Sql = @" SELECT COUNT(1) FROM CUFD
                            INNER JOIN UFD1 
                                ON CUFD.TableID = UFD1.TableID 
                                AND CUFD.FieldID = UFD1.FieldID
                        WHERE CUFD.TableID = '{0}' 
                        AND CUFD.AliasID = '{1}' 
                        AND LEN(UFD1.FldValue) > 0 "; //AND UFD1.FldValue = '" + Value + "'";
            Sql = String.Format(Sql, TableName, FieldName.Replace("U_", ""));

            string ContaValoresValidos = QueryForValue(Sql);

            if (Convert.ToInt32(ContaValoresValidos) > 0)
            {
                Sql = @" SELECT UFD1.IndexID FROM CUFD
                            INNER JOIN UFD1 
                                ON CUFD.TableID = UFD1.TableID 
                                AND CUFD.FieldID = UFD1.FieldID
                         WHERE CUFD.TableID = '{0}' 
                         AND CUFD.AliasID = '{1}' 
                         AND UFD1.FldValue = '{2}'";
                Sql = String.Format(Sql, TableName, FieldName.Replace("U_", ""), Value);

                string IndexId = QueryForValue(Sql);

                if (IndexId == null)
                {
                    oUserFieldsMD.ValidValues.Add();
                }

                if (IndexId != null)
                {
                    oUserFieldsMD.ValidValues.SetCurrentLine(Convert.ToInt32(IndexId));
                }
            }

            oUserFieldsMD.ValidValues.Value       = Value;
            oUserFieldsMD.ValidValues.Description = Description;

            if (IsDefault)
            {
                oUserFieldsMD.DefaultValue = Value;
            }

            CodErro = oUserFieldsMD.Update();

            this.ValidateAction();

            Marshal.ReleaseComObject(oUserFieldsMD);
            oUserFieldsMD = null;
        }