Bonjour
J'ai actuellement un code fonctionnel qui appelle une procédure stockée écrite dans une class.
Mais quand je lis le code, j'ai une impression d'usine à gaz, de bouilli, bref quelque chose de mal optimisé.
J'aurai besoin d'une aide pour mieux réécrire mon code d'appel à la procédure stockée.
Pour commencer voici la méthode appelante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 //FLAgents = class form principale // DBG_LAgents = datagridview //DBS_LAgents = BindingSource //variables public dans ma class form public string APresents, APartis, AMatricule, ANom, ACarriere, ATypeCar = "", A_NomJeuneFille, AOrderBy = "", ACarSimple = ""; private void FLAgents_Load(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; DBG_LAgents.DataSource = DBS_LAgents; Fill_DBG_LAgents(SQL_Liste()); Cursor.Current = Cursors.Default; }macommande est chargée par cette méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 private void Fill_DBG_LAgents(string macommande) { GO_Init.Init_connexion(); //connexion à la base de doonées try { OdbcCommand dataSQL = new OdbcCommand(macommande, GO_Init.conn); OdbcDataReader read = dataSQL.ExecuteReader(); DataSet ds = new DataSet(); DataTable dt = new DataTable("Table1"); ds.Tables.Add(dt); //ajout du datatable dans le dataset // je vide tout avant de remplir au cas où dt.Clear(); ds.Tables[0].Clear(); DBG_LAgents.DataSource = null; DBG_LAgents.AutoGenerateColumns = false; DBG_LAgents.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.None; ds.Load(read, LoadOption.PreserveChanges, ds.Tables[0]); //chargement du dataset - ligne de code récupéré sur le net Cursor.Current = Cursors.WaitCursor; DBG_LAgents.SuspendLayout(); //Charge_BarreChargement(ds); DBG_LAgents.DataSource = ds.Tables[0]; //remplissage de mon datagridview DBG_LAgents.ResumeLayout(); DBG_LAgents.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); this.localite.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; Cursor.Current = Cursors.Default; BE_Text1.Text = DBG_LAgents.RowCount.ToString() + " agent(s) affiché(s)."; } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { GO_Init.conn.Close(); //fermeture de la connexion } }
et enfin ma class externe à ma forme appelant la procédure stockée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139 public string SQL_Liste() { //Paramètres Présents ou non et Partis ou non ('1' ou '0') et ('1' ou '0') APresents = IN_Presents.Checked == true ? "1" : "0"; APartis = IN_Partis.Checked == true ? "1" : "0"; //Paramétres de Matricule ('0' ou 'Matricule') et Début de Nom ('0' ou "'Début de Nom'") if (MatNom == "") { //Pas de restriction sur matricule ou début de nom AMatricule = "0"; ANom = "0"; } else { int resultParse = 0; if (int.TryParse(MatNom.Trim(), out resultParse)) { if ((MatNom.Trim().Substring(MatNom.Length - 1) != "0") && (MatNom.Trim().Length < 8)) MatNom = MatNom.Trim() + "0"; //'Restriction sur matricule AMatricule = MatNom.Trim().PadLeft(8, '0'); ANom = "0"; } else { AMatricule = "0"; ANom = MatNom.Trim(); } } //Paramètre : seulement les agents sans carrière ou non ('1' ou '0') ACarriere = IN_Carriere.Checked == true ? "1" : "0"; //Paramètre type de carrière ('0', '1', '2', '3', '12', '13', '23', ou '9') if (IN_DoubleCarriere.Checked == true) ATypeCar = "D"; else { if (B_SPPcheck && B_SPVcheck && B_ATScheck) //tous ATypeCar = "9"; else { if (!B_SPPcheck && !B_SPVcheck && !B_ATScheck) //aucun ATypeCar = "0"; else { if (B_SPPcheck && !B_SPVcheck && !B_ATScheck) //SPP ATypeCar = "1"; else { if (!B_SPPcheck && B_SPVcheck && !B_ATScheck) //SPV ATypeCar = "2"; else { if (!B_SPPcheck && !B_SPVcheck && B_ATScheck) //ATS ATypeCar = "3"; else { if (B_SPPcheck && B_SPVcheck && !B_ATScheck) //SPP & SPV ATypeCar = "12"; else { if (B_SPPcheck && !B_SPVcheck && B_ATScheck) //SPP & ATS ATypeCar = "13"; else { if (!B_SPPcheck && B_SPVcheck && B_ATScheck) //SPV & ATS ATypeCar = "23"; } } } } } } } } //Paramètres de l'order by ( Exemple : "'order by ag.nom ASC ou DESC '" ) int E_No_Col = 0; switch (E_No_Col) { case 0: AOrderBy = "'' Order by ag.matricule ASC ''"; break; case 1: AOrderBy = ""; break; case 2: AOrderBy = ""; break; case 3: AOrderBy = ""; break; case 4: AOrderBy = ""; break; } //Paramètre @CarSimple (carrière simple, O/N) if (IN_Carriere.Checked == true) ACarSimple = "N"; else { if (IN_CarriereSimple.Checked == true) ACarSimple = "O"; else ACarSimple = "N"; } //recherche sur le nom de jeune fille if (IN_NomJeuneFille.Checked == true) A_NomJeuneFille = "O"; else { A_NomJeuneFille = "N"; } // C'est cette partie qui m'intéresse SQL_PR_AGENTS_PREP_SELECTION pr_ag_prep_sel = new SQL_PR_AGENTS_PREP_SELECTION( 0, "MABASEDEDONNEES", "APPLI", "MOI", "0", APresents, APartis, AMatricule, ANom, ACarriere, ATypeCar, AOrderBy, GO_Init.GA_Structure, "", "", ACarSimple, A_NomJeuneFille); return pr_ag_prep_sel.req_sql; // car la méthode doit retourner un string pour la variable macommande } // fin SQL_Liste
Le code étant fonctionnel, est ce pour vous une usine à gaz également ? si oui, comment le changer ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 using System; namespace MONAPPLI.Classes { public class SQL_PR_AGENTS_PREP_SELECTION { public string req_sql; public SQL_PR_AGENTS_PREP_SELECTION(int B_Edit, string A_BaseSOC, string A_Module , string A_User, string Actif, string Presents , string Partisg, string Matricule, string Nom , string Car, string TypeCar, string OrderBy, string restrict_centre , string GMFI_HABI, string Date_Ref, string CarSimple , string NomJeuneFille) { req_sql = "EXEC PR_AGENTS_PREP_SELECTION "; req_sql = req_sql + (B_Edit == 0 ? "0" : "1") ; req_sql = req_sql + ",'" + A_BaseSOC.Trim() + "' "; req_sql = req_sql + ",'" + A_Module.Trim() + "' "; req_sql = req_sql + ",'" + A_User.Trim() + "' "; req_sql = req_sql + ",'" + Actif.Trim() + "' "; req_sql = req_sql + ",'" + Presents.Trim() + "' "; req_sql = req_sql + ",'" + Partisg.Trim() + "' "; req_sql = req_sql + ",'" + Matricule.Trim() + "' "; req_sql = req_sql + ",'" + Nom.Trim() + "' "; req_sql = req_sql + ",'" + Car.Trim() + "' "; req_sql = req_sql + ",'" + TypeCar.Trim() + "' "; req_sql = req_sql + ",'" + OrderBy.Trim() + "' "; req_sql = req_sql + ",'" + restrict_centre.Trim() + "' "; req_sql = req_sql + ",'" + GMFI_HABI.Trim() + "' "; req_sql = req_sql + ",'" + Date_Ref.Trim() + "' "; req_sql = req_sql + ",'" + CarSimple.Trim() + "' "; req_sql = req_sql + ",'" + NomJeuneFille.Trim() + "' "; } } }
Partager