Kleidp
Messages postés124Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention10 février 2008
-
29 oct. 2007 à 14:19
Kleidp
Messages postés124Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention10 février 2008
-
17 janv. 2008 à 12:38
Bonjour,
Cela fait plusieurs heures que je bloque sur l'impossibilité d'appliquer mes changements sur ma base Access.
Voici comment je procède: <ol><li> Je créé ma base Access.</li><li> J'importe ma base, en faisant une nouvelle connexion.</li><li> Je créé un nouveau dataSet dans lequel j'incorpore la table Client (avec un cliqué-glissé depuis la fenetre "Server Explorer"), j'ai donc mon dataAdapter qui se créé en même temps.</li></ol>
Mon dataAdapter remplit bien mon dataSet avec la methode Fill, pas de soucis. Mais lorsque j'ajoute ou modifie un enregistrement celui ci n'est pas sauvegardé dans ma base, alors que le dataSet à bien été modifié. Il n'y a aucune erreur d'éxécution !
Voici comment je sauvegarde:
ClientDataAdapter.Update(dataSet1)
ClientDataAdapter.Update(dataSet1.Client) // Ne fonctionne pas non plus, et aucune erreur
J'ai vérifié l'updateCommand et l'insertCommand de l'adapter et le SQL est correct.
J'ai aussi essayé de modifier les "buid Action" et "Copy to Output Directory" dans les propriétés de ma base, mais rien de concluant. Par contre c'est peut être ici que ca bloque d'après moi.
J'ai aussi essayé avec un SQL SERVEUR 2005 Express et le problème reste le même.
Kleidp
Messages postés124Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention10 février 2008 29 oct. 2007 à 15:01
Ok j'ai enfin trouvé ...
Pour la postérité:
Lors du cliqué gissé d'une table sur le dataSet, VS demande si l'on veut importer la base dans le projet : Surtout pas!
Bien que la base se trouve sur un répertoire quelconque il faut la copier a la base de votre .exe cad, en phase de production, sur ...bin\debug
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 20102 16 janv. 2008 à 02:29
Je pense que j'ai le problème mais c'est un problème sur l'insertion. Avec ma méthode insertUser(), en principe je devrai inséré des données dans la base de données (ma bdd est SQL Server). La requête est correct. Cependant, lors de l'insertion à partir du logiciel, ça fonctionne aussi. Or le problème c'est lorsque je relance l'application, l'utilisateur que j'ai inséré n'est plus là.
Alors je comprend pas pourquoi !
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 20102 16 janv. 2008 à 02:39
la bdd est bien dans le dossier que vous avez mentionné. Mais ça ne fonctionne toujours pas. Cependant, ma bdd se situe dans un dossier et ce dossier ce situe dans le dosser ...\bin\debug\
Kleidp
Messages postés124Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention10 février 2008 16 janv. 2008 à 12:41
Je ne pense pas que c'est un problème de dossier. Vérifiez tout de même la chaine de connection : Project -> Properties -> Settings : ConnectionStrings
Le problème intervient seulement sur l'insertion ?
Si oui essayez, après le adapter.Update(Table) de faire :
dataSet.Table.Clear();
adapter.Fill(Table);
// ok c'est pas optimal, mais ça me resoud mes pb d'insertions.
Pour une nouvelle insertion j'utilise soit les dataRow() soit les CurrencyManager().
Sinon une idée (saugrenues ?) me vient à l'esprit :
Déplacer la base et le .exe dans un dossier différent (ex: C:\TempProject) et tester
Vous n’avez pas trouvé la réponse que vous recherchez ?
The Red Man
Messages postés111Date d'inscriptionvendredi 15 avril 2005StatutMembreDernière intervention13 juin 20102 16 janv. 2008 à 15:25
En principe les dataRow() (je ne connais pas les CurrencyManager()) ne sert à rien dans l'insertion ou dans l'update puisque c'est les méthodes du TableAdapter qui s'en charge des insertions ou des modifications. A moins que je me trompe complètement.
Pour répondre à votre question, l'update et l'insertion ne fonctionne pas.
Kleidp
Messages postés124Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention10 février 2008 16 janv. 2008 à 19:13
Dsl je seche, vous avez exactement les memes soucis que sur mon poste
de départ mais si vous avez bien appliqué ma réponse accepté, alors je
ne vois pas !
Note:
Le dataRow permet d'ajouter une ligne au dataSet :
voici ma méthode :
_01GestionDB.bddDataSetTableAdapters.DossiersTableAdapter taDossier;
try
{
// instanciation du taDossier
taDossier = new _01GestionDB.bddDataSetTableAdapters.DossiersTableAdapter();
// on determine l'id du dossier
int id = Convert.ToInt32(taDossier.getMaxId()+1);
// on verifie si l'utilisateur a saisie le nom du dossier
if (this.folderNameTB.Text.Length != 0)
{
// on assigne les valeurs aux attributs
this.FolderName = this.folderNameTB.Text;
this.StartPeriod = this.startPeriodDTP.Text;
this.EndPeriod = this.EndPeriodDTP.Text;
this.FolderID = id;
// insertion
taDossier.InsertFolderAccount(id, this.FolderName,
this.StartPeriod,
this.EndPeriod,
false, // false car on ne clôture pas le dossier dès la création
this.UserID);
// on avertit l'utilisateur de l'insertion
Utility.MsgBox.showInformationMsg("Dossier " + this.FolderName + " a été créé !", "01.Gestion");
// on ferme l'UI
this.Close();
}
else
{
Utility.MsgBox.showWarningMsg("Vérifiez que tous les champs sont bien remplis.", "01.Gestion");
}
}
catch
{
Utility.MsgBox.showErrorMsg("Erreur de création du dossier !","01.Gestion");
}
ma méthode fonctionne tres bien mais seulement pendant l'execution du programme. Je peux effectuer des requetes a partir de mon programme et ça fonctione. Or aucune donnée n'est sauvegardé dans la base de données.
Kleidp
Messages postés124Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention10 février 2008 17 janv. 2008 à 12:38
Hmmm
j'ai testé avec la methode insert() du dataAdapter et ça fonctionne chez moi.
A mon avis le problème ne vient pas du code (d'ailleurs tu n'as pas d'erreur), mais de ta liaison avec la bdd.
Créé plûtot un nouveau post sur le site en reprennant les éléments de la discussion pour avoir l'aide des autres programmeurs.