Set connect_foxpro = New ADODB.Connection
Dim connect As ObjectAlors que cette variable semble représenter un chemin et nom d'un fichier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question'FONCTION PERMETTANT DE SE CONNECTER SUR UNE BASE FOX PRO Function Connexion() 'chemin est une constante indiquant tout simplement le répertoire de la table Set connect_foxpro = New connection With connect_foxpro .ConnectionString = "Provider=ADsDSOObject;Location=K:\GARNIER\FG\Basefoxpro;Mode=ReadWrite;" .Open End With flag_connect = True Connexion = connect_foxpro End Function
Set connect_foxpro = New connection
Dim connect As Object connect = Connexion(CHEMIN)puis
Function Connexion() Set connect_foxpro = New ADODB.Connection ... Connexion = connect_foxpro ' Je pense qu'il faut un Set en tête de ligne End Functionmais il faut impérativement que ces trois objets aient la même définition.
Dim connect As ADODB.Connection Function Connexion() As ADODB.Connection Set connect_foxpro = New ADODB.Connection
Dim connect_foxpro As ADODB.connection
'Exécute la requête rs.Open cmd, CursorType:=adOpenStatic
Une ou plusieurs erreurs se sont produites lors du traitements de la demande.
SQL = "select distinct nom from Databases " Set rsDB = New ADODB.Recordset rsDB.CursorLocation = adUseClient rsDB.Open SQL, gCN, adOpenStatic, adLockReadOnly
'PROCEDURE AFFICHANT LE RESULTAT DES REQUETES Sub SelectSQL() On Error GoTo SelectSQL_Error nbrecords = 0 'Préparation de l'objet command Set cmd = New ADODB.Command Set cmd.ActiveConnection = connect_foxpro cmd.CommandText = REQ_SELECT 'On déclare le recordset Set rs = New ADODB.Recordset 'Exécute la requête rs.CursorLocation = adUseClient rs.Open cmd, CursorType:=adOpenStatic 'On sélectionne la feuille de destination ActiveWorkbook.Sheets(NOM_FEUILLE_SELECT).Activate 'On efface l'ensemble du contenu précédent ActiveSheet.Cells.Clear 'On vérifie que l'on a bien récupéré des enregistrements If Not rs.EOF Then rs.MoveFirst Set targetrange = ActiveWorkbook.Sheets(NOM_FEUILLE_SELECT).Cells(1, 1) 'Mise en place des noms de champs comme entêtes de colonne For intcolindex = 0 To rs.Fields.Count - 1 targetrange.Offset(0, intcolindex).Value = UCase(rs.Fields(intcolindex).Name) Next Application.StatusBar = "Extraction des enregistrements ..." 'Intègre le contenu du jeu d'enregistrements dans la feuille de calcul Excel targetrange.Offset(1, 0).CopyFromRecordset rs 'On réajuste les lignes et les colonnes Sheets(NOM_FEUILLE_SELECT).Columns("A:CH").AutoFit Sheets(NOM_FEUILLE_SELECT).UsedRange.EntireRow.AutoFit Application.StatusBar = "Extraction terminée !" 'On récupère le nombre d'éléments traités : nbrecords = rs.RecordCount MsgBox "Import de " & nbrecords & " enregistrement(s) !" Else MsgBox "Il n'y a aucun enregistrement correspondant.", vbInformation, "Enregistrement impossible" End If Application.StatusBar = "" ' Ferme le jeu d'enregistrements s'il est toujours ouvert If CBool(rs.State And adStateOpen) Then rs.Close End If ActiveWorkbook.Sheets(NOM_FEUILLE_PRINCIPAL).Activate 'on enregistre les modifications des feuilles excel Application.DisplayAlerts = False ActiveWorkbook.Save Application.DisplayAlerts = True Set rs = Nothing Set targetrange = Nothing Set cmd = Nothing On Error GoTo 0 Exit Sub SelectSQL_Error: MsgBox "(Erreur n°" & Err.Number & ") " & Err.Description End Sub
Option Explicit Dim targetrange As Range Dim intcolindex As Integer Dim nbrecords As Integer Dim che_fic As String Dim cnx As ADODB.Connection Dim cmd As ADODB.Command Dim rs As ADODB.Recordset Sub AfficherResult(nomTab As String) nbrecords = 0 'Connexion à la base Set cnx = New Connection 'chemin est une constante indiquant tout simplement le répertoire de la table With cnx .ConnectionString "Provider vfpoledb; Data Source =" + CHEMIN + nomTab .Open End With 'Préparation de l'objet command Set cmd = New ADODB.Command Set cmd.ActiveConnection = cnx cmd.CommandText = REQ_SELECT 'On déclare le recordset Set rs = New ADODB.Recordset 'Exécute la requête rs.Open cmd, CursorType:=adOpenStatic 'On sélectionne la feuille de destination ActiveWorkbook.Sheets(NOM_FEUILLE_SELECT).Activate 'On efface l'ensemble du contenu précédent ActiveSheet.Cells.Clear 'On vérifie que l'on a bien récupéré des enregistrements If Not rs.EOF Then rs.MoveFirst Set targetrange = ActiveWorkbook.Sheets(NOM_FEUILLE_SELECT).Cells(1, 1) 'Mise en place des noms de champs comme entêtes de colonne For intcolindex = 0 To rs.Fields.Count - 1 targetrange.Offset(0, intcolindex).Value = UCase(rs.Fields(intcolindex).Name) Next Application.StatusBar = "Extraction des enregistrements ..." 'Intègre le contenu du jeu d'enregistrements dans la feuille de calcul Excel targetrange.Offset(1, 0).CopyFromRecordset rs 'On réajuste les lignes et les colonnes Sheets(NOM_FEUILLE_SELECT).Columns("A:CH").AutoFit Sheets(NOM_FEUILLE_SELECT).UsedRange.EntireRow.AutoFit 'On récupère le nombre d'éléments traités : nbrecords = rs.RecordCount MsgBox "Import de " & nbrecords & " enregistrement(s) !" Else MsgBox "Il n'y a aucun enregistrement correspondant.", vbInformation, "Enregistrement impossible" End If Application.StatusBar = "" ' Ferme le jeu d'enregistrements s'il est toujours ouvert If CBool(rs.State And adStateOpen) Then rs.Close End If ActiveWorkbook.Sheets(NOM_FEUILLE_PRINCIPAL).Activate 'Enregistrement des modifications des feuilles excel Application.DisplayAlerts = False ActiveWorkbook.Save Application.DisplayAlerts = True cnx.Close Set cnx = Nothing Set rs = Nothing Set targetrange = Nothing Set cmd = Nothing End Sub
.ConnectionString = "Provider=ADsDSOObject;Location=K:\GARNIER\FG\Basefoxpro;Mode=ReadWrite;" .Open
rs.Open cmd, CursorType:=adOpenStatic
Une ou plusieurs erreurs se sont produites lors du traitement de la commande
connection.stateme renvoi "1", qui désigne la connexion comme "open".