Exemplo n.º 1
0
        /// /////////////////////////////////////////////
        ///<summary>
        ///retourne la requête formattée pour SQL.
        ///</summary>
        private string GetTexteRequeteFinaleSql(C2iRequete requete, IElementAVariablesDynamiquesAvecContexteDonnee elementAVariables, ref object[] valeursParametres, IDatabaseConnexion database)
        {
            ArrayList lstValeursParametres = new ArrayList();
            string    strTexte             = requete.TexteRequete;
            int       nPos     = strTexte.IndexOf("[@");
            int       nLastPos = nPos;

            while (nPos > 0)
            {
                //Cherche le nom de la variable
                string strNomVar = "";
                nPos += 2;
                while (nPos < strTexte.Length && strTexte[nPos] != ']')
                {
                    strNomVar += strTexte[nPos];
                    nPos++;
                }
                string strIdVar = "";
                foreach (CVariableDynamique variable in elementAVariables.ListeVariables)
                {
                    if (strNomVar.ToUpper() == variable.Nom.ToUpper())
                    {
                        strIdVar = variable.IdVariable;
                        break;
                    }
                }
                if (strIdVar != "")
                {
                    object val = elementAVariables.GetValeurChamp(strIdVar);
                    lstValeursParametres.Add(val);
                    strTexte = strTexte.Replace("[@" + strNomVar + "]", database.GetNomParametre(lstValeursParametres.Count.ToString()));
                }
                if (nLastPos + 1 < strTexte.Length)
                {
                    nPos     = strTexte.IndexOf("[@", nLastPos + 1);
                    nLastPos = nPos;
                }
                else
                {
                    nPos = -1;
                }
            }
            valeursParametres = (object[])lstValeursParametres.ToArray(typeof(object));
            return(strTexte);
        }
Exemplo n.º 2
0
        public static DateTime?GetSysdateFromBdd()
        {
            C2iRequete requete = new C2iRequete();

            requete.TypeReferencePourConnexion = typeof(CSpvSite);
            requete.TexteRequete = "SELECT sysdate from dual";
            CResultAErreur result = requete.ExecuteRequete(0);

            if (result)
            {
                DateTime dateServeur = (DateTime)(((System.Data.DataTable)result.Data).Rows[0][0]);
                return(dateServeur);
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        /// ////////////////////////////////
        public CResultAErreur ExecuteRequete(C2iRequete requete, IElementAVariablesDynamiquesAvecContexteDonnee elementAVariables, bool bStructureOnly)
        {
            CResultAErreur result        = CResultAErreur.True;
            Type           typeReference = requete.TypeReferencePourConnexion;

            if (typeReference != null)
            {
                ///TODO
                ///Problème VersionObjet
                object objServeur = CContexteDonnee.GetTableLoader(CContexteDonnee.GetNomTableForType(typeReference), null, IdSession);
                if (objServeur != null)
                {
                    typeReference = objServeur.GetType();
                }
                else
                {
                    typeReference = null;
                }
            }

            IDatabaseConnexion con;

            if (typeReference == null)
            {
                con = CSc2iDataServer.GetInstance().GetDatabaseConnexion(IdSession, "");
            }
            else
            {
                con = CSc2iDataServer.GetInstance().GetDatabaseConnexion(IdSession, typeReference);
            }


            object[] lstParams   = null;
            string   strRequete  = GetTexteRequeteFinaleSql(requete, elementAVariables, ref lstParams, con);
            int      nOldTimeOut = con.CommandTimeOut;

            con.CommandTimeOut = 60 * 10;

            IDataAdapter adapter = con.GetAdapterForRequete(strRequete, lstParams);
            DataSet      ds      = new DataSet();

            try
            {
                lock (con)
                {
                    if (bStructureOnly)
                    {
                        adapter.FillSchema(ds, SchemaType.Source);
                    }
                    else
                    {
                        adapter.Fill(ds);
                    }
                }
                if (ds.Tables.Count > 0)
                {
                    DataTable table = ds.Tables[0];
                    if (requete.TableauCroise != null)
                    {
                        result = requete.TableauCroise.CreateTableCroisee(table);
                        if (result)
                        {
                            table = (DataTable)result.Data;
                        }
                    }

                    table.TableName = "DONNEES_REQUETE";
                    result.Data     = table;
                }
            }
            catch (Exception e)
            {
                result.EmpileErreur(new CErreurException(e));
                result.EmpileErreur(I.T("Error in the request '@1'|102", strRequete));
            }
            finally
            {
                con.CommandTimeOut = nOldTimeOut;
                CUtilDataAdapter.DisposeAdapter(adapter);
            }
            return(result);
        }
        //-------------------------------------------------------------------------
        protected CResultAErreur InitChamps()
        {
            CResultAErreur result = CResultAErreur.True;

            result = InitComboBoxType();
            if (!result)
            {
                return(result);
            }

            if (m_element.DefinitionJeu is C2iRequete)
            {
                m_panelEditRequete.MasquerFormulaire(true);
                m_panelRequete.Visible = true;
                C2iRequete requete = (C2iRequete)m_element.DefinitionJeu;
                if (requete == null)
                {
                    requete = new C2iRequete(m_multiStructure.ContexteDonnee);
                }
                requete.ElementAVariablesExterne = m_multiStructure;
                m_panelEditRequete.RequeteEditee = requete;
            }
            else
            {
                m_panelRequete.Visible = false;
            }

            if (m_element.DefinitionJeu is CStructureExportAvecFiltre)
            {
                m_panelFiltre.MasquerFormulaire(true);
                m_panelStructure.Visible = true;
                CStructureExportAvecFiltre structureAvecFiltre = (CStructureExportAvecFiltre)m_element.DefinitionJeu;
                C2iStructureExport         structure           = structureAvecFiltre.Structure;
                if (structure == null)
                {
                    structure = new C2iStructureExport();
                }
                if (structure != null && structure.TypeSource != null)
                {
                    m_cmbType.SelectedValue = structure.TypeSource;
                    //m_cmbType_SelectedValueChanged ( m_cmbType, new EventArgs() );
                }
                structure.TypeSource = (Type)m_cmbType.SelectedValue;
                if (m_cmbType.SelectedValue != null && m_cmbType.SelectedValue == typeof(DBNull))
                {
                    structure.TypeSource = null;
                }
                m_panelEditStructure.StructureExport             = structure;
                m_panelEditStructure.ElementAVariablesPourFiltre = m_multiStructure;

                m_panelEditStructure.ComboTypeLockEdition = true;

                m_panelFiltre.ModeSansType = true;
                CFiltreDynamique filtre = structureAvecFiltre.Filtre;
                if (filtre == null)
                {
                    filtre = new CFiltreDynamique(m_multiStructure.ContexteDonnee);
                    filtre.TypeElements = structure.TypeSource;
                }
                filtre.ElementAVariablesExterne = m_multiStructure;
                m_panelFiltre.Init(filtre);
            }
            else
            {
                m_panelStructure.Visible = false;
            }

            m_txtLibelleElement.Text = m_element.Libelle;
            m_txtPrefix.Text         = m_element.Prefixe;

            return(result);
        }