none
Sauvegarde des données sur une base SQL RRS feed

  • Question

  • Sur une base de doc technique avec tables maitre/enfant, je n'arrive pas à sauvegarder les lignes enfants ajouter en même temps que la table maitre. Les saises se font avec des datagridviews.

    Lorsque la table maitre est sauvegarder, l'état added de ces lignes enfants doit changer car la fonction "Select("", "", DataRowState.Added)" sur la table enfant ne ramene plus d'élément a sauvegarder. L'état change peut être lors du retour de la valeur du compteur de la table maitre. Par contre, si la table maitre à été enregistré avant d'inserrer des lignes sur la table enfant, la sauvegarde se passe bien.

    Voici un extrait d'une des nombreuses versions du code de sauvegarde :

    Me.SocietesBindingSource.EndEdit()

    Me.TableAdapterSocietes.Update(DSsql.Societes.Select(Nothing, Nothing, DataRowState.Added))

    Me.AgencesBindingSource.EndEdit()

    Me.TableAdapterAgences.Update(DSsql.Agences.Select(Nothing, Nothing, DataRowState.Added))

    Merci pour votre aide

     

    mardi 14 novembre 2006 23:04

Réponses

  • La propriété AcceptRejectRules de ta clé étrangère doit être sur cascade au lieu d'être sur None. Du coup, l'appel d'AcceptChanges sur la table parant implique le même appel sur la table enfant et l'état Added des lignes disparait.
    mercredi 15 novembre 2006 08:03

Toutes les réponses

  • La propriété AcceptRejectRules de ta clé étrangère doit être sur cascade au lieu d'être sur None. Du coup, l'appel d'AcceptChanges sur la table parant implique le même appel sur la table enfant et l'état Added des lignes disparait.
    mercredi 15 novembre 2006 08:03
  • Merci, c'était bien le problème. Par contre il faut mettre la propriété AcceptRejectRules à none pour que cela fonctionne.

    Pour pouvoir mettre à jour les valeurs des compteurs, je m'évertué à mettre AcceptRejectRules  sur cascade (je n'ai donc pas compris le rôle exact de cette propriété).

    Encore une fois, merci

    mercredi 15 novembre 2006 20:35