IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#][Access 2003] Adapter.update()


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut [C#][Access 2003] Adapter.update()
    Bonjour,

    J'ai un problème lorsque je veux mettre à jour une DB Access en mode déconnecté via monDataAdapter.uptdate(maTable)

    Je fais un select d'une table, mets à jour cette datatable et veux réenrégistrer mes modifications (insert, update).
    Je précise que j'ai créé deux requete différente, une pour l'insert et une pour le update
    Tout ce passe très bien pour :
    un update
    un insert
    un update et un insert
    plusieurs update

    mais cela ne fonctionne plus pour plusieurs insert.

    En fait cela fonctionne mais les résutats ne sont pas cohérents.

    Je prend un expemple:

    J'ai une DataTable contenant 3 champs (en réalité il y en a plus de 30)
    name ==> PK
    path ==> Pk
    dateModification

    ma DB access est vide, j'ajoute dans ma DataTable (coté c#) 2 rows
    par exemple

    new_proposal_Proposition.doc
    C:\MyPrj\20060116
    12/12/2005


    et

    toto.doc
    C:\MyPrj\20060116
    12/12/2005


    ma dataTable contient bien les bonnes données, le rowState de ces 2 rows est à Inserted, jusque là pas de problème

    lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    monDataAdapter.UpdateCommand = cmdUpdate;
    monDataAdapter.InsertCommand = cmdInsert;
     
    monDataAdapter.ContinueUpdateOnError = true;
    dModified = monDataAdapter.Update(maDataTable);
    le résultat dans la DB ressemble à ceci

    celle-ci est correcte
    new_proposal_Proposition.doc
    C:\MyPrj\20060116
    12/12/2005



    celle-ci ne l'est pas
    toto.docposal_Proposition.doc
    C:\MyPrj\20060116
    12/12/2005


    on peut voir qu'il a pris le nom du champ name et ajouter un partie du champ name de la row supérieure.

    J'ai utilisé le même code c# avec des stored procedure sous sql server 2000 et le problème ne se représente pas.

    Quelqu'un sait-il s'il existe une restriction au niveau access quant aux mises à jour de db en mode déconnecté

  2. #2
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut


    Salut

    Ca serait vraiement surprenant que cela soit un bug access. Il faut que tu execute en mode pas-a-pas et que tu verifie les insertcommands qui sont generees par l'adapter

  3. #3
    Invité de passage
    Inscrit en
    Juillet 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 1
    Par défaut
    j'ai le même problème comment faites vous pour vérifier les insertcommands qui sont génées par l'adapter ?

    Merci

  4. #4
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut
    C'est quand même assez bizarre, cela ressemble à un problème de flush ou quelque chose du style.

  5. #5
    Membre averti
    Inscrit en
    Avril 2004
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 53
    Par défaut
    Le plus étrange est que le même code passe avec sql server 2000.
    J'utilise Oledb dans les 2 cas.

    la seule chose qui change est qu'avec access je n'ai pas spécifié le commandeType:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdInsert.CommandType = CommandType.StoredProcedure;
    car il me générait un erreur me disant qu'il attendait le nom d'une requête après EXECUTE

    j'ai donc uniquement utilier le commantext:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmdInsert.CommandText="EXECUTE maRequete";

  6. #6
    Membre Expert
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Par défaut
    Pour verifier les commandes, j'ai pas de VS sous la main pour confirmer mais il existe un evement RowUpdating et RowUpdated pour le dataadapter (il suffit de le declarer withevents et mettre le code adequat le temps de debugger, il y a des exemples dans les liens)

    La seule explication logique d'une erreur dans ton cas serait un pb dans la requete stockee d'Access pour l'insert... Ou effectivement un gros bug, je vais chercher dans ce sens si tu ne trouve pas la solution

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/02/2009, 14h09
  2. [ADP Access 2003/SQL Serveur 2000] Vue non "updatable"
    Par billybob2 dans le forum Access
    Réponses: 14
    Dernier message: 27/02/2009, 07h43
  3. Réponses: 2
    Dernier message: 24/01/2008, 13h41
  4. [access 2003] erreur d syntaxe update
    Par Milyshyn76 dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/01/2008, 05h51
  5. [access 2003][débutante] problème avec update
    Par Milyshyn76 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 04/01/2008, 16h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo