Erreur Base de donnée

Signaler
Messages postés
16
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
2 octobre 2008
-
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
-
Voila, je débute en VB6 et aimerais créer un programme pour une compagnie qui utilise une base de donnée. Il s'agit d'entrer des donnée dans les champs et pouvoir le consulter plus tard
voila ce que jai réussi a produire mais chaque fois que je vien pour l'ouvrir j'obtien le message
Ambigus name detected... je ne sais trop quoi faire
j'ai ajouter au début du projet la référence Microsoft DAO 2.5/3.5 compatibility library
merci
ma base de donnée se nomme employe97 et la table a linterieur se nomme employe
ce serait tres aprécié si quelqu'un pouvait m'aider

voici mon code
dans le module jai inscrit ..........

Public rs As Database
Public rs As Recordset
Public sql As String

et dans la form1...........

Private Sub cmdAjouter_Click()
sql = "select * from employe" ''' On séléctionne tous les champs de la table
Set rs = db.OpenRecordset(sql, dbOpenDynaset) ''' ici on est bien en mode écriture (dbOpenDynaset)


rs.AddNew '''Pour ajouter un enregistrement


rs.Fields("Nom") = txtNom.Text
rs.Fields("prenom") = txtPrenom.Text
rs.Fields("Salaire") = txtSalaire.Text


rs.Update 'Une fois les valeurs définies, on met à jour
rs.Close




End Sub




Private Sub cmdConsulter_Click()
sql = "select * from employe where nom='" & txtNom.Text & "' " '''Remarqué la présence de ' obligatoire pour le bon fonctionnemnt
Set rs = db.OpenRecordset(sql, dbOpenSnapshot)


txtNom.Text = rs.Fields("Nom")
txtPrenom.Text = rs.Fields("Prenom")
txtSalaire.Text = rs.Fields("Salaire")


End Sub


Private Sub Form_Load()
Set db = OpenDatabase(App.Path & "\employe97.mdb")


End Sub

5 réponses

Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Salut,

Public rs As Database
Public rs As Recordset
Alors, rs database ou recordset ?

je suppose que c' est
Public db As Database
Public rs As Recordset

<hr />I LIKE TO BE HERE WHEN I CAN .

* Rolling   
Messages postés
112
Date d'inscription
dimanche 24 avril 2005
Statut
Membre
Dernière intervention
5 décembre 2010

Tu coches l'ensembles des librairies ''Microsoft DAO''
''microsoft dao3.6 object '' etc........
Vraisemblablement ça doit fonctionner ! ça devrait !!
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
non browser64 ...
une erreur d' ambiguité,s' il y' en a, se situe toujours au niveau des declarations.
Dans ce cas précis, c' est rs qui est doublement declaré.Une fois comme Database
et une fois comme Recordset. il ne sait pas lequel retenir.
De plus db n' est pas declaré.Alors c' est juste une question d' inattention.

<hr />I LIKE TO BE HERE WHEN I CAN .

* Rolling   
Messages postés
16
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
2 octobre 2008

Merci chaibat05, c'était en effet une erreur d'innatention avec db as database tout fonctionne, par contre y a t'il moyen de lui spécifié que si un champ est manquant un msgbox apparaisse et ensuite qu'on puisse continuer a entrer des données, car avec les if txtnom.text = "" then, bla bla bla, il y a erreur par la suite
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Pour ce qui est de la vérif des données, il faut juste savoir
bien gérer l' erreur.Ou bien en faire une fonction pour voir si
ça correspond ou pas.


Function Verif() As Boolean
   If txtNom.Text="" Then
       MsgBox "Nom manquant !",VbOkOnly+VbInformation,"..."
       txtNom.SetFocus
       Exit Function
   End If
   If txtPrenom.Text="" Then
       MsgBox "Prénom manquant !",VbOkOnly+VbInformation,"..."
       txtPreom.SetFocus
       Exit Function
   End If
   If txtSalair.Text="" Then
       MsgBox "Montant manquant !",VbOkOnly+VbInformation,"..."
       txtSalair.SetFocus
       Exit Function
   End If
    'Normalement salaire est de type numérique.
    'Il faut donc vérifier aussi si ça correspond au même format que ton champ.
    'Ce format peut tout aussi bien être controlé au moment de la saisie.
  
     Verif=True  ' => tout est Ok

End Function


NB: à mon avis il faut aussi vérifier si l' enregistrement (Nom+Prenom) n' éxiste pas déjà.
A ce qu' il parait , c' est ta clé primaire.
---
> Pour l' enregistrement
Private Sub cmdAjouter_Click()
    'tu commences donc par vérifier...
     If Verif=False Then Exit Sub
    'toutes les erreurs étant signalées au niveau de la fonction,un Exit Sub suffit donc.
    '
   's' il continues c' est que tout est OK
   'Mais il se peut qu' il y' ait une autre erreur au niveau qui suit 
   
   'tu ajoutes donc
   On Error Got Err_Add
    sql = "select * from employe" 
    Set rs = db.OpenRecordset(sql, dbOpenDynaset) ' 


   rs.AddNew
   rs.Fields("Nom") = txtNom.Text
   rs.Fields("prenom") = txtPrenom.Text
   rs.Fields("Salaire") = txtSalaire.Text 
   rs.Update
   rs.Close
Exit Sub '=>  il n' a pas eu d' erreur


Err_Add:  '=>il y a eu erreur
   MsgBox Err.Description 'Pour avoir une description et donc une idée de l' erreur
End Sub











<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />