Importation de données via ODBC, affectation de variables

[Résolu]
Signaler
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011
-
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
-
Bonjour à tous,

Je voudrai trouver un moyen de récupérer du contenu dans une base ODBC avec une condition sur une date et heure afin de filtrer ma demande et récupérer les informations pour la date et heure donnée.

J'ai pu faire une macro enregistrée :
    With ActiveSheet.ListObjects.Add(SourceType:= 0, Source:= _
        "ODBC;DSN=Calibration Data;UID=fluke;;EngineName=mtrack;Integrated=No;CommLinks=SharedMemory,TCPIP{}" _
        , Destination:=Range("$B$5")).QueryTable
        .CommandText = Array( _
        "SELECT results.editlogtime, results.remark, results.test_desc, results.varq, results.varq_p, results.varq_u, results.measurement, results.measurement_p, results.measurement_u" & Chr(13) & "" & Chr(10) & "FROM mt.results results" & Chr(13) & "" _
        , "" & Chr(10) & "WHERE (results.editlogtime>={ts '31-05-2011 08:24:00'})")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_Calibration_Data_1"
        .Refresh BackgroundQuery:= False
    End With


Cependant je souhaiterai récupérer ces informations depuis une heure et date saisies dans mon classeur sous le format spécifié à partir d'une variable que j'ai nommé DatHeu.

J'ai donc testé ceci, incluant ma variable pour l'affecter à ma sélection, mais une erreur géérale ODBC apparaît. Voici le code :
DatHeu   = Sheets("Etape 3 - Importation résultats").Range("H2").Value
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "ODBC;DSN=Calibration Data;UID=fluke;;EngineName=mtrack;Integrated=No;CommLinks=SharedMemory,TCPIP{}" _
        , Destination:=Range("$B$5")).QueryTable
        .CommandText = Array( _
        "SELECT results.editlogtime, results.remark, results.test_desc, results.varq, results.varq_p, results.varq_u, results.measurement, results.measurement_p, results.measurement_u" & Chr(13) & "" & Chr(10) & "FROM mt.results results" & Chr(13) & "" _
        , "" & Chr(10) & "WHERE (results.editlogtime>={ts '" & DatHeu & "'})")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_Calibration_Data_1"
        .Refresh BackgroundQuery:=False
    End With


En vous remerciant pour votre aide, cordialement.

Rom.
A voir également:

2 réponses

Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011

Solution : (avec conditions)

Private Sub CommandButton1_Click()

Dim Test As String
'Dim Datee As Date

Dat = Sheets("Etape 1 - Renseignements").Range("H3").Value
Heu = Sheets("Etape 1 - Renseignements").Range("H4").Value
DatHeu = Sheets("Etape 3 - Importation résultats").Range("H2").Value
Ins = Sheets("Etape 1 - Renseignements").Range("C4").Value

If Ins "" Or Dat "" Or DatHeu = "" Or Heu = "" Or Worksheets("Etape 2 - Saisie des valeurs").Range("C11").Value = "" Or Worksheets("Etape 2 - Saisie des valeurs").Range("B8").Value = "" Or Worksheets("Etape 2 - Saisie des valeurs").Range("E3").Value = "" Or Worksheets("Etape 2 - Saisie des valeurs").Range("E4").Value = "" Or Worksheets("Etape 1 - Renseignements").Range("C4").Value = "" Then
    MsgBox "Erreur! Renseignement(s) manquant(s), veuillez le(s) saisir.", vbCritical, "Message d'erreur"
Else
    Test = Sheets("Etape 3 - Importation résultats").Range("H2").Value
    Ins = Sheets("Etape 1 - Renseignements").Range("C4").Value

    'With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        '"ODBC;DSN=Calibration Data;UID=fluke;;EngineName=mtrack;Integrated=No;CommLinks=SharedMemory,TCPIP{}" _
        , Destination:=Range("$B$5")).QueryTable
        
        '.CommandText = Array( _
        '"SELECT results.editlogtime, results.remark, results.test_desc, results.varq, results.varq_p, results.varq_u, results.measurement, results.measurement_p, results.measurement_u" & Chr(13) & "" & Chr(10) & "FROM mt.results results" & Chr(13) & "" _
        , "" & Chr(10) & "WHERE (results.editlogtime>= '" & Test & "')")
        '.RowNumbers = False
        '.FillAdjacentFormulas = False
        '.PreserveFormatting = True
        '.RefreshOnFileOpen = False
        '.BackgroundQuery = True
        '.RefreshStyle = xlInsertDeleteCells
        '.SavePassword = False
        '.SaveData = True
        '.AdjustColumnWidth = True
        '.RefreshPeriod = 0
        '.PreserveColumnInfo = True
        '.ListObject.DisplayName = "Table_Query_from_Calibration_Data_1"
        '.Refresh BackgroundQuery:=False
        
            With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "ODBC;DSN=Calibration Data;UID=fluke;;EngineName=mtrack;Integrated=No;CommLinks=SharedMemory,TCPIP{}" _
        , Destination:=Range("$B$5")).QueryTable
        .CommandText = Array( _
        "SELECT Inventory.I4201, results.editlogtime, results.remark, results.test_desc, results.varq, results.varq_p, results.varq_u, results.measurement, results.measurement_p, results.measurement_u" & Chr(13) & "" & Chr(10) & "FROM mt" _
        , _
        ".Inventory Inventory, mt.results results" & Chr(13) & "" & Chr(10) & "WHERE (Inventory.I4201='" & Ins & "') AND (results.editlogtime>= '" & Test & "')" _
        )
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Table_Query_from_Calibration_Data_1"
        .Refresh BackgroundQuery:=False
    End With
    Columns("C:C").Select
    Selection.NumberFormat = "yyyy-mm-dd hh:mm:ss"
    Selection.ColumnWidth = 19.86
End If
End Sub
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
360
Bonjour,

Je déplace vers vbFrance, cette question n'a rien à voir avec le SQL