Problème d'ajout vb6

Problème d'ajout vb6 - VB/VBA/VBS - Programmation

Marsh Posté le 23-04-2008 à 18:01:19    

Bonjour a tous.
Je suis en train de faire une application qui gère mes films.
En ce moment je suis en train de pencher sur l'ajout d'un film, mais il se trouve que j'ai un petit problème.
Algorithmiquement, c'est bon mais je ne vois ou est le problème.Le compilateur me fait Aucun enregistrement en cours et ne veut pas insérer le nouveau film dans la base de donnée. Voici mon code :
 

Code :
  1. Private Sub ajouter_fiche_Click()
  2. Dim maBase As Database
  3. Dim monRecordset As Recordset
  4. Dim cancel As Boolean
  5. 'Connexion à la base de donnée'
  6. Set maBase = OpenDatabase("F:\richaud\Documents and Settings\Richaud Julien\Mes documents\Cours informatique\PTI\VB - Gestion des films\film.mdb" )
  7. 'Va chercher le nom du film'
  8. Set monRecordset = maBase.OpenRecordset( _
  9. "SELECT NomFilm,TitreOriginal,DateSortie,Realisateur,Synopsis,Duree,Image,LibNat,LibelleGenre,NomActeur FROM Film,Acteur,Joue,Nationalite,Genre WHERE NomFilm='" & titre_film.Text & "' AND  Film.NumFilm=Joue.NumFilm AND Joue.NumActeur=Acteur.NumActeur AND Film.CodeGenre=Genre.CodeGenre AND Film.CodeNat=Nationalite.CodeNat  ", dbOpenSnapshot)
  10.  
  11. 'Vérification du champs titre'
  12. If StrComp(titre_film, "", vbTextCompare) = 0 Then
  13.      MsgBox "Le titre du film doit-être renseigné", vbOKOnly + vbExclamation, "Erreur"
  14.      GoTo Fin
  15. End If
  16. 'Vérification du champ genre'
  17. If StrComp(Genre_film, "", vbTextCompare) = 0 Then
  18.     MsgBox "Le genre doit être renseigné", vbOKOnly + vbExclamation, "Erreur"
  19.     GoTo Fin
  20. End If
  21. 'Vérification du champ Nationalité'
  22. If StrComp(Nationnalité_film, "", vbTextCompare) = 0 Then
  23.     MsgBox "La nationalité doit être renseignée", vbOKOnly + vbExclamation, "Erreur"
  24.     GoTo Fin
  25. End If
  26. 'Vérification du champ Réalisateur'
  27. If StrComp(Réalisateur_film, "", vbTextCompare) = 0 Then
  28.     MsgBox "Le réalisateur doit être renseigné", vbOKOnly + vbExclamation, "Erreur"
  29.     GoTo Fin
  30. End If
  31. 'Vérification de la date'
  32. If StrComp(date, "", vbTextCompare) = 0 Then
  33.     MsgBox "La date doit être renseignée", vbOKOnly + vbExclamation, "Erreur"
  34.     GoTo Fin
  35. End If
  36. 'Vérification si le champs date est numérique'
  37. If Not IsNumeric(date) Then
  38.     'Annule la validation de contrôle'
  39.     cancel = True
  40.     MsgBox "Veuillez entrer un nombre !"
  41.     GoTo Fin
  42. End If
  43. 'Vérification de la durée'
  44. If StrComp(Durée_film, "", vbTextCompare) = 0 Then
  45.     MsgBox "La durée doit être renseignée", vbOKOnly + vbExclamation, "Erreur"
  46.     GoTo Fin
  47. End If
  48. 'Vérification du commentaire'
  49. If StrComp(commentaire, "", vbTextCompare) = 0 Then
  50.     MsgBox "Le commentaire doit être renseigné", vbOKOnly + vbExclamation, "Erreur"
  51.     GoTo Fin
  52. End If
  53. 'Vérifier si le film existe déjà'
  54. If monRecordset.RecordCount > 0 Then
  55.     If titre_film.Text = monRecordset!NomFilm Then
  56.         rep = MsgBox("Le film " & titre_film.Text & " existe déjà" )
  57.     End If
  58. Else
  59.     'Mise à jour de la base de donnée'
  60.     maBase.Execute ("INSERT into Film (NomFilm,TitreOriginal,DateSortie,Realisateur,Synopsis,Duree,Image) VALUES ('" & titre_film.Text & "','" & Titre_Original.Text & "','" & date & "','" & Réalisateur_film.Text & "','" & commentaire.Text & "','" & Durée_film.Text & "','" & chemin_fichier_affiche.Text & "')" )
  61.     MsgBox "Le film a été enregistré", vbOKOnly + vbInformation, "Confirmation d'ajout"
  62.    
  63.     monRecordset.MoveLast
  64.     monRecordset.MoveFirst
  65.    
  66. End If
  67. 'Raz des champs'
  68. titre_film.Text = ""
  69. Titre_Original.Text = ""
  70. Genre_film.Text = ""
  71. Nationnalité_film.Text = ""
  72. Réalisateur_film.Text = ""
  73. date.Text = ""
  74. Durée_film.Text = ""
  75. LstAjActeur.Clear
  76. chemin_fichier_affiche.Text = ""
  77. commentaire.Text = ""
  78. 'Fermeture du recordset'
  79. monRecordset.Close
  80. Fin:
  81. End Sub


 
Merci d'avance de vos réponses.

Reply

Marsh Posté le 23-04-2008 à 18:01:19   

Reply

Marsh Posté le 24-04-2008 à 11:03:57    

Sur quelle ligne de code se déclenche l'erreur « aucun enregistrement en cours » ?

Reply

Marsh Posté le 24-04-2008 à 19:03:33    

Sur la ligne du movelast

Reply

Marsh Posté le 25-04-2008 à 14:44:06    

Deux choses à tester :
« If monRecordset Is Nothing » après l'ouverture du recordset par .OpenRecordset  
et
« If Not monRecordset.BOF Then » pour t'assurer que des enregistrements existent dans le recordset et que le pointeur d'enregistrement peut s'y déplacer.
 
tiré de la doc en ligne

Lorsque vous ouvrez un objet Recordset, le premier enregistrement est l'enregistrement actuel et la propriété BOF a la valeur False. Si l'objet Recordset ne contient aucun enregistrement, la propriété BOF a la valeur True, et il n'y a pas d'enregistrement actuel.


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed