Bonjour à tous,
saviez vous comment peut on mettre à jour une bdd access, qui est ouverte à partir d'une application c#
Bonjour à tous,
saviez vous comment peut on mettre à jour une bdd access, qui est ouverte à partir d'une application c#
j'suis vert !
merci HULK pour le lien
j'ai déjà fait les étapes citées, mais sans résultat. la seule différence entre mon code et ces étapes c'est que moi je n'utilise pas un composant OleDbDataAdapter.
donc mon problème reste toujours tel quel.
bah c'est quoi le probleme alors ?? tu as un message d'erreur ??
j'suis vert !
bonjour
voilà mon problème en détails
je fais une connexion à une bdd Access, je fais un binding et j'affiche le contenue dans le datagrid.
la bdd Access contient plusieurs tables, à chaque fois je change seulement la source du datagrid et le contenu de la table souhaitée est affiche. jusque là avec l'import et l'affichage tout marche bien.
mais quand fais quelques modifications dans le datagrid, je veux (après un événement click sur un bouton par exemple) je veux mettre à jours ma bdd. et c'est ça mon problème cher ami HULK.
donne nous ton code pour afficher les données dans le datagrid et celui pour l'updater
j'suis vert !
// Se connecter à la base de données et s'en sortir les données.
privatevoid OuvrirBD(string monfichier)
{
// Ajouter la table contenant les données initiales au DataSet.
monDataSet.Tables.Add(mesDonnees);
// Les paramètres de la connexion.
string paramAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + monfichier;
// La requête.
string requeteAccessSelect = "SELECT * FROM mesDonnees";
OleDbConnection maConnAccess = null;
try
{
maConnAccess = newOleDbConnection(paramAccessConn);
// Exécuter la commande Select sur la base de données.
try
{
OleDbCommand maCommandeAccess = newOleDbCommand(requeteAccessSelect, maConnAccess);
// monDataAdaptateur permet de remplir le flux de données
// dans un DataSet.
monDataAdaptateur = newOleDbDataAdapter(maCommandeAccess);
maConnAccess.Open();
// Ici on remplit les données dans le DataSet
//monDataAdaptateur.Fill(monDataSet, "mesDonnees");
monDataAdaptateur.Fill(monDataSet, "mesDonnees");
}
catch (Exception ex)
{
MessageBox.Show("Erreur: Echec de trouver la table demandée depuis la base de données.\n" + ex.Message, "Erreur");
return;
}
}
catch (Exception ex)
{
MessageBox.Show("Erreur: Echec de créer une connexion à la base de données. \n" + ex.Message);
return;
}
}
....
monDataGridView.Update();
DataTable tamp = (DataTable) monDataGridView.DataSource;
monDataAdaptateur.Update(tamp);
Merci
hé bé c'est pas étonnant qu'il ne prenne pas en compte tes modifications dans ta base !!!!
Si tu utilise Visual Studio tu devrais passer par le concepteur, quand tu prends un dataadapter, il te genere automatiquement des requetes UPDATE INSERT et DELETE. C'est grace à ca que les modifs dans ton datagrid prendront effet dans ta base access par l'intermediaire de cette ligne :
est ce que tu utilise visual studio ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 monDataAdaptateur.Update(tamp);
j'suis vert !
oui j'utilise visual studio
c'est quoi le concepteur? c'est un composant?
j'utilise VS Express 2005 pour ce projet.
mais j'ai en parallèle la version 2003 Pro
avec VS 2003, tu glisse un composant oledbdataadapter de la boite à outils à gauche, tu genere ta requete select, il va te faire automatiquement tes INSERT DELETE ET UPDATE.
tu genere ton dataset, tu applique un datasource (le dataset) et un display member (datatable du dataset) à ton datagrid.
derriere un bouton load tu fais un fill de ton dataset et derriere un bouton update du fais un update de ton dataset
reprends ce lien et suit le avec VS 2003, tu va comprendre comment ca fonctionne :
http://msdn.microsoft.com/library/fr...indowsform.asp
j'suis vert !
oui j'essaye de revenir à ta première proposition (le lien cité).
j'ai fais pratiquement tout mais oleDbDataAdapter ne me génère pas une instruction UPDATE ni DELETE.
on peut l'ajouter après la configuration dans l'onglet propriété de oleDbDataAdapter mais je ne sais la structure de ces deux commandes.
saviez vous comment?
je t'explique encore.
dans votre lien, je suis arrivé au point suivant:
Mise à jour de la base de données
j'ai ajouté un bouton et le code suivant
// C#
private void btnUpdate_Click(object sender, System.EventArgs e)
{
oleDbDataAdapter1.Update(dsAuthors1);
MessageBox.Show("Database updated!");
}
j'exécute mais voila le message d'erreur
Une exception non gérée du type 'System.InvalidOperationException' s'est produite dans system.data.dll
Informations supplémentaires : Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.
HULK
le composant oleDbDataAdapter n'existe pas dans VS Express 2005. y a t il un remplaçant?
y'a pas non plus le sqldataadpapter, je crois que c'est du au fait que VS express est gratuit. Si il ne te fait pas de UPDATE et le DELETE, c'est parce que ton SELECT est pas conforme, ca peut etre du au fait que tu ai un DISTINCT dans ton SELECT ou que tu ne prenne pas la clé primaire de ta table dans ton SELECT.
j'suis vert !
Ok et merci pour toutes les réponses cher ami HULK.
une petite dernière question si vous voulez, j'ai suivi le lien mais je n'arrive toujours pas à faire le DELETE, pourtant le UPDATE marche bien!
bah normalement c pas à toi de les faire, ca se fait tout seul, si toutes les autres instructions se generent toutes seules, y'a pas de raison que le DELETE foire
j'suis vert !
Ok je vais ressayer. Merci pour vous
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager