johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017
-
24 mars 2008 à 08:41
johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017
-
24 mars 2008 à 16:22
Bonjour à tous et joyeuses pâques au passage !
Voilà, j'ai un soucis pour mettre à jour ma base de données Access, je m'explique :
J'ai créé une table USER avec Access puis dans VB Express 2008 j'ai créé un formulaire qui me permet d'ajouter, modifier et supprimer mes utilisateurs. Mon soucis c'est que pour en ajouter un j'ai le message d'erreur suivant "Impossible pour Update de trouver TableMapping['[USER]'] ou DataTable '[USER]'."
Là je colle ! au début j'ai cru que c'était un problème de syntaxe (ce qu'il m'a d'ailleurs affiché) j'ai donc rajouté les simples côtes entre le mot USER et maintenant j'ai ce message.
J'ai pourtant suivit le tuto " LES BASES POUR SE CONNECTER UNE BASE DE DONNÉES ACCESS AVEC VB.NET" mais rien toujours le même problème.
johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017 24 mars 2008 à 15:25
Voici le code concernant l'ajout de mon utilisateur.
Private cnx As OleDbConnection 'Déclaration de la connexion
Private cmd As OleDbCommand 'Déclaration de l'Objet Commande
Private dta As OleDbDataAdapter 'Déclaration de l'Objet DataAdapter
Private cmdb As OleDbCommandBuilder
Private dts As New DataSet 'Déclaration de l'Objet DataSet
Private dtt As DataTable 'Déclaration de l'Objet DataTable
Private dtc As DataColumn
Private dtr As DataRow
Private rownum As Integer = 0 'Index de parcours dans le DataTable
Private conn As String = "" 'Paramêtres de connexion à la BDD
Private sql As String = "" 'String contenant la 'Requête SQL'
'Initialisation de la chaîne de paramètres pour la connexion
conn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & My.Application.Info.DirectoryPath & "\GPI.mdb;"
'Instanciation d'un Objet Connexion
Cnx = New OleDbConnection
'Donner à la propriété ConnectionString les paramètres de connexion
cnx.ConnectionString = conn
'Ouvrir la connexion
cnx.Open()
'Initialisation de la chaîne contenant l'instruction SQL
sql = "SELECT * FROM [user] ORDER BY USER_NOM"
'Instancier un objet Commande
cmd = New OleDbCommand(sql)
'Instancier un objet Adapter
dta = New OleDbDataAdapter(cmd)
'initialiser l'objet Command
cmd.Connection() = cnx
'Avec l'aide de la propriété Fill du DataAdapter on charge le DataSet
dta.Fill(dts, "user")
'Mettre dans un Objet DataTable une table du DataSet
dtt = dts.Tables("user")
'Création de la fiche utilisateur
dtr = dts.Tables("USER").NewRow
dtr("USER_NOM") = Me.TXT_NOM.Text
dtr("USER_PRENOM") = Me.TXT_PRENOM.Text
dtr("USER_LOGIN") = Me.TXT_LOGIN.Text
dtr("USER_PW") = Me.TXT_PW.Text
'ajout de la ligne dans le DataSet
dts.Tables("USER").Rows.Add(dtr)
'création et exécution du commandbuilder
'pour mettre à jour le DataAdapter
cmdb = New OleDbCommandBuilder(dta)
'mise à jour des données du DataAdapter
'à partir du commandbuilder
Try
dta.Update(dts, "USER") -----------> Le problème est ici
Catch ex As OleDbException
MsgBox(ex.Message)
End Try
'on vide le dataset pour le recréer avec
'les nouvelles données
dts.Clear()
dta.Fill(dts, "USER")
dtt = dts.Tables("USER")
'aller au début du fichier
rownum = 0
'affichage des données dans les texbox
Me.TXT_NOM.Text = dtt.Rows(rownum).Item("USER_NOM")
Me.TXT_PRENOM.Text = dtt.Rows(rownum).Item("USER_PRENOM")
Me.TXT_LOGIN.Text = dtt.Rows(rownum).Item("USER_LOGIN")
Me.TXT_PW.Text = dtt.Rows(rownum).Item("USER_PW")
Me.TXT_QUALIF.Text = dtt.Rows(rownum).Item("USER_QUALIF")
johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017 24 mars 2008 à 16:22
J'ai trouvé le soucis, cela vient du nom de la table, j'ai changé USER --> UTILISATEUR est maintenant cela fonctionne. Je pense que le mot USER est un mot clé et le fait de l'utiliser provoque des conflit.
En revanche, je voulais savoir comment interdire la saisie de valeur dans une combobox ?
je m'explique, toujours dans ma fenêtre utilisateur j'ai une combobox le problème c'est qu'il est possible de saisir des valeurs.
Je voudrais que cette propriété soit désactivé.