[Access VBA] Erreur générer rapport rtf
Maxime
-
blux Messages postés 27121 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27121 Date d'inscription Statut Modérateur Dernière intervention -
Voici ma fonction :
Private Sub Commande4_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim BaseSQL As String
Dim strSQL As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT DISTINCT [Dealer/Distributor Number] FROM Query_Active_Dealer_List_Update")
Set qdf = dbs.QueryDefs("Query_Active_Dealer_List_Update")
BaseSQL = qdf.SQL
With rst
Do Until .EOF
strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] =" & ![Dealer/Distributor Number]
qdf.SQL = strSQL
DoCmd.OutputTo acOutputReport, "Main_Report", "RichTextFormat", "C:\Documents and Settings\larocma\Dealer_Scorecards\" & ![Dealer/Distributor Number] & ".doc"
.MoveNext
Loop
.Close
End With
qdf.SQL = BaseSQL
Set qdf = Nothing
Set rst = Nothing
Set dbs = Nothing
End Sub
Le problème se situe dans la ligne strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] =" & ![Dealer/Distributor Number]
Si je laisse ![Dealer/Distributor Number] comme ca j'obtient une erreur et aucun rapport n'est généré. Par contre, si je met "[Dealer/Distributor Number]" comme ca en paramètre et que j'entre manuellement les numeros de dealer, j'obtient des fichiers correctement.
Quelqu'un peut m'aider à résoudre ce probleme ?
Max
Private Sub Commande4_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim BaseSQL As String
Dim strSQL As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT DISTINCT [Dealer/Distributor Number] FROM Query_Active_Dealer_List_Update")
Set qdf = dbs.QueryDefs("Query_Active_Dealer_List_Update")
BaseSQL = qdf.SQL
With rst
Do Until .EOF
strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] =" & ![Dealer/Distributor Number]
qdf.SQL = strSQL
DoCmd.OutputTo acOutputReport, "Main_Report", "RichTextFormat", "C:\Documents and Settings\larocma\Dealer_Scorecards\" & ![Dealer/Distributor Number] & ".doc"
.MoveNext
Loop
.Close
End With
qdf.SQL = BaseSQL
Set qdf = Nothing
Set rst = Nothing
Set dbs = Nothing
End Sub
Le problème se situe dans la ligne strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] =" & ![Dealer/Distributor Number]
Si je laisse ![Dealer/Distributor Number] comme ca j'obtient une erreur et aucun rapport n'est généré. Par contre, si je met "[Dealer/Distributor Number]" comme ca en paramètre et que j'entre manuellement les numeros de dealer, j'obtient des fichiers correctement.
Quelqu'un peut m'aider à résoudre ce probleme ?
Max
A voir également:
- [Access VBA] Erreur générer rapport rtf
- Rapport erreur windows - Guide
- Plan rapport de stage - Guide
- Comment générer un qr code - Guide
- Acer quick access ✓ - Forum PC portable
- Lettore .rtf - Télécharger - Bureautique
4 réponses
Salut,
Je pense qu'il faut que tu mettes des '' pour indiquer que la comparaison se fait sur une chaîne. Et n'oublie pas non plus de fermer le SQL par un ;
Mets des simple quote ('), c'est plus lisible que d'empiler les double quotes (guillemets """").
Si [Dealer/Distributor Number] est numérique, alors rajoute seulement le ;
Ca donnerait ça (selon moi):
Je pense qu'il faut que tu mettes des '' pour indiquer que la comparaison se fait sur une chaîne. Et n'oublie pas non plus de fermer le SQL par un ;
Mets des simple quote ('), c'est plus lisible que d'empiler les double quotes (guillemets """").
Si [Dealer/Distributor Number] est numérique, alors rajoute seulement le ;
Ca donnerait ça (selon moi):
strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] = '" & ![Dealer/Distributor Number] & "';"Attention cependant si [Dealer/Distributor Number] contient un nom avec une ou plusieurs simple quotes, c'est l'explosion assurée ! ;-)
J'ai essayé ton code mais maintenant j'obtient une erreur différente et je ne connais pas sa provenance.
Voici le code modifié :
Private Sub Commande4_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim BaseSQL As String
Dim strSQL As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT DISTINCT [Dealer/Distributor Number] FROM Query_Active_Dealer_List_Update")
Set qdf = dbs.QueryDefs("Query_Active_Dealer_List_Update")
BaseSQL = qdf.SQL
With rst
Do Until .EOF
strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] = '" & ![Dealer/Distributor Number] & "';"
qdf.SQL = strSQL
DoCmd.OutputTo acOutputReport, "Main_Report", "RichTextFormat", "C:\Documents and Settings\larocma\Dealer_Scorecards\" & ![Dealer/Distributor Number] & ".doc"
.MoveNext
Loop
.Close
End With
qdf.SQL = BaseSQL
Set qdf = Nothing
Set rst = Nothing
Set dbs = Nothing
End Sub
Erreur d'exécution '3126': Mise entre crochets non valide du nom '[Dealer/Distributor Nub
WHERE [Dealer/Distributor Number]'
Voici le code modifié :
Private Sub Commande4_Click()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim BaseSQL As String
Dim strSQL As String
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT DISTINCT [Dealer/Distributor Number] FROM Query_Active_Dealer_List_Update")
Set qdf = dbs.QueryDefs("Query_Active_Dealer_List_Update")
BaseSQL = qdf.SQL
With rst
Do Until .EOF
strSQL = Left(BaseSQL, Len(BaseSQL) - 3) & " WHERE [Dealer/Distributor Number] = '" & ![Dealer/Distributor Number] & "';"
qdf.SQL = strSQL
DoCmd.OutputTo acOutputReport, "Main_Report", "RichTextFormat", "C:\Documents and Settings\larocma\Dealer_Scorecards\" & ![Dealer/Distributor Number] & ".doc"
.MoveNext
Loop
.Close
End With
qdf.SQL = BaseSQL
Set qdf = Nothing
Set rst = Nothing
Set dbs = Nothing
End Sub
Erreur d'exécution '3126': Mise entre crochets non valide du nom '[Dealer/Distributor Nub
WHERE [Dealer/Distributor Number]'