Importation de données via ODBC, affectation de variables

Résolu
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011 - 6 juin 2011 à 12:03
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 - 14 août 2011 à 19:44
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.

2 réponses

Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
7 juin 2011 à 12:39
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
3
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 369
14 août 2011 à 19:44
Bonjour,

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