Je suis en BTS IG, en premiere année. Je fais une PTI (Pratique des techniques informatiques) en c# graphique avec le thème : gestion des voitures.
Pour cela, j'ai créé une base de donnée qui comprend :
une table : Voiture (Immatriculation, IdMarque, Modele, DateMiseEnService, prix)
clé primaire : Immatriculation ;
clé étrangère : IdMarque en référence à IdMarque de la table Marque
une table : Marque (IdMarque, LibelleMarque)
clé primaire : IdMaque.
Avec le code suivant, j'affiche el contenue de ma table marque dans ma combobox : CBMarque.
Ma liste déroulante se remplie sans problème.
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 private void ModifierVoiture_Load(object sender, EventArgs e) { CBMarque.Items.Clear(); string source = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=\"C:\\Users\\Julie\\Cours_BTS1\\TP_Csharp\\PTI_voitures\\pti_voiture.mdb\""; OleDbConnection maConnexion = new OleDbConnection(source); // ouvrir la connexion maConnexion.Open(); String requete = "SELECT LibelleMarque FROM Marque;"; // execution de la requete // 1ere lecture OleDbCommand mCommand = new OleDbCommand(requete, maConnexion); OleDbDataReader mReader; mReader = mCommand.ExecuteReader(); // tant que le curseur est plein while (mReader.Read()) { CBMarque.Items.Add(mReader[0]); } // fermeture du curseur mReader.Close(); //fermeture de la base maConnexion.Close(); }
Dans ce windowsFrom je souhaiterai effectuer une recherche dans la table voiture, en fonction de l'immatriculation saisie et afficher les informations qui y sont présentes, j'arrive sans problème a afficher dans TBModele, TBDateMES et TBPrix a afficher mon résultat de ma requête, ais e n'arrive pas a indique que la liste déroulante affiche l'item 5 par exemple et si l'on clique sur la liste déroulante, toujours voir afficher le reste des proposition. puisque ce formulaire permet de modifier les informations sur un véhicule.
contenue table Marque :
id libelle
1 Citroen
2 Peugeot
etc.
la combobox commençant par zéro, je souhaiterais récupérer l'identifiant de la marque d'y soustraire 1 et afficher item de ce résultat.
pouvez vous m'aider a faire cela ? Merci d'avance.
voici le code actuel qui me permet afficher les résultats de ma requête :
Si vous souhaitez mon projet complet pour essayer faites moi signe
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 private void BTLancerRecherche_Click(object sender, EventArgs e) { if (TBImmatriculation.Text == "") { MessageBox.Show("Veuillez saisir une immatriculation"); } else { CBMarque.Items.Clear(); string source = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data source=\"C:\\Users\\Julie\\Cours_BTS1\\DAIGL (François)\\TP_Csharp\\PTI_voitures\\pti_voiture.mdb\""; OleDbConnection maConnexion = new OleDbConnection(source); // ouvrir la connexion maConnexion.Open(); String requete = "SELECT IdMarque, Modele, DateMiseEnService, prix FROM Voiture WHERE Immatriculation = \"" + TBImmatriculation.Text + "\";"; // execution de la requete // 1ere lecture OleDbCommand mCommand = new OleDbCommand(requete, maConnexion); OleDbDataReader mReader; mReader = mCommand.ExecuteReader(); int pos = -1; // tant que le curseur est plein while (mReader.Read()) { TBModele.Text = Convert.ToString(mReader["Modele"]); TBDateMES.Text = Convert.ToString(mReader["DateMiseEnService"]); TBPrix.Text = Convert.ToString(mReader["prix"]); pos = Convert.ToInt32(mReader["IdMarque"]); } CBMarque.SelectedIndex = pos -1; //Mon erreur, problème // fermeture du curseur mReader.Close(); //fermeture de la base maConnexion.Close(); if (pos == -1) { MessageBox.Show("cette immatriculation (" + TBImmatriculation.Text + ") n'est pas résente dans la base"); } } }
Partager