kdiDev
Messages postés3Date d'inscriptionjeudi 19 juillet 2012StatutMembreDernière intervention24 juillet 2012
-
19 juil. 2012 à 16:55
kdiDev
Messages postés3Date d'inscriptionjeudi 19 juillet 2012StatutMembreDernière intervention24 juillet 2012
-
24 juil. 2012 à 16:10
Bonjour,
J'ai une combobox qui reprend des données d'une DB Access. J'arrive à récupérer la valeur le mon identificateur (premier champs de ma base) mais je ne sais pas comment naviguer dans la dataTable pour faire en sorte que dès que je sélectionne quelque chose dans la combobox, les valeurs liées à cette selection s'affiche dans des champs text (ex: adresse, téléphone, etc...).
Je précise que ça ne fait que 3 jours que je travail avec ce langage donc je suis plus que débutante!
Voici mon code:
// connexion à la base de donnée MS Access
public DataTable connectDB(string requete,ref DataTable dt) {
OleDbConnection conn;
OleDbCommand cmd;
OleDbDataAdapter da;
DataSet ds = new DataSet();
//DataTable dt = new DataTable();
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\DB_Offertentool.accdb;Persist Security Info=True";
conn = new OleDbConnection(strConn);
conn.ConnectionString = strConn;
conn.Open();
cmd = conn.CreateCommand();
da = new OleDbDataAdapter(requete, conn);
ds.Reset();
da.Fill(ds);
dt = ds.Tables[0];
conn.Close();
return dt;
}
// initialisation d'une combobox
private void chargementCbo(string request, ComboBox cboName, string display, ref DataTable dtSelected, string identificateur)
{
DataTable dTable = new DataTable();
dTable = connectDB(request, ref dtSelected);
cboName.DataSource = dTable;
cboName.ValueMember = identificateur;
cboName.DisplayMember = display;
cboName.SelectedItem = null;
}
private void frmTeleHousing_Load(object sender, EventArgs e)
{
// initialisation de la combobox AM
chargementCbo("SELECT AM_ID,AM_LastName,AM_FirstName FROM tblAM ORDER BY AM_LastName DESC, AM_FirstName ASC", cboAM, "AM_LastName",ref dtAM,"AM_ID");
// initialisation de la combobox Telehousing
chargementCbo("SELECT TH_ID,TH_Name FROM tblTH", cboTH, "TH_Name", ref dtTH,"TH_ID");
// initialisation de la combobox connectivité
chargementCbo("SELECT THConnectivity_ID,THConnectivity_Name FROM tblTHConnectivity", cboConnectivity, "THConnectivity_Name", ref dtConnectivity, "THConnectivity_ID");
}
// modification dans la combobox AM
private void cboAM_SelectedIndexChanged(object sender, EventArgs e)
{
txtPosition.Text = cboAM.SelectedValue.ToString();
foreach (DataRow row in dtAM.Rows) {
if (row["AM_ID"] == cboAM.SelectedValue)
{
//txtPosition.DataBindings.Add("Text",dv,"NAME");
}
}
}
Si quelqu'un arrive à m'aider, j'en serais plus que ravie car là, je tourne en rond.
soussous78
Messages postés47Date d'inscriptionmardi 21 novembre 2006StatutMembreDernière intervention 5 novembre 2016 19 juil. 2012 à 18:12
Salut,
Je ne sais pas comment est fait ton programme mais si tu utilises toujours la même base de données et que tu t'en sert tout le temps de ton logiciel, tu devrais t'y connecter dès le début de ton programme (constructeur) et la fermer à la fermeture de celui-ci (form_closing par exemple).
Sinon, es-ce cela répond a ton problème?
class blabla
{
OleDbConnection conn;
public blabla()
{
InitializeComponent();
#region Ouverture de la dtbase
string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\DB_Offertentool.accdb;Persist Security Info=True";
conn = new OleDbConnection(strConn);
conn.ConnectionString = strConn;
conn.Open();
#endregion
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
conn.Close();
}
public DataTable Select(string requete)
{
OleDbCommand cmd;
OleDbDataAdapter da;
DataSet ds = new DataSet();
cmd = conn.CreateCommand();
da = new OleDbDataAdapter(requete, conn);
ds.Reset();
da.Fill(ds);
return ds.Tables[0];
}
private void frmTeleHousing_Load(object sender, EventArgs e)
{
// initialisation de la combobox AM
chargementCbo("SELECT AM_ID,AM_LastName,AM_FirstName FROM tblAM ORDER BY AM_LastName DESC, AM_FirstName ASC", cboAM, "AM_LastName", "AM_ID");
// initialisation de la combobox Telehousing
chargementCbo("SELECT TH_ID,TH_Name FROM tblTH", cboTH, "TH_Name", "TH_ID");
// initialisation de la combobox connectivité
chargementCbo("SELECT THConnectivity_ID,THConnectivity_Name FROM tblTHConnectivity", cboConnectivity, "THConnectivity_Name", "THConnectivity_ID");
}
private void chargementCbo(string request, ComboBox cboName, string display, string identificateur)
{
DataTable dTable = new DataTable();
dTable = Select(request);
cboName.DataSource = dTable;
cboName.ValueMember = identificateur;
cboName.DisplayMember = display;
cboName.SelectedItem = null;
}
private void cboAM_SelectedIndexChanged(object sender, EventArgs e)
{
txtPosition.Text = cboAM.SelectedValue.ToString();
DataTable dt = (DataTable)cboAM.DataSource;
string index = dt.Rows[cboAM.SelectedIndex][cboAM.ValueMember].ToString();
DataRow dr = Select("select * from tblAM where AM_ID='" + index + "'").Rows[0];
TextBox1.text = dr[0].ToString();
TextBox2.text = dr[1].ToString();
TextBox3.text = dr[2].ToString();
...
}
}
kdiDev
Messages postés3Date d'inscriptionjeudi 19 juillet 2012StatutMembreDernière intervention24 juillet 2012 19 juil. 2012 à 21:29
Merci beaucoup pour ces réponse rapide! Je vais tester tout ça demain. C'est effectivement préférable pour l'accès à la dB je pense. Et je vais regarder le titi.
kdiDev
Messages postés3Date d'inscriptionjeudi 19 juillet 2012StatutMembreDernière intervention24 juillet 2012 24 juil. 2012 à 16:10
Bonjour Whismeril,
Après quelques jours de vacances, je me suis remise à mon apprentissage C#. J'ai regarder le code que tu m'as envoyé, mais je n'y arrive toujours pas. Je pense que j'ai encore trop de lacune sur le sujet pour bien comprendre mais du coup, je n'avance pas et tourne en rond :-(.
J'ai lu plusieurs documents et voici l'explication la plus complète que je peux donner actuellement concernant mon problème.
J'ai donc accès à ma base de donnée. J'arrive à remplir ma datatable. Mais du coup, ce que j'aimerais faire de manière spontanée, c'est faire une requête à ma datatable (ou une boucle de lecture qui sélectionne ce que je désire) en fonction de ce qui a été sélectionner dans ma combobox. Le but étant d'afficher les données liées à cette sélection dans différents textbox.
Désolée de t'embêtre avec ça, mais je suis certaine que tu arriveras à m'aider.