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

cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007 - 16 juin 2004 à 10:56
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007 - 16 juin 2004 à 11:37
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

cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
16 juin 2004 à 11:22
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
0
cs_PhilippeE Messages postés 437 Date d'inscription mercredi 18 décembre 2002 Statut Membre Dernière intervention 10 août 2010 2
16 juin 2004 à 11:22
Oups j'ai écrit une bétise ... il faut lire

Function MaFonction au lieu de Sub MaFonction
0
cs_ymerej Messages postés 165 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 octobre 2007
16 juin 2004 à 11:37
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
0