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

VB.NET Discussion :

DataSet plusieurs enregistrements [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Par défaut DataSet plusieurs enregistrements
    Bonjour,
    Comment on peut créer plusieurs enregistrements avec Dataset avant de les insérer dans la BDD, c'est a dire d’insérer un groupe d’enregistrements en un seul Click.
    Merci

  2. #2
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Bonjour,

    utilise des dataAdapter et tu devrait t'en sortir sans trop te cassé la tête.
    Tu l'utilisera pour sélectionner tes données au départ et remplir ton dataset

    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    dim connectionString as String ="Une chaine de connexion"
    Dim connection as new sqlConnection
    Dim sqlDataAdapter As SqlDataAdapter
    Dim ds as new DataSet
    dim sSql as String 'Contient ton select de départ
     
    sSql="Select * from taTable"
    connection.ConnectionString = connectionString
    connection.Open()
     
    sqlDataAdapter = new SqlDataAdapter(sSql, connection)
    sqlDataAdapter.fill(ds,"le nom de la table qui sera dans ton dataset ex : TaTableTest")
    connection.Close()
     
    tonDataGridView.DataSource=ds 'La source de donné du gridview est ton DS tonDataGridView.dataMember = "TaTableTest"
    Avec ca tu aura tes données, ensuite tu fera tes modification dans ton GridView. Pour les enregistrées il te restera à réouvrir ta ''connection'' et à faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sqlDataAdapter.Update(ds)
    Bon maintenant j'ai écrit ca de mémoire, j'ai pas du tout testé, j'avais pas visual studio de disponible où j'était.

    Essaie et redonne moi des nouvelles!

    Ciao!

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Par défaut
    le problème c'est que j'ai déjà un formulaire qui me permet de faire des modification et la création ,au début j'utilise ce formulaire je Click sur valider et j’insère l'enregistrement dans la bdd, après je rafraîchie mon gridview et je récupère mon enregistrement que je viens de créer (la mémé chose pour la modification) , mais maintenant je veut insérer plusieurs lignes on utilisant le mémé formulaire.
    J'avais une aide d'utiliser une table virtual(datatable ou dataset) de VS, d’insérer les lignes(modifier ) et quand je Click sur valider je copier l'ensemble des enregistrements dans ma BDD.
    Merci

  4. #4
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Bon okay, voici une solution basique qui devrait résoudre ton problème.

    Si tu veux t'éviter de créer une table, d'ajouter les colonnes manuellement et de boucler dedans pour faire des updates sur la BD utilise la méthode que je t'ai décrite auparavant.

    Si tu aime mieux les méthodes barbares essaie comme ca, prend note que tu devra séparer les lignes modifiées et celles créées. ( on ajoutera un champ dans la dataTable "modified" qui vaudra "oui" si c'est une ligne existante mais modifiée et "non" si c'est une nouvelle ligne.

    Crée toi une nouvelle dataTable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim dtModifiedItem as newDatatable
    Tu lui ajoute des colonnes de tel sorte qu'elle soit identique à la table dans ta BD.(Oublie pas d'ajouter la colonne modified)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    dtModifiedItem.Columns.add("modififed")
    dtModifiedItem.Columns.add("Premier champ")
    dtModifiedItem.Columns.add("Deuxieme champ")
    dtModifiedItem.Columns.add("troisieme champ")
    dtModifiedItem.Columns.add("Tu voit l'genre")
    Apres ca a chaque fois que tu modifie, ou créer une ligne tu fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim dr as datarow
     
    dr=dtModifiedItem.NewRow
     
    dr.item("modified")= "oui" ou "non" 
    'Supposons que le champ suivant est la clé de ta table, donc on essaie de pas le modifier, si tu tien a pouvoir le modifier, tu devra ajouter un champ dans la dataTable et stocké l'ancienne clé pour travailler(clause where) 
    dr.item("premier champ")="ta premiere donnée"
    dr.item("deuxième champ")="ta deuxième donnée"
    dr.item("tu voit le genre")="tu voit le genre"
    'Et tu ajoute la ligne a ta datatable
    dtModifiedItem.rows.add(dr)
    Maintenant que ta dataTable est rempli, tu la pousse ligne par ligne a ton serveur. En utilisant l'update ou l'insert en fonction du champ modified qui vaut oui ou non. Tu devra au préalable créer et ouvrir ta connexion avec ta BD, et la fermer lorsque la boucle sera terminée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
        Dim sqlCom As New SqlCommand
                    For Each DataRow As DataRow In dtModifiedItem.Rows
                        If dr.Item("modified") = "oui" Then
                            'Tu fait un SET et tu ajoute les champs que tu veux modifier
                            'Et un where pour modifier le bon enregistrement
                            sqlCom = "Update taTableDansLaBD " & _
                                    "Set champ2=" & dr.Item("deuxieme champ") & "," & _
                                    "champ3=" & dr.Item("troisième champ") & " " & _
                                    "Where champ1=" & dr.Item("premier champ")
                            sqlDataAdapter.UpdateCommand = sqlCom
                            sqlDataAdapter.UpdateCommand.ExecuteNonQuery()
                        ElseIf dr.Item("modified") = "non" Then
                            'Tu doit mettre les nom de colonne dans les premiere parenthèse
                            'Et leur valeur dans la paranthèse du Values.
                            sqlCom = "Insert into taTableDansLaBD(champ2,champ3) " & _
                                  "values(" & dr.Item("deuxieme champ") & "," & dr.Item("troisieme champ") & ")"
                            sqlDataAdapter.UpdateCommand = sqlCom
                            sqlDataAdapter.UpdateCommand.ExecuteNonQuery()
                        End If
                    Next
    Comme j'suis au travail j'ai pas de BD de dispo pour tester tout ca. C'est surement pas parfait, mais ca te donne une bonne idée de la piste à suivre. Mais je continue à dire que tu devrais modifier un petit peu ton fonctionnement et travailler avec un dataset et faire des Update avec le sqlDataAdapter

  5. #5
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 142
    Par défaut
    Bonjour,
    Merci pour votre aide précieuse, le problème est résolu ,j'ai utiliser la premier méthode avec Dataset et OracleDataAdapter c'est plus facil et simple .

    Un grand Merci

  6. #6
    Membre expérimenté Avatar de Saintelaitlait
    Homme Profil pro
    Responsable ServiceDesk
    Inscrit en
    Août 2011
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable ServiceDesk
    Secteur : Service public

    Informations forums :
    Inscription : Août 2011
    Messages : 179
    Par défaut
    Bah ca fait plaisir Bonne chance avec ton formulaire

    Oublie pas de marquer la discussion comme résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. plusieurs enregistrements dans une seul ligne
    Par Celelibi dans le forum Requêtes
    Réponses: 3
    Dernier message: 03/01/2005, 15h55
  2. Réponses: 12
    Dernier message: 27/08/2004, 15h42
  3. SQL et Access : ajouter plusieurs enregistrements
    Par Bernard M dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2004, 21h39
  4. Insérer plusieurs enregistrements en une seule requête
    Par pyd001 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/02/2004, 10h38

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