Comment récupérér les erreurs générées lors d'un recordset.addNew ??

Signaler
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007
-
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007
-
J pense que le titre est assez explicite !
Mais je vous donne mon code tt simple :

Dim rstNewProduit As ADODB.Recordset
Set rstNewProduit = New ADODB.Recordset

rstNewProduit.Open "Produit", AdoAquatec, , , adCmdTable

With rstNewProduit
.AddNew
.Fields("id_type") = cmbType(1).Text
.Fields("id_taille") = cmbTaille(1).Text
.Fields("reference") = txtFields(1).Text
.Fields("reference_four") = txtFields(2).Text
.Fields("libelle_fr") = txtFields(3).Text
.Fields("libelle_an") = txtFields(4).Text
.Fields("description") = txtFields(5).Text
.Fields("prix_achat") = Val(txtFields(6).Text)
.Fields("prix_revient") = Val(txtFields(7).Text)
.Fields("prix_vente") = Val(txtFields(8).Text)
.Fields("quantité") = Val(txtFields(9).Text)
.Fields("stock_mini") = Val(txtFields(10).Text)
.Update
End With

et dc si l'utilisateur ne precise pas un champ obligatoire (not null), ca va me generer une erreur mais comment la récupérér et l'afficher ?
merci d'avance

3 réponses

Messages postés
437
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
10 août 2010
2
Le même code dans ta fonction

Sub MaFonction()

On Error Goto err_MaFonction

Dim rstNewProduit As ADODB.Recordset
Set rstNewProduit = New ADODB.Recordset

rstNewProduit.Open "Produit", AdoAquatec, , , adCmdTable

With rstNewProduit
.AddNew
.Fields("id_type") = cmbType(1).Text
.Fields("id_taille") = cmbTaille(1).Text
.Fields("reference") = txtFields(1).Text
.Fields("reference_four") = txtFields(2).Text
.Fields("libelle_fr") = txtFields(3).Text
.Fields("libelle_an") = txtFields(4).Text
.Fields("description") = txtFields(5).Text
.Fields("prix_achat") = Val(txtFields(6).Text)
.Fields("prix_revient") = Val(txtFields(7).Text)
.Fields("prix_vente") = Val(txtFields(8).Text)
.Fields("quantité") = Val(txtFields(9).Text)
.Fields("stock_mini") = Val(txtFields(10).Text)
.Update
End With

end_MaFonction:
Exit Function

err_MaFonction:
' Ici arrive l'erreur à traiter ...
Msgbox Err.Number & VbCrLf & Err.Description
Resume end_MaFonction
End Function
Messages postés
437
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
10 août 2010
2
Oups j'ai écrit une bétise ... il faut lire

Function MaFonction au lieu de Sub MaFonction
Messages postés
165
Date d'inscription
vendredi 9 avril 2004
Statut
Membre
Dernière intervention
5 octobre 2007

Ok merci mais g trouvé autre chose :

Dim rstNewProduit As ADODB.Recordset

Set rstNewProduit = New ADODB.Recordset
rstNewProduit.Open "Produit", AdoAquatec, adOpenKeyset, adLockOptimistic, adCmdTable
On Error GoTo err_insert

With rstNewProduit
.AddNew
.Fields("id_type") = cmbType(1).Text
.Fields("id_taille") = cmbTaille(1).Text
.Fields("reference") = ReturnNullIfVide(txtFields(1).Text)
.Fields("reference_four") = ReturnNullIfVide(txtFields(2).Text)
.Fields("libelle_fr") = ReturnNullIfVide(txtFields(3).Text)
.Fields("libelle_an") = ReturnNullIfVide(txtFields(4).Text)
.Fields("description") = ReturnNullIfVide(txtFields(5).Text)
.Fields("prix_achat") = ReturnNullIfVide(txtFields(6).Text)
.Fields("prix_revient") = ReturnNullIfVide(txtFields(7).Text)
.Fields("prix_vente") = ReturnNullIfVide(txtFields(8).Text)
.Fields("quantite") = ReturnNullIfVide(txtFields(9).Text)
.Fields("stock_mini") = ReturnNullIfVide(txtFields(10).Text)
.Update
End With

MsgBox "L'article " & txtFields(3) & " réf. " & txtFields(1) & vbNewLine & "a été ajouté avec succès dans la base", vbInformation, "Succès de l'opération"

Unload Me
Exit Sub

err_insert:

If AdoAquatec.Errors.Count > 0 Then
Select Case AdoAquatec.Errors.Item(0).Number
Case ERREUR_NULL
MsgBox "Vous avez oubliez de spécifier un champ obligatoire", vbExclamation, "Erreur lors de l'insertion dans la base"
Case ERREUR_TYPE
MsgBox "Les prix sont des nombres rééls (avec une , et non un .)", vbExclamation, "Erreur lors de l'insertion dans la base"
Case Else
MsgBox "Description erreur :" & vbNewLine & AdoAquatec.Errors.Item(0).Description, vbExclamation, "Erreur lors de l'insertion dans la base"
End Select
Else
MsgBox Err.Description
End If