Bonjour à tous,
Je n'en suis qu'à mes débuts des SGBD et j'essaie d'écrire quelques simples requêtes. J'ai donc une fonction '
Requete_Execute(...)' qui s'exécute avec comme paramètre String, une séquence SQL (sSQL) :
Code Visual Basic :
Public Function Requete_Execute(myCnx As ADODB.Connection, ByVal sSQL As String) As ADODB.Recordset
'! Nota : myCnx est déjà ouverte
'# Exécution de la requête:
Set Requete_Execute = New ADODB.Recordset
With Requete_Execute
'# (La requète SQL est dans sSQL)
'# L'exécution:
.CursorLocation = adUseClient
.Open sSQL, myCnx, adOpenStatic, adLockReadOnly
End With
'# Gestion des erreurs:
' If Requete_Execute.BOF And Requete_Execute.EOF Then
If Requete_Execute.RecordCount < 1 Then
GoTo Requete_Execute_Fin
End If
'# Par précaution après Open:
'Requete_Execute.MoveLast
Requete_Execute.MoveFirst
Requete_Execute_Fin:
End Function
Ensuite, je lance un bouton de commande pour essayer.
Pour le moment je teste le fichier exemple BIBLIO.MDB donné chez Microsoft.
Dans cette DB, il y a une table "
Authors" avec les champs "
Au_ID","
Author" et "
Year Born".
Voici le bouton de commande
Essai pour tester ma fonction '
Requete_Execute(...)'
Code Visual Basic :
Private Sub CmdEssai_Click()
Dim myRs As ADODB.Recordset, sSQL As String
'! Nota : MaCnx As ADODB.Connection est déjà ouverte (Provider=Microsoft.Jet.OLEDB.4.0)
'# Construction de la requête:
sSQL = "Select * From Authors"
'sSQL = "Select Author From Authors Where Author Like " & """C*"""
'# Envoi et récupération de la requête:
Set myRs = Requete_Execute(MaCnx, sSQL)
'# Puis affichage de la requête dans un LV:
Call LV_Affiche_Recordset(Me.ListView1, myRs)
Set myRs = Nothing
End Sub
(Je ne décris pas la procédure LV_Affiche_Recordset qui n'a que peu d'intérêt dans cet exemple)
Dans un premier temps, je lance la requête sSQL = "
Select * From Authors", et tout s'affiche correctement (donc tous les champs de la table).
Par contre, si je veux donner un critère, par exemple, tous les noms qui commencent par un "C" (ou "c") dans le champ "Author" de la table "Authors" avec la requête "
Select Author From Authors Where Author Like " & ""
"C*""", le résultat est zéro (ma liste est vide, et myRs.RecordCount=0). Alors qu'il existe des "Author" qui commence par la lette 'C'.
Aurais-je écrit une mauvaise syntaxe?
titicar