Bonjour à tous
Dans une application qui gère une BDD de DVD j'ai 2 forms d'interrogation, un pour trouver un titre et un pour trouver un rôle
voici le code pour titre
et le code pour rôle
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Public Class InterroTitre Private Sub Titre_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Titre.KeyDown Dim L As String = "'" If InStr(Titre.Text, L) <> 0 Then MsgBox("Ne pas saisir ' si un titre en contient !", 48, "Collection de DVD") Titre.Text = Nothing End If If (e.KeyCode = Keys.Enter) Then e.SuppressKeyPress = True RésultatTitre.Show() End If End Sub Private Sub BtnFermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFermer.Click Close() End Sub End Class
Ensuite voici les codes pour les forms du résulatat trouvé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Public Class InterroRole Private Sub TxtRole_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TxtRole.KeyDown If (e.KeyCode = Keys.Enter) Then e.SuppressKeyPress = True RésultatRole.Show() End If End Sub Private Sub BtnFermer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFermer.Click Close() End Sub End Class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Imports System Imports System.Data Imports System.Data.OleDb Imports Microsoft.VisualBasic Public Class RésultatRole Inherits System.Windows.Forms.Form Private WithEvents MonRS As New ADODB.Recordset Private Sub RésultatRole_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TxtRole.Text = InterroRole.TxtRole.Text Me.Text = "Films avec '" & TxtRole.Text & "'" & " comme rôle" Dim MaConn As New ADODB.Connection MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _ "C:\Access\DvdData.mdb" MaConn.Open() With MonRS .ActiveConnection = MaConn .CursorLocation = ADODB.CursorLocationEnum.adUseClient .CursorType = ADODB.CursorTypeEnum.adOpenKeyset .LockType = ADODB.LockTypeEnum.adLockReadOnly .Open("SELECT * FROM Vidéo WHERE Role1 like '%" & TxtRole.Text & "%' OR Role2 like '%" & TxtRole.Text & "%'" & _ "OR Role3 like '%" & TxtRole.Text & "%' OR Role4 like '%" & TxtRole.Text & "%'" & _ "OR Role5 like '%" & TxtRole.Text & "%' OR Role6 like '%" & TxtRole.Text & "%'" & _ "OR Role7 like '%" & TxtRole.Text & "%' OR Role8 like '%" & TxtRole.Text & "%'" & _ "OR Role9 like '%" & TxtRole.Text & "%' OR Role10 like '%" & TxtRole.Text & "%'") End With Dim nbrecords As Integer nbrecords = MonRS.RecordCount If nbrecords = 0 Then MsgBox("Pas de film avec ce rôle !", 48, "Collection de DVD") Me.Close() End If BtnFermer.Focus() BtnFermer.Select() End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Imports System Imports System.Data Imports System.Data.OleDb Imports Microsoft.VisualBasic Public Class RésultatTitre Inherits System.Windows.Forms.Form Private WithEvents MonRS As New ADODB.Recordset Private Sub RésultatTitre_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load TxtInterroTitre.Text = InterroTitre.Titre.Text Me.Text = "Films contenant les mots '" & TxtInterroTitre.Text & "'" Dim MaConn As New ADODB.Connection MaConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & _ "C:\Access\DvdData.mdb" MaConn.Open() With MonRS .ActiveConnection = MaConn .CursorLocation = ADODB.CursorLocationEnum.adUseClient .CursorType = ADODB.CursorTypeEnum.adOpenKeyset .LockType = ADODB.LockTypeEnum.adLockReadOnly .Open("SELECT * FROM Vidéo WHERE TitreFilm like '%" & TxtInterroTitre.Text & "%'") End With Dim nbrecords As Integer nbrecords = MonRS.RecordCount If nbrecords = 0 Then MsgBox("Pas de titre de film contenant ce mot!", 48, "Collection de DVD") Me.Close() End If BtnFermer.Focus() BtnFermer.Select() End Sub
Quand je cherche un rôle qui n'existe pas, j'ai bien le message , je ferme donc le form InterroRole et tout va bien
Par contre pour titre, quand rien ne correspond j'ai bien le message et c'est quand je ferme le form interroTitre que ça se plante
avec un message comme quoi le form résultatTitre n'existe pas
J'ai comparé les codes mot à mot et je ne vois pas mon erreur
alors si vous avez une idée elle sera comme toujours la bienvenue
Merci d'avance
Partager