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 :

Clef primaire non récupérée [Débutant]


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut Clef primaire non récupérée
    Bonjour
    Je cherche depuis un moment, mais le problème semble insoluble.

    Ce n'est pas bien compliqué : j'attaque une base Access sous VB Studio 2010.
    Il s'agit d'une base de contacts avec 2 tables :
    -Contacts (les fiches individuelles)
    -Liaisons (les relations entres les différents contacts, qui connait qui)

    La table Liaisons contient les champs suivants :
    -ID (clef primaire générée par Access)
    -Contact1
    -Contact2
    -Liaison (intensité de la liaison, numérique)

    Quand je passe mon SELECT pour le charger ensuite dans un dataset, il refuse obstinément de prendre "ID". Du coup je n'ai pas de clef primaire et ça me bloque pour les update.

    Des idées?

    Merci.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Frantz2501 Voir le message
    Quand je passe mon SELECT pour le charger ensuite dans un dataset, il refuse obstinément de prendre "ID".
    Qu'entends tu par là ? message d'erreur à l'exécution ? pas de données ?

    Sois plus précis.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    J'ai un message d'erreur sur l'update du dataset car il lui manque une clef primaire pour la table Liaisons.
    Quand je regarde la datatable Liaisons, effectivement, la colonne ID qui fait office de clef primaire n'est pas chargée.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 156
    Points : 25 075
    Points
    25 075
    Par défaut
    quelle est ta requête select ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from liaisons

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Frantz2501 Voir le message
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from liaisons
    Et en exécutant cette requête sous Access tu vois bien l'ID ou pas ?

    Sinon comment fais-tu pour charger ton Dataset ? J'imagine que c'est un Adapter que tu utilises mais cependant est-ce que la commande UpdateCommand est bien à jour, reflète-elle l'instruction SQL que tu es censée exécuter ? Fournis-nous la propriété CommandText de l'objet UpdateCommand de l'Adaptater

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Le module pour gérer la connexion (pas propre à mon avis, je débute) :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    Private Sub Euroline_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim mypath As String = "C:\Users\Marjorie\Documents\My Dropbox\Jdr\Euroline\Outils\data.mdb"
            If BaseOpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                BaseOpenFileDialog.DefaultExt = ".mdb"
                BaseOpenFileDialog.RestoreDirectory = True
                BaseOpenFileDialog.FileName = "data.mdb"
                mypath = BaseOpenFileDialog.FileName
            Else : Exit Sub
            End If
            strConn = "Provider=Microsoft.jet.OLEDB.4.0;Data Source= " & mypath & ";"
            strSql = "SELECT * FROM Contacts"
            objetConnection = New OleDbConnection()
            objetConnection.ConnectionString = strConn
            objetConnection.Open()
            objetCommand = New OleDbCommand(strSql)
            objetDataAdapter = New OleDbDataAdapter(objetCommand)
            objetCommand.Connection() = objetConnection
            objetDataAdapter.Fill(monDataset, "Contacts")
            objetDataTable = monDataset.Tables("Contacts")
            strSql2 = "SELECT Liaisons.* FROM Liaisons"
            objetDataAdapter.SelectCommand.CommandText = strSql2
            objetDataAdapter.Fill(monDataset, "Liaisons")
            objetDataAdapter.Dispose()
            objetConnection.Close()
            tableLiaison = monDataset.Tables("Liaisons")
     
     
     
        End Sub
    Celui effectuant la mise à jour de la base :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub MAJLoyauté_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MAJLoyauté.Click
     
     
            Dim crow As Integer
            crow = -1
            For k = 0 To tableLiaison.Rows.Count - 1
                If (tableLiaison.Rows(k).Item("Contact1").ToString = ListBox1.Text And tableLiaison.Rows(k).Item("Contact2").ToString = ListBox2.Text) Or (tableLiaison.Rows(k).Item("Contact2").ToString = ListBox1.Text And tableLiaison.Rows(k).Item("Contact1").ToString = ListBox2.Text) Then
                    If LoyautéComboBox.Text <> "" Then tableLiaison.Rows(k).Item("Loyauté") = CType(LoyautéComboBox.Text, Double)
                    crow = k
                    Exit For
                End If
            Next
     
            If crow = -1 Then
                Dim NouvLigne As DataRow = monDataset.Tables("Liaisons").NewRow()
                NouvLigne.Item("Contact1") = ListBox1.Text
                NouvLigne.Item("Contact2") = ListBox2.Text
                NouvLigne.Item("Loyauté") = CType(LoyautéComboBox.Text, Double)
                monDataset.Tables("Liaisons").Rows.Add(NouvLigne)
            End If
            MsgBox(tableLiaison.Rows(1).Item("ID"))
     
            'Try
            objetCommand = New OleDbCommand(strSql2)
            objetCommand.Connection() = objetConnection
            objetDataAdapter.SelectCommand = objetCommand
            objetCommandBuilder = New OleDb.OleDbCommandBuilder(objetDataAdapter)
            objetDataAdapter.UpdateCommand = objetCommandBuilder.GetUpdateCommand
            objetDataAdapter.Update(monDataset, "Liaisons")
            monDataset.Clear()
            objetDataAdapter.Fill(monDataset, "Liaisons")
            objetDataTable = monDataset.Tables("Liaisons")
            'Catch ex As Exception
            '    MsgBox(ex.Message)
            'End Try
        End Sub

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Frantz2501 Voir le message
    Le module pour gérer la connexion (pas propre à mon avis, je débute) :
    Merci de répondre à la question du collègue :

    Fournis-nous la propriété CommandText de l'objet UpdateCommand de l'Adaptater

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Bonjour,

    tu ne récupère pas l'ID...
    ok mais au vue de ce que tu dis:
    La table Liaisons contient les champs suivants :
    -ID (clef primaire générée par Access)
    -Contact1
    -Contact2
    -Liaison (intensité de la liaison, numérique)
    l'ID est dans la table "Liaison",
    Donc c'est normale que tu n'ai pas d'ID avec la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSql = "SELECT * FROM Contacts"
    PS: tu ne nous as pas donné la strucutre de la table:
    - Contacts (les fiches individuelles)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Merci de répondre à la question du collègue :
    A mon avis, le problème vient de là : je n'ai pas défini explicitement la procédure commande update du dataadaptater, pensant que c'était géré par le commandbuilder.

    J'ai été conforté dans mon idée par le fait que le module de mise à jour de la table contact fonctionne bien :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub btnUp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUp.Click
     
     
     
            Dim maLigne As DataRow
            Dim crow As Integer
            For k = 1 To monDataset.Tables("Contacts").Rows.Count
                If monDataset.Tables("Contacts").Rows(k).Field(Of String)("Nom").ToString = NomListBox.Text Then
                    crow = k
                    Exit For
                End If
            Next
     
            maLigne = monDataset.Tables("Contacts").Rows(crow)
            maLigne("Sexe") = SexeComboBox.Text
            If PaysComboBox.Text <> "" Then maLigne("Pays") = PaysComboBox.Text
            If VilleComboBox.Text <> "" Then maLigne("Ville") = VilleComboBox.Text
            maLigne("Métatype") = MétatypeComboBox.Text
            maLigne("Fixer") = FixerTextBox.Text
            maLigne("Liaison") = LiaisonTextBox.Text
            If maLigne("Connectivité").ToString <> "" Then maLigne("Connectivité") = CType(ConnectivitéComboBox.Text, Double) _
                Else maLigne("Connectivité") = 0
            maLigne("Attitude") = AttitudeTextBox.Text
            maLigne("Personnalité") = PersoonalitéTextBox.Text
            maLigne("Remarques") = RqTextBox.Text
            maLigne("Signe_particulier") = SignesTextBox.Text
            Try
                objetCommand = New OleDbCommand(strSql)
                objetCommand.Connection() = objetConnection
                objetDataAdapter.SelectCommand = objetCommand
                objetCommandBuilder = New OleDb.OleDbCommandBuilder(objetDataAdapter)
                objetDataAdapter.UpdateCommand = objetCommandBuilder.GetUpdateCommand
                objetDataAdapter.Update(monDataset, "Contacts")
                monDataset.Clear()
                objetDataAdapter.Fill(monDataset, "Contacts")
                objetDataTable = monDataset.Tables("Contacts")
            Catch ex As Exception
            End Try
     
     
        End Sub
    De façon générale, je galère pas mal parce qu'il me semble qu'il y a plusieurs manières de procéder à chaque opération (en code, via l'IDE, en définissant les requêtes en SQL dans le dataadaptater, via Linq, etc).

    Pour la requete, quand je la passe sous Access, elle sort bien tous les champs, y compris "ID".

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par hunteshiva Voir le message
    Bonjour,

    tu ne récupère pas l'ID...
    ok mais au vue de ce que tu dis:


    l'ID est dans la table "Liaison",
    Donc c'est normale que tu n'ai pas d'ID avec la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSql = "SELECT * FROM Contacts"
    C'est bizarre, parce qu'il récupère bien la table Liaisons (je le vois au débuging) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSql2 = "SELECT Liaisons.* FROM Liaisons"
            objetDataAdapter.SelectCommand.CommandText = strSql2
            objetDataAdapter.Fill(monDataset, "Liaisons")
    Détail : j'ai ajouté cette clef primaire après avoir mis en place le reste du code. Et la requete SELECT * FROM Liaisons fonctionnait bien jusque là. C'est juste qu'elle semble ignorer le champ ID.

  12. #12
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Oo j'avais pas vu t'a deuxième requête SQL *dsl*

    il y a toutefois une chose qui me trouble,
    pourquoi tu fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSql2 = "SELECT Liaisons.* FROM Liaisons"
    ça ne serait pas plutôt ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSql2 = "SELECT * FROM Liaisons"

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    J'ai même testé les deux pour être honnête.

    Dans tous les cas, même problème.

  14. #14
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    ok... *je connaissais pas cette façon d'écrire les requêtes SQL*

    alors autre chose,
    tu ne requête pas ta BDD avec ta deuxième requête, mais seulement ton DataAdapter...
    *je t’avouerais que je ne comprend pas pourquoi*
    Pourquoi ne pas re-requeter ta BDD tout simplement?

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Le problème vient surement de là.

    EN fait, j'ai eu du mal à lui faire remonter la 2ème table. Je dois admettre que ce genre de subtilités m'échappent.

    Ma 1ere requete

    SELECT * FROM Contacts remonte seulement la 1ere table de mon point de vue. Aussi, j'ai voulu rapatrier Liaisons via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    strSql2 = "SELECT * FROM Liaisons"
            objetDataAdapter.SelectCommand.CommandText = strSql2
            objetDataAdapter.Fill(monDataset, "Liaisons")
    Mais ce que je voulais en fait, c'est charger TOUTE la base dans le dataset.

    Comment fais-je pour remonter proprement l'intégralité de la base dans le dataset une bonne fois pour toutes?

  16. #16
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    Non tui charge simplement tes tables.
    Normalement, tu n'est pas censé charger toute ta BDD dans ton programme (imagine si tu bosse dans un gros groupe, la taille que peuvent avoir les BDD )
    Enfin, si ta BDD reste petite, on peu passer outre ce détail.

    L'idée c'est que tu charge Table par Table dans des DataSet.
    En reprenant ton code, ça devrai ressembler à ceci :
    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
    ' Connexion à la BDD
            strConn = "Provider=Microsoft.jet.OLEDB.4.0;Data Source= " & mypath & ";"
            objetConnection = New OleDbConnection()
            objetConnection.ConnectionString = strConn
            objetConnection.Open()
    ' Récupération des Contacts
            strSqlAllContact = "SELECT * FROM Contacts"
            objetCommandContact = New OleDbCommand(strSqlAllContact )
            objetDataAdapterContact = New OleDbDataAdapter(objetCommandContact )
            objetCommandContact .Connection() = objetConnection
            objetDataAdapterContact .Fill(DatasetContacts, "Contacts")
            objetDataTableContact = DatasetContacts.Tables("Contacts")
    'Récupération des Liaisons
            strSqlAllLiaisons = "SELECT * FROM Liaisons"
            objetCommandLiaisons = New OleDbLiaisons(strSqlAllLiaisons )
            objetDataAdapterLiaisons = New OleDbDataAdapter(objetCommandLiaisons )
            objetCommandLiaisons .Connection() = objetConnection
            objetDataAdapterLiaisons .Fill(DatasetLiaisons, "Contacts")
            objetDataTableLiaisons = DatasetLiaisons.Tables("Liaisons")
    Voila, le code est p-e pas terrible,
    je te laisse le rendre plus lisible et corriger les erreurs que j'ai pu faire.
    mais voila l'idée.

    Je te laisse je dois y aller, bon code

  17. #17
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    RAAHHHHH!!

    Toujours pas!



    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Private Sub Euroline_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Dim mypath As String = "C:\Users\Marjorie\Documents\My Dropbox\Jdr\Euroline\Outils\data.mdb"
            If BaseOpenFileDialog.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
                BaseOpenFileDialog.DefaultExt = ".mdb"
                BaseOpenFileDialog.RestoreDirectory = True
                BaseOpenFileDialog.FileName = "data.mdb"
                mypath = BaseOpenFileDialog.FileName
            Else : Exit Sub
            End If
            strConn = "Provider=Microsoft.jet.OLEDB.4.0;Data Source= " & mypath & ";"
     
            objetConnection = New OleDbConnection()
            objetConnection.ConnectionString = strConn
            objetConnection.Open()
     
            strSql = "SELECT * FROM Contacts"
            objetCommand = New OleDbCommand(strSql)
            objetDataAdapter = New OleDbDataAdapter(objetCommand)
            objetCommand.Connection() = objetConnection
            objetDataAdapter.Fill(monDataset, "Contacts")
            objetDataTable = monDataset.Tables("Contacts")
     
            strSql2 = "SELECT * FROM Liaisons"
            objetCommand = New OleDbCommand(strSql2)
            objetDataAdapter = New OleDbDataAdapter(objetCommand)
            objetCommand.Connection() = objetConnection
            objetDataAdapter.Fill(monDataset, "Liaisons")
            tableLiaison = monDataset.Tables("Liaisons")
     
            objetDataAdapter.Dispose()
            objetConnection.Close()
     
        End Sub
     
      Private Sub MAJLoyauté_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MAJLoyauté.Click
     
     
            Dim crow As Integer
            crow = -1
            For k = 0 To tableLiaison.Rows.Count - 1
                If (tableLiaison.Rows(k).Item("Contact1").ToString = ListBox1.Text And tableLiaison.Rows(k).Item("Contact2").ToString = ListBox2.Text) Or (tableLiaison.Rows(k).Item("Contact2").ToString = ListBox1.Text And tableLiaison.Rows(k).Item("Contact1").ToString = ListBox2.Text) Then
                    If LoyautéComboBox.Text <> "" Then tableLiaison.Rows(k).Item("Loyauté") = CType(LoyautéComboBox.Text, Double)
                    crow = k
                    Exit For
                End If
            Next
     
            If crow = -1 Then
                Dim NouvLigne As DataRow = monDataset.Tables("Liaisons").NewRow()
                NouvLigne.Item("Contact1") = ListBox1.Text
                NouvLigne.Item("Contact2") = ListBox2.Text
                NouvLigne.Item("Loyauté") = CType(LoyautéComboBox.Text, Double)
                monDataset.Tables("Liaisons").Rows.Add(NouvLigne)
            End If
            MsgBox(tableLiaison.Rows(1).Item("ID"))
     
            'Try
            objetCommand = New OleDbCommand(strSql2)
            objetCommand.Connection() = objetConnection
            objetDataAdapter.SelectCommand = objetCommand
            objetCommandBuilder = New OleDb.OleDbCommandBuilder(objetDataAdapter)
            objetDataAdapter.UpdateCommand = objetCommandBuilder.GetUpdateCommand
            objetDataAdapter.Update(monDataset, "Liaisons")
            monDataset.Clear()
            objetDataAdapter.Fill(monDataset, "Liaisons")
            tableLiaison = monDataset.Tables("Liaisons")
            'Catch ex As Exception
            '    MsgBox(ex.Message)
            'End Try
        End Sub

  18. #18
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    J'ai ajouté un champ à ma table "Liaisons" et il ne le prend pas non plus. On serait dans une autre application, je penserais à une histoire de cache ou de fichier temporaire non effacé.

  19. #19
    Membre expérimenté Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Points : 1 455
    Points
    1 455
    Par défaut
    .... il y a un cheveu dans la soupe la

    tu comprendra que ça me dépasse.
    je n'ai pas ta BDD sous la main mais il y a un truc qui cloche.
    parce-que la, il y a aucune raison qu'il ne prenne pas pas clé primaire ...

    Non, tu est sur une BDD Access?
    peux tu nous l'envoyer *enlève les données sensible s'il y en a, et met un jeux de 2-3 données complétement fausse*

  20. #20
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Février 2012
    Messages : 29
    Points : 23
    Points
    23
    Par défaut
    Je viens de trifouiller la fenetre de dialogue de selection de la BDD Access et ça marche. Je ne comprends rien. Mais ça marche.

    Merci!

    J'abuse, mais je ne trouve pas la propriété pour définir le nom de fichier par défaut (et non l'extension) dans la fenetre de dialogue d'ouverture de fichier. Qq1 le connait?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Clé primaire non auto
    Par Isa31 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 16/05/2005, 11h23
  2. Clef primaire en nvarchar
    Par Mouse dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/04/2005, 15h50
  3. Comment comment définir une clef primaire dans une table??
    Par nek_kro_kvlt dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/02/2005, 21h06
  4. [VB.NET] [ADO.NET] Clef primaire auto incrémenté
    Par Guld dans le forum Accès aux données
    Réponses: 4
    Dernier message: 25/09/2004, 20h46
  5. récupérer la clef primaire d'une table
    Par orionis69 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 28/02/2004, 13h00

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