Jai un vrai petit défi !

Frank19 Messages postés 65 Date d'inscription mardi 27 novembre 2001 Statut Membre Dernière intervention 24 juin 2010 - 13 déc. 2002 à 02:56
PatriceVB Messages postés 562 Date d'inscription dimanche 16 décembre 2001 Statut Modérateur Dernière intervention 26 décembre 2007 - 15 déc. 2002 à 11:37
J'explique la situation :
Ce que je dois faire c'est supprimé tous les spectacles(incluant les représentations) ainsi que toutes les réservations(incluant les données du client) des spactacles dont la date de représentation est passée.

Voici la structure de mes tables :
Spectacle
no_spectacle
...

Représentation
no_representation
no_spectacle
...

billet
no_billet
no_réservation
no_représentation
...

Reservation
no_reservation
no_client
...

client
no_client
...

spectacle.no_spectacle est lié avec representation.no_spectacle. [1..N]

representation.no_representation est lié avec billet.no_representation [1..N]

reservation.no_reservation est lié avec billet.no_reservation [1..N]

client.no_client est lié avec reservation.no_client
[1..N]

/*Jai commencé le code mais je suis blocqué quand jviens pour supp. les réservations. Voici mon code :*/

Private Sub btn_detruire_rep_passée_Click()
Dim Connect_Spectacles As ADODB.Connection
Dim Recordset_Spectacles As ADODB.Recordset
Dim Connect_Representation As ADODB.Connection
Dim Recordset_Representation As ADODB.Recordset
Dim Connect_Reservation As ADODB.Connection
Dim Recordset_Reservation As ADODB.Recordset
Dim Connect_Billet As ADODB.Connection
Dim Recordset_Billet As ADODB.Recordset
Dim numero As Integer
Dim trouve As Boolean
Dim Connect As String

Connect = "Provider=Microsoft.jet.oledb.4.0; data source =" & "c:\windows\bureau\billet\Travail Billetterie.mdb"

Set Connect_Spectacles = New ADODB.Connection
Set Recordset_Spectacles = New ADODB.Recordset
Set Connect_Representation = New ADODB.Connection
Set Recordset_Representation = New ADODB.Recordset
Set Connect_Reservation = New ADODB.Connection
Set Recordset_Reservation = New ADODB.Recordset
Set Connect_Billet = New ADODB.Connection
Set Recordset_Billet = New ADODB.Recordset

Connect_Spectacles.Open Connect
Connect_Representation.Open Connect
Connect_Reservation.Open Connect
Connect_Billet.Open Connect
'Je sélectionne tous les spectacles
Recordset_Spectacles.Open "select * from Spectacle", Connect_Spectacles, adOpenDynamic, adLockOptimisticIf Not (Recordset_Spectacles.EOF True And Recordset_Spectacles.BOF True) Then
Recordset_Spectacles.MoveFirst
'Je parcours tous les spectacles de la bd
While Recordset_Spectacles.EOF = False
trouve = False
'Je sélectionne tous les représentation de ce spectacle.
Recordset_Representation.Open "select * from Representation where no_spectacle = " & Str(Recordset_Spectacles("no_spectacle")), Connect_Representation, adOpenDynamic, adLockOptimistic If Not (Recordset_Representation.EOF True And Recordset_Representation.BOF True) Then
Recordset_Representation.MoveFirst
'Pour toutes les représentations, je vais vérifié la date While trouve False And Recordset_Representation.EOF False
If Recordset_Representation("Date") > Date Then
'S'il trouve un spectacle dont la date et plus tard ... on ne supprime
'pas le spectacle dans ce cas la.
trouve = True
End If
Recordset_Representation.MoveNext
Wend
'Si toutes les représentations sont passées dates ...
If trouve = False Then
Recordset_Representation.Close
'Sélectionne toutes les représentations du spectacle en question
Recordset_Representation.Open "select * from Representation where no_spectacle = " & Str(Recordset_Spectacles("no_spectacle")), Connect_Representation, adOpenDynamic, adLockOptimistic
Recordset_Representation.MoveFirst
'Bon ici j'allais supprimé toutes les billets de chaque représentation
'Mais le probleme en fesant sa c'est que je ne connais pu les no_reservation a
'supprimé.
'Quelqu'un sait ce que je pourrais faire ?!
'Le code si dessous ne fonctionne pas toute a faite :\
While Recordset_Representation.EOF = False
Recordset_Billet.Open "select * from billet where no_representation = " & Str(Recordset_Representation("no_representation")), Connect_Billet, adOpenDynamic, adLockOptimistic
If Recordset_Billet.EOF = False Then
Recordset_Billet.MoveFirst
While Recordset_Billet.EOF = False
'ERREUR D'INTÉGRITÉ ICI :\
numero = Recordset_Billet("no_reservation")
Recordset_Billet.Delete
Connect_Reservation.Execute "delete from reservation where reservation.no_reservation = " & numero
Wend
End If
Recordset_Billet.Close
Connect_Billet.Execute "delete from Billet where no_representation = " & Str(Recordset_Representation("no_representation"))
Recordset_Representation.MoveNext
Wend
Connect_Representation.Execute "delete from Representation where no_spectacle = " & Str(Recordset_Spectacles("no_spectacle"))
'Connect_Spectacles.Execute "delete from Spectacle where no_spectacle = " & Str(Recordset_Spectacles("no_spectacle"))
End If
End If
Recordset_Spectacles.MoveNext
Recordset_Representation.Close
Wend
End If

End Sub

1 réponse

PatriceVB Messages postés 562 Date d'inscription dimanche 16 décembre 2001 Statut Modérateur Dernière intervention 26 décembre 2007
15 déc. 2002 à 11:37
Intégrité référentielle !!!
Tu essyaes de supprimer une occurence de reservations alors que la représentation existe toujours. Pour pallier à ce b 2 soluces :
tu supprime la représentation et tu supprimes ensuite la réservation.
Ou alors tu supprimes l'intégrité référentielle.
@+
0
Rejoignez-nous