Bonjour,
Je souhaiterais obtenir un résulat obtenu par une requête sql avec ms-query dans une procédure vba, et je sèche quelque peu.
Ma requête ms-query :
SELECT BALANCE.COMPTES, BALANCE.INTITULE, BALANCE.SOLDE, comptes.NATU
FROM `C:\evolution\SOCIETE`\BALANCE.DBF BALANCE, `C:\evolution\SOCIETE`\comptes.dbf comptes
WHERE comptes.COMP = BALANCE.COMPTES AND ((comptes.NATU<>'0'))
La requête fonctionne sans problème.
Mais j'aimerais pouvoir rendre variable le répertoire source des données.
Les noms des 2 tables "Balance.dbf" et "comptes.dbf" sont toujours les mêmes mais pas le répertoire qui lui est variable.
J'ai voulu reproduire la requête sql au sein d'une procédure mais ça ne renvoie aucun résultat ?
Voici le code :
A noter que je réussis la procédure en me connectant qu'à une seule table (balance.dbf), dont voici le code :
Quelqu'un peut-il m'aider sur ce coup là ?
Rodolphe
Je souhaiterais obtenir un résulat obtenu par une requête sql avec ms-query dans une procédure vba, et je sèche quelque peu.
Ma requête ms-query :
SELECT BALANCE.COMPTES, BALANCE.INTITULE, BALANCE.SOLDE, comptes.NATU
FROM `C:\evolution\SOCIETE`\BALANCE.DBF BALANCE, `C:\evolution\SOCIETE`\comptes.dbf comptes
WHERE comptes.COMP = BALANCE.COMPTES AND ((comptes.NATU<>'0'))
La requête fonctionne sans problème.
Mais j'aimerais pouvoir rendre variable le répertoire source des données.
Les noms des 2 tables "Balance.dbf" et "comptes.dbf" sont toujours les mêmes mais pas le répertoire qui lui est variable.
J'ai voulu reproduire la requête sql au sein d'une procédure mais ça ne renvoie aucun résultat ?
Voici le code :
Code:
Private Sub ImportDna()
'Procédure d'importation des dna requête entre le fichier balance.dbf et le fichier comptes.dbf
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Chemin As String, Cible As String, laBase As String
Dim Fld As ADODB.Field
Dim i As Integer
If ComboBox1.ListIndex = -1 Then Exit Sub
Chemin = "C:\evolution\" & ComboBox1.List(ComboBox1.ListIndex, 1)
laBase = "Balance.dbf"
laBase2 = "comptes.dbf"
'efface la feuille Dna
Sheets("Dna").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.ClearContents
Range("A1").Select
Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
Chemin & ";"
Cible = "SELECT NATU, COMPTES, INTITULE, SOLDE FROM " & laBase & ", COMP FROM " & laBase2 & " WHERE COMP = COMPTES AND NATU<>'0'ORDER BY NATU, COMP "
Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic
For Each Fld In Rs.Fields
i = i + 1
Sheets("Dna").Cells(1, i) = Fld.Name
Next Fld
Do While Not Rs.EOF
Sheets("Dna").Range("A2").CopyFromRecordset Rs
Loop
End Sub
A noter que je réussis la procédure en me connectant qu'à une seule table (balance.dbf), dont voici le code :
Code:
Private Sub ImportBalance()
'Procédure d'importation du fichier balance.dbf
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim Chemin As String, Cible As String, laBase As String
Dim Fld As ADODB.Field
Dim i As Integer
If ComboBox1.ListIndex = -1 Then Exit Sub
Chemin = "C:\evolution\" & ComboBox1.List(ComboBox1.ListIndex, 1)
laBase = "Balance.dbf"
'efface la feuille Balance
Sheets("Balance").Select
Range("A1").Select
Selection.CurrentRegion.Select
Selection.ClearContents
Range("A1").Select
Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
Chemin & ";"
Cible = "SELECT COMPTES, INTITULE, SOLDE FROM " & laBase & ""
Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic
For Each Fld In Rs.Fields
i = i + 1
Sheets("Balance").Cells(1, i) = Fld.Name
Next Fld
Do While Not Rs.EOF
Sheets("Balance").Range("A2").CopyFromRecordset Rs
Loop
End Sub
Quelqu'un peut-il m'aider sur ce coup là ?
Rodolphe
Dernière édition: