{Access}

Fermé
jp - 26 déc. 2009 à 17:29
 jp - 26 déc. 2009 à 17:42
Bonjour,
j ai petit problème avec access 2007 j ai créer une base de donnée avec 3 tables l'un avec un id_utilisateur(clé primaire) et son nom, une autre qui s'appelle Tiers avec id_tiers (clé primaire), id_utilisateur et nom_tiers puis une troisième table prêt qui a comme champ id_prêt (clé primaire), id_tiers, id_utilisateur, montant_prêt et date_prêt donc voila mes trois tables.

J'ai créer un formulaires ou l'utilisateur ce log et je suis parvenu a mettre l'id de l'utilisateur dans une variable global car après suivant sont id il pourra ou ne pourra pas accéder a certaines choses.
donc il arrive sur un formulaire accueil où il peut décider de rentrer un prêt, il tombe alors sur un autre formulaire : il doit rentrer le nom du tiers le montant du prêt et la date du prêt donc pour ce formulaire j ai mit comme source pour ce formulaire ma table prêt. jusque la aucun souci c'est après que sa ce complique
j'ai une liste déroulante qui me permet de pouvoir choisir les différents tiers suivant leur nom et s'il ne se trouve pas la personne choisit il écrit le nom de la personne et clique sur le bouton ajouter a coter et le nom du tiers est ajouter dans la table tiers. pour la date et le montant cela marche, leurs sources de contrôle étant montant_prêt et date_prêt. sauf que pour ajouter mon prêt il me faut mon id_utilisateur et mon id_tiers alors j arrive a récupérer ces ids (qui sont des entiers) dans des variables mais je n'arrive pas après a les mettre dans id_utilisateur et id_tiers et donc il me dit qu'il manque ces valeurs. je suis désespéré quelqu'un pourrait m'aider je joint le code ci dessous

Private Sub Btannule_Click()

Dim reponse As Integer

reponse = MsgBox("Voulez-vous vraiment annuler la création d'un avoir ?", vbQuestion + vbYesNo, "Annulation")
If reponse = vbYes Then

DoCmd.Close acForm, "frmCreerAVoir"

End If

End Sub

Private Sub BtCreer_Click()
Dim nomTier As String
Dim DateAVoir As String
Dim MontantAvoir As String

Mod_login.ValeurNomUtilisateur = txtNomTier
MsgBox (ValeurNomUtilisateur)
MsgBox (txtNomTier.Value)


'sql = "SELECT PRÊT.IDENTIFIANT_UTILISATEUR, PRÊT.IDENTIFIANT_TIERS FROM PRÊT WHERE PRÊT.IDENTIFIANT_UTILISATEUR = ValeurVarNumUtilisateur()AND PRÊT.IDENTIFIANT_TIERS = ValeurVarNomUtilisateur() ;"
'Set rs = CurrentDb.OpenRecordset(sql)
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO PRÊT (IDENTIFIANT_TIERS ) VALUES ('" & ValeurVarNomUtilisateur() & "')")

If IsNull(Me!DATE_PRÊT) And IsNull(Me!MONTANT_PRÊT) And IsNull(Me!txtNomTier) Then
MsgBox "Veuillez remplir les champs pour poursuivre !", vbExclamation, "Champs vides"
Else
If Not IsNull(Me!txtNomTier) Then
If Not IsNull(Me!DATE_PRÊT) Then
If Not IsNull(Me!MONTANT_PRÊT) Then
Me.Requery
AjouterAvoir
Else
MsgBox "Veuillez saisir un montant pour l'avoir !", vbExclamation, "Saisie montant"
End If
Else
blnEnregistrable = False
MsgBox "Veuillez saisir une date pour l'avoir!", vbExclamation, "Saisie date de création"
End If
Else
MsgBox "Veuillez saisir votre nom de tier", vbExclamation, "Saisir non tier"
End If
End If
End Sub


Private Sub AjouterAvoir()
Dim reponse As Integer

reponse = MsgBox("Voulez-vous vraiment ajouter un avoir ?", vbQuestion + vbYesNo, "Ajouter un avoir")
If reponse = vbYes Then
DoCmd.GoToRecord , , acNewRec
reponse = MsgBox("Avoir ajouté. Merci", vbOKOnly, "Avoir créé")
DoCmd.Close acForm, "frmCreerAvoir"
'DoCmd.OpenForm "frmAccueil", acNormal, , , acFormEdit, acDialog
Else
End If
End Sub
Private Sub txtNomTier_NotInList(NewData As String, Response As Integer)


If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des prénoms ?", _
vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO TIERS (NOM_COMPLET_TIERS, IDENTIFIANT_UTILISATEUR ) VALUES ('" & NewData & "', '" & ValeurVarNumUtilisateur() & "')")
Response = acDataErrAdded

DoCmd.SetWarnings True


Else
Response = acDataErrContinue
txtNomTier.Undo
End If

Mod_login.ValeurNomUtilisateur = txtNomTier
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO PRÊT (IDENTIFIANT_TIERS ) VALUES ('" & ValeurVarNomUtilisateur() & "')")

Dim sql As String
Dim rs As DAO.Recordset

sql = "SELECT PRÊT.IDENTIFIANT_TIERS FROM PRÊT WHERE PRÊT.IDENTIFIANT_TIERS = ValeurVarNomUtilisateur() ;"
Set rs = CurrentDb.OpenRecordset(sql)

End Sub
Private Sub btAjouterTiers_Click()
Me.txtNomTier.Requery

End Sub

merci cordialement
Joyeux Noël !!

1 réponse

heu désoler mais je viens de ma percevoir me code avec des erreur mais ils ne fonctionne toujours pas voici la version corriger:
Private Sub Btannule_Click()

Dim reponse As Integer

reponse = MsgBox("Voulez-vous vraiment annuler la création d'un avoir ?", vbQuestion + vbYesNo, "Annulation")
If reponse = vbYes Then

DoCmd.Close acForm, "frmCreerAVoir"

End If

End Sub

Private Sub BtCreer_Click()
Dim nomTier As String
Dim DateAVoir As String
Dim MontantAvoir As String

Mod_login.ValeurNumtiers = txtNomTier
MsgBox (ValeurNumtiers)
MsgBox (txtNomTier.Value)

Dim sql as string
Dim rs As DAO.Recordset
'sql = "SELECT PRÊT.IDENTIFIANT_UTILISATEUR FROM PRÊT WHERE PRÊT.IDENTIFIANT_UTILISATEUR = ValeurVarNumUtilisateur() ;"
'Set rs = CurrentDb.OpenRecordset(sql)
' j ai trouevr ces deux méthodes mais aucune ne marche
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO PRÊT (IDENTIFIANT_TIERS ) VALUES ('" & ValeurVarNumtiers() & "')")

If IsNull(Me!DATE_PRÊT) And IsNull(Me!MONTANT_PRÊT) And IsNull(Me!txtNomTier) Then
MsgBox "Veuillez remplir les champs pour poursuivre !", vbExclamation, "Champs vides"
Else
If Not IsNull(Me!txtNomTier) Then
If Not IsNull(Me!DATE_PRÊT) Then
If Not IsNull(Me!MONTANT_PRÊT) Then
Me.Requery
AjouterAvoir
Else
MsgBox "Veuillez saisir un montant pour l'avoir !", vbExclamation, "Saisie montant"
End If
Else
blnEnregistrable = False
MsgBox "Veuillez saisir une date pour l'avoir!", vbExclamation, "Saisie date de création"
End If
Else
MsgBox "Veuillez saisir votre nom de tier", vbExclamation, "Saisir non tier"
End If
End If
End Sub


Private Sub AjouterAvoir()
Dim reponse As Integer

reponse = MsgBox("Voulez-vous vraiment ajouter un avoir ?", vbQuestion + vbYesNo, "Ajouter un avoir")
If reponse = vbYes Then
DoCmd.GoToRecord , , acNewRec
reponse = MsgBox("Avoir ajouté. Merci", vbOKOnly, "Avoir créé")
DoCmd.Close acForm, "frmCreerAvoir"
'DoCmd.OpenForm "frmAccueil", acNormal, , , acFormEdit, acDialog
Else
End If
End Sub


Private Sub txtNomTier_NotInList(NewData As String, Response As Integer)


If MsgBox("Voulez-vous ajouter " & NewData & " à la liste des prénoms ?", _
vbYesNo + vbQuestion + vbDefaultButton2, "Ajout") = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunSQL ("INSERT INTO TIERS (NOM_COMPLET_TIERS, IDENTIFIANT_UTILISATEUR ) VALUES ('" & NewData & "', '" & ValeurVarNumUtilisateur() & "')")
Response = acDataErrAdded

DoCmd.SetWarnings True


Else
Response = acDataErrContinue
txtNomTier.Undo
End If


End Sub


Private Sub btAjouterTiers_Click()
Me.txtNomTier.Requery

End Sub
0