Bonjour,
Je fais suite à l'un de mes posts sur la copie d'un recordset depuis Access vers Excel. Grâce à l'aide apportée sur ce post, j'utilisais une connexion DAO et des requêtes SQL direct vers une base Oracle: tout fonctionnait très bien et rapidement. Depuis peu, j'ai dû augmenter le nombre d'appels à ma procédure qui copie mes recordsets et j'ai des plantages de temps à autre (même pas en systématique !). J'ai cherché sur internet, et j'ai vu d'autres cas plus ou moins proches du mien. Au final, leur solution était de passer par une connexion ADO et non DAO. Donc je me suis lancée mais j'ai un souci technique d'où mon appel à l'aide.
Voici ma tentative: (ce code est placé dans ma base Access qui contient les tables liées à une base Oracle et les requêtes SQL direct)
What's the problem ?
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 Sub LaunchQuery(xlWkb As excel.Workbook, MyQuery As String, MyWorksheet As String, MyDynamicRange As String, MyRangeStart As String) Dim cnn As ADODB.Connection Set cnn = CurrentProject.Connection Debug.Print cnn.Provider 'ça m'indique Microsoft.ACE.OLEDB.12.0 Dim rst As ADODB.Recordset Set rst = New ADODB.Recordset Dim strSQL As String strSQL = "SELECT * from " & MyQuery 'MyQuery est une requete SQL direct rst.Open strSQL, cnn, adOpenForwardOnly, adLockReadOnly, adCmdText xlWkb.Worksheets(MyWorksheet).Range(MyRangeStart).CopyFromRecordset rst 'ça m'indique ODBC l'appel a échoué erreur -2147467259 Set rst = Nothing Set cnn = Nothing End Sub
Merci par avance pour votre aide !
PS: à terme, j'ai l'intention de sortir les paramètres de connexion de ma procédure et a les passer en arguments, car je ne veux pas ouvrir/fermer ma connexion des centaines de fois, mais là, c'est pour tester déjà la copie du recordset.
Partager