Visual Studio 2008 problème de sauvegarde des données en base [Résolu]

Signaler
Messages postés
25
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
18 avril 2010
-
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour,

J'ai créé une application qui utilise une base de donnée Access.
Quand je travail sur mon application (quand je fait des mis à jour, delete etc)
je vois mes modifs mais quand j'enregistre (bouton enregistrer sur l'appli) les
données ne s'enregistre pas en base.

Voici le code que j'ai derrière le bouton enregistrer:

Me.Validate()
Me.ParametrageFacturationBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DataSetParametrageFacturation)

Merci pour votre aide.

6 réponses

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Si la base est dans le repertoire debug/bin c'est normal,
si tu l'execute depuis vs2008.

Place la base ailleurs.

Sinon execuse en dehors de vs2008 et cela devrait marché.
Messages postés
25
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
18 avril 2010

En effet quand je l'exécute en dehors de vs2008 cela fonctionne très bien.

Merci beaucoup.
Messages postés
9
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
11 juin 2010

Bonjour.

J'ai moi aussi une application a créer qui exploite une base de données Access, et mon probleme est que je n'arrive toujours pas a écrire dans la base,j'ai pourtant tout essayer...j'arrive a obtenir le nom des colonnes et des lignes mais pas a ajouter un contact ou a supprimer par exemple.

La connexion semble Ok ,mais ce probleme d'éciture m'exaspere..voici mon code:

class Program
{
public static void Main(string[] args)
{
string path = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\SHEM.mdb";
// string strAccessConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\BTS2\ANDRAL\SHEM\Projet c#\test unitaire\OleDbEleves\SHEM.mdb";
string strAccessConn = path;
string strAccessSelect = "SELECT * FROM Agent";
// string strAccessSelectAstreinte = "SELECT * FROM TableAstreinte";


// Crée le groupe de données et y ajoute la table Agent :
DataSet myDataSet = new DataSet();
OleDbConnection myAccessConn = null;
try
{
myAccessConn = new OleDbConnection(strAccessConn);
Console.WriteLine("Connexion OK");
}
catch (Exception ex)
{
Console.WriteLine("Erreur: création de la connection a la base de données. \n{0}", ex.Message);
return;
}

try
{

OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

myAccessConn.Open();
myDataAdapter.Fill(myDataSet, "Agent");
//string Julien = string.Empty;
//myAccessCommand.CommandText "DELETE FROM Agent where Prenom ? ";
//myAccessCommand.Parameters.Add("Prenom", OleDbType.Char).Value = Julien;

myDataAdapter.Fill(myDataSet, "TableAstreinte");
}

catch (Exception ex)
{
Console.WriteLine("Erreur: pas de réqupération de données dans la base.\n{0}", ex.Message);
return;
}


//un groupe de données pouvant contenir plusieurs tables,
//celles ci sont toutes insérées dans un tableau:
DataTableCollection dta = myDataSet.Tables;



DataColumnCollection drc = myDataSet.Tables["Agent"].Columns;


DataRowCollection dra = myDataSet.Tables["Agent"].Rows;
//DataRowCollection dra = myDataSet.Tables["TableAstreinte"].Rows;
DataTable table;
DataRow dr = myDataSet.Tables["Agent"].NewRow();

table = myDataSet.Tables["Agent"];


dr = table.NewRow();
dr[0] = "Yann";
dr[1] = "paul";
table.Rows.Add(dr);
table.AcceptChanges();


myAccessConn.Close();

cela passe a la compilation , mais quand j'execute et j ouvra ma base (SHEM.mdb) rien ne se passe dans ma table "Agent" j'utilise pourtrant les méthodes DataRow tout ça...Je suis néophyte en prog donc un bon coup demain serai génial merci @ tous.

Aurevoir.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
Salut,

Tu n'as pas compris le principe des datasets.
Les datasets sont des tables memoires deconnectées.

table.AcceptChanges --> fait en sorte que les modifications apportées lors des manipulations sont acceptées ie les modifications avant acceptchanges ne sont plus trackées.

Pour enregistrer en base il faut utiliser dataadapter.update

http://www.microsoft.com/france/vision/saga-dot-net/ episode 28 pour plus de detail.
Messages postés
9
Date d'inscription
lundi 19 octobre 2009
Statut
Membre
Dernière intervention
11 juin 2010

Salut

Merci pour ta réponse, je manipule aussi mydataadpter.update mais je ne c'est pas ou le placé dans mon code ,as tu une idée?????

et pense tu que cela suffise pour pouvoir rajouter ma ligne avec le nom et prénom passé en parametre comme je l'ai fait ou faut t il utiliser direct le lanquage SQL?

bye
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28