Vider/supprimer une table de SqlParameter

Résolu
lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011 - 15 avril 2011 à 15:48
lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011 - 19 avril 2011 à 08:54
Bonjour !

JE suis confronté a un petit problème : Je doit remettre a zéro les paramètres de ma classe comme ceci :
public void RAZ()
        {
            this.Cible = "";
            this.CSecteur = "";
            this.EtatVal = 0;
            this.From = "";
            this.GroupBy = "";
            this.Into = "";
            this.IntoDbf = "";
            this.NbLigne = 0;
            this.NomConnection = 0; // a transformer en pointeur        
            this.OrderBy = "";
            this.ResConnect = 0;
            this.Select = "";
            this.SourceDbf = "";
            this.Type = "";
            this.Values = "";
            this.Where = "";            
            this.Tabstring.RemoveRange(0, nb_string);
            this.nb_string = 0;
            // ICI remettre a 0 TabParam
            this.nb_param = 0;
           
        }


TabParam est défini comme ceci en tant que variable globale.

SqlParameter[] TabParam= new SqlParameter[50];



je voudrait pouvoir "vider" ma table pour quelle soit comme a l'origine mais je n'ai pas trouvé un moyen de la détruire puis de la re-déclarer globale
(déja la détruire je ne sais pas )

Si quelqu'un peut m'aider

merci d'avance !

25 réponses

lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011
18 avril 2011 à 14:00
Non c'est pas ça malheureusement :(

j'ai du modifier 2/3 trucs, ça peut venir de la ...

public SqlConnection connection;
        public SqlCommand command;        
        public DataSet Dataset = new DataSet(); 


Ces variables sont devenues public.

 private SqlParameter GetParameter(string varName)
        {

            FieldInfo field = typeof(Fenetre).GetField(varName, BindingFlags.NonPublic | BindingFlags.Static); // ici typeof(Program) est devenu typeof(Fenetre) où Fenetre est ma classe ou il y a les btn_click toussa

            if (field == null)
                throw new ArgumentException("La variable '" + varName + "' n'est pas définie dans la classe Program");

            SqlDbType dbType;
            switch (field.FieldType.FullName)
            {
                case ("System.String"):
                    dbType = SqlDbType.VarChar;
                    break;

                case ("System.Int32"):
                    dbType = SqlDbType.Int;
                    break;

                case ("System.Double"):
                    dbType = SqlDbType.Float;
                    break;

                case ("System.DateTime"):
                    dbType = SqlDbType.DateTime;
                    break;

                default:
                    throw new ArgumentException("Une variable de Type '" + field.FieldType.FullName + "' ne peut pas être converti en SqlDbType");
            }

            
            SqlParameter parameter = new SqlParameter("@" + varName, dbType);
            parameter.Value = field.GetValue(null);
            nb_param++;

            return parameter;
        }


field sur Fenetre maintenant... idem pour Chercheparam et saisievalue

public void Execution(string XExec)
        {

            try
            {

                XExec=XExec.Replace('?', '@');

                //-------------------------------TEST - solution 1 - TEST ----------------------------------

                parser(XExec); // choppe toutes mes variables ? quelquechose dans un Tabstring sans le ?
                for (int i = 0; i < nb_string; i++) // créé les parametres
                {                    
                    trouve = existe(Tabstring[i].ToString());

                    if (!trouve)
                    {
                        
                        TabParam[i] = GetParameter(Tabstring[i].ToString()); // créé le param
                        command.Parameters.Add(ChercheParam(Tabstring[i].ToString())); // ajoute le parametre a la commande 
                        TableDefini.Add(Tabstring[i].ToString());
                        
                    }
                    else
                    {
                        command.Parameters.Add(ChercheParam(Tabstring[i].ToString())); // ajoute le parametre a la commande 
                       
                    }

                }

                //------------------------------ FIN TEST - solution 1 - FIN TEST --------------------------
                command.CommandType = CommandType.Text; 
                command.CommandText = XExec;

                SqlDataReader reader = command.ExecuteReader();
                command.Parameters.Clear();
                this.Found = reader.HasRows;
                reader.Close();

               
                //Dataset = RecupDataSet(command);
                
                   
            }
            catch (Exception e)
            {
                this.NbErrTransac++;
                MessageBox.Show(e.ToString());
            }
        }


et voila pour Execution..

j'ai refait pas mal de trucs mais rien n'y fait j'ai toujours ce problème :(

pour le bouton qui applique le select en fonction de deux liste/textbox pour les valeurs pour tester:

private void btn_select_Click(object sender, EventArgs e)
        {

            LANGAGE2SQL L_LANGAGE2SQL = new LANGAGE2SQL();
            string wheretmp="";
            if (textBox2.Text != "" && comboBox1.SelectedItem.ToString() != "")
            {
                wheretmp = comboBox1.SelectedItem.ToString() + "=?G_Etendue";
               
                if (textBox1.Text != "" && comboBox2.SelectedItem.ToString() != "")
                    wheretmp = wheretmp + comboBox2.SelectedItem.ToString() + "=?G_CAction";


                G_Etendue = Convert.ToInt32(textBox2.Text);
                G_CAction = (textBox2.Text);

                L_LANGAGE2SQL.RAZ();
                L_LANGAGE2SQL.Connect();
                L_LANGAGE2SQL.CSecteur = "";
                L_LANGAGE2SQL.EtatVal = 3;
                L_LANGAGE2SQL.Type = "SELECT";
                L_LANGAGE2SQL.Select = "*";
                L_LANGAGE2SQL.From = "[DBSoft].[dbo].[DateAff]";
                L_LANGAGE2SQL.Where = wheretmp;
                L_LANGAGE2SQL.OrderBy = "";
                L_LANGAGE2SQL.GroupBy = "";
                L_LANGAGE2SQL.IntoDbf = "T_POIN";
                L_LANGAGE2SQL.Execute();

                DataSet dataset1 = new DataSet();
                dataset1 = (L_LANGAGE2SQL.RecupDataSet(L_LANGAGE2SQL.command));

                

                dataGridView1.DataSource = dataset1;
                dataGridView1.DataMember = "Table";
                dataGridView1.Columns["PKDateAff"].ReadOnly = true;


                L_LANGAGE2SQL.DisConnect();
                Label_test.Text = "SELECTFAIT";
            }
            else
            {
                
                L_LANGAGE2SQL.RAZ();
                L_LANGAGE2SQL.Connect();
                L_LANGAGE2SQL.CSecteur = "";
                L_LANGAGE2SQL.EtatVal = 3;
                L_LANGAGE2SQL.Type = "SELECT";
                L_LANGAGE2SQL.Select = "*";
                L_LANGAGE2SQL.From = "[DBSoft].[dbo].[DateAff]";
                L_LANGAGE2SQL.Where = "";
                L_LANGAGE2SQL.OrderBy = "";
                L_LANGAGE2SQL.GroupBy = "";
                L_LANGAGE2SQL.IntoDbf = "T_POIN";
                L_LANGAGE2SQL.Execute();

                DataSet dataset1 = new DataSet();
                dataset1 = (L_LANGAGE2SQL.RecupDataSet(L_LANGAGE2SQL.command));



                dataGridView1.DataSource = dataset1;
                dataGridView1.DataMember = "Table";
                dataGridView1.Columns["PKDateAff"].ReadOnly = true;
                
                L_LANGAGE2SQL.DisConnect();
            }
            
        }
0
lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011
18 avril 2011 à 14:19
petite info supplémentaire :
public DataSet RecupDataSet(SqlCommand command)
        {
            SqlDataAdapter adapter = new SqlDataAdapter();
            command.CommandType = CommandType.Text;
            // Set the SqlDataAdapter's SelectCommand.
            adapter.SelectCommand = command;
            // Fill the DataSet.
            DataSet DataSetmp = new DataSet();
            adapter.Fill(DataSetmp,"Table"); <=== l'erreur indique qu'une exeption n'est pas gérée ici
            return DataSetmp;
        }
0
lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011
18 avril 2011 à 15:09
J'ai déja exploré pas mal de pistes,

- probleme de variables public/etc ? - non il récupère bien la valeur, créé bien le paramètre et l'ajoute bien a comment.parameter ...

-j'ai modifié Recupdataset pour qu'il ne prenne plus de paramètre avec la commande en variable globale ca sert a rien pour contrer un éventuel conflit de commande ? non toujours pareil. de plus une requete sans paramètre s'affiche parfaitement bien sur le datagrid.

- A savoir aussi je remplit mon dataset dans Fenetre.cs comme cela :

DataSet dataset1 = new DataSet();
dataset1 = (L_LANGAGE2SQL.Dataset);

dataGridView1.DataSource = dataset1;

sans paramètre pareil ca marche ...

Mais des que je met un paramètre pof : varaible scalaire @*** non déclarée..
J'avais déja eu cette erreur avant mais la je ne voie pas comment je peux résoudre ce bug :(
J'ai essayé de mettre les variables dans fenetre.Designer.cs mais même souci.. Essayé aussi de revenir en mettant les variables dans program.cs attaptant les fields mais pareil :(

program.cs est comme cela :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
   
    static class Program
    {

        

        /// <summary>
       
        /// Point d'entrée principal de l'application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Fenetre());
        }
    }
}


c'est uniquement le code généré en début de projet

si tu as une idée .. merci d'avance !
0
lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011
19 avril 2011 à 08:24
En fait j'ai testé sans le mode graphique de faire un select avec des paramètres, c'est le dataset qui n'aime pas le passage de paramètres apparemment ... je continue a faire des recherches sur les SqlParameters et les dataset / datatable !

Je viens de t'envoyer tout ça, merci a toi !!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lucss4 Messages postés 23 Date d'inscription lundi 29 octobre 2007 Statut Membre Dernière intervention 21 avril 2011
19 avril 2011 à 08:54
huhu et je me tripatouille toute une journée pour une petite ligne grrrr ^^

En grand merci a toi pour toute l'aide ! :)

bonne continuation :D
0
Rejoignez-nous