Importation de données via ODBC, affectation de variables [Résolu]

Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011
- - Dernière réponse : cs_Julien39
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
- 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.
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Statut
Membre
Dernière intervention
7 juin 2011
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Rom57970
Messages postés
6419
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
239
0
Merci
Bonjour,

Je déplace vers vbFrance, cette question n'a rien à voir avec le SQL
Commenter la réponse de cs_Julien39