OVH Cloud OVH Cloud

Extraction d'une base de donnée et variable

2 réponses
Avatar
Eric
Bonjour,

je souhaite extraire des données directement de ma base Progress via VBA
excel.

Je voudrais remplacer une donnée date par une variable (variable Reponse)

J'ai une message d'erreur m'indiquant que j'ai fait une erreur de syntaxe
SQL.

Je suis un peu HS, mais si quelqu'un peut me donner un coup de main,



Sub connexion()
Dim Reponse

Reponse = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())

With ActiveSheet.QueryTables.Add(Connection:= _

"ODBC;DSN=ntgest;HOST=cga29000s;PORT=ntgest;DB=cegest;UID=CBRS5;PWD=cegid",
_
Destination:=Range("A1"))
.CommandText = Array( _

...
& Chr(13) & "" & Chr(10) & "WHERE (attestation_0.""dte-edi-att""=
{ " & Reponse & "} )" & Chr(13) & "" & Chr(10) & "ORDER BY
attestation_0.""num-attest""")

' LIGNE D'ORIGINE & Chr(13) & "" & Chr(10) & "WHERE
(attestation_0.""dte-edi-att""={d '2005-03-16'})" & Chr(13) & "" & Chr(10) &
"ORDER BY attestation_0.""num-attest""")

...

End Sub


Bonne réception
Eric

2 réponses

Avatar
MichDenis
Bonjour Éric,

Voici un exemple avec 3 requêtes différentes utilisant des dates dans des variables... Si tu trouves un moyen plus
simple de faire d'utiliser un format date, ne te gène surtout pas

Si tu as des gros problèmes à déchiffrer les lignes de code qui risquent d'être coupées, je peux te faire parvenir cet
exemple dans un fichier texte.

'-------------------------------------------
Sub Macro1()

Dim Requete As String, requete1 As String
Dim Début As String, Fin As String

'oui, oui les formats sont bizarres
Début = Format(DateSerial(2003, 4, 10), "yyyy-mm-dd 00:00:00")
Fin = Format(DateSerial(2003, 4, 20), "yyyy-mm-dd 00:00:00")


'**********2 exemples de requête avec des dates comme critère...les formats sont spéciaux !!!
'pour tes requêtes, tu dois utiliser une variable...pour les contenir
'et utiliser cette variable dans commmandtext= array(Mavariable)

'AA ) Écart entre 2 dates .... début et fin (variables définies plus haut)
Requete = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE (`Feuil1$`.date={ts '" & Début & "'}) "

'A ) Écart entre 2 dates .... début et fin (variables définies plus haut)
'Requete = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE (`Feuil1$`.date>{ts '" & Début & "'}) and (`Feuil1$`.date<{ts '" & Fin & "'})"

'B ) Seulement à modifier le signe > en < ou égal selon la donne du problème.
'requete1 = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE (`Feuil1$`.date>{ts '" & Début & "'})"


With Worksheets("Feuil1").QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";" & _
"DefaultDir=" & ThisWorkbook.Path & "" _
), Array("cel;DriverIdy0;MaxBufferSize 48;" & _
"PageTimeout=5;")), Destination:=Worksheets("Feuil1").Range("D1"))

.CommandText = Array(Requete)
.Name = "Lancer la requête à partir de Excel Files"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
End Sub
'-------------------------------------------


Salutations!





"Eric" a écrit dans le message de news:
Bonjour,

je souhaite extraire des données directement de ma base Progress via VBA
excel.

Je voudrais remplacer une donnée date par une variable (variable Reponse)

J'ai une message d'erreur m'indiquant que j'ai fait une erreur de syntaxe
SQL.

Je suis un peu HS, mais si quelqu'un peut me donner un coup de main,



Sub connexion()
Dim Reponse

Reponse = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())

With ActiveSheet.QueryTables.Add(Connection:= _

"ODBC;DSN=ntgest;HOST=cga29000s;PORT=ntgest;DBÎgest;UIDËRS5;PWDÎgid",
_
Destination:=Range("A1"))
.CommandText = Array( _

...
& Chr(13) & "" & Chr(10) & "WHERE (attestation_0.""dte-edi-att"" { " & Reponse & "} )" & Chr(13) & "" & Chr(10) & "ORDER BY
attestation_0.""num-attest""")

' LIGNE D'ORIGINE & Chr(13) & "" & Chr(10) & "WHERE
(attestation_0.""dte-edi-att""={d '2005-03-16'})" & Chr(13) & "" & Chr(10) &
"ORDER BY attestation_0.""num-attest""")

...

End Sub


Bonne réception
Eric
Avatar
Eric
bonjour,

merci beaucoup, cela fonctionne.

C'est vraiment bizarre comme format de date

a+
eric

"MichDenis" a écrit dans le message de
news:
Bonjour Éric,

Voici un exemple avec 3 requêtes différentes utilisant des dates dans des
variables... Si tu trouves un moyen plus

simple de faire d'utiliser un format date, ne te gène surtout pas

Si tu as des gros problèmes à déchiffrer les lignes de code qui risquent
d'être coupées, je peux te faire parvenir cet

exemple dans un fichier texte.

'-------------------------------------------
Sub Macro1()

Dim Requete As String, requete1 As String
Dim Début As String, Fin As String

'oui, oui les formats sont bizarres
Début = Format(DateSerial(2003, 4, 10), "yyyy-mm-dd 00:00:00")
Fin = Format(DateSerial(2003, 4, 20), "yyyy-mm-dd 00:00:00")


'**********2 exemples de requête avec des dates comme critère...les
formats sont spéciaux !!!

'pour tes requêtes, tu dois utiliser une variable...pour les contenir
'et utiliser cette variable dans commmandtext= array(Mavariable)

'AA ) Écart entre 2 dates .... début et fin (variables définies plus haut)
Requete = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE (`Feuil1$`.date={ts '" & Début & "'}) "

'A ) Écart entre 2 dates .... début et fin (variables définies plus haut)
'Requete = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE (`Feuil1$`.date>{ts '" & Début & "'}) and
(`Feuil1$`.date<{ts '" & Fin & "'})"


'B ) Seulement à modifier le signe > en < ou égal selon la donne du
problème.

'requete1 = "SELECT `Feuil1$`.Société, `Feuil1$`.Date" & vbCrLf & _
"FROM `" & ThisWorkbook.FullName & "`.`Feuil1$`" & _
"`Feuil1$` WHERE (`Feuil1$`.date>{ts '" & Début & "'})"


With Worksheets("Feuil1").QueryTables.Add(Connection:=Array(Array( _
"ODBC;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";" & _
"DefaultDir=" & ThisWorkbook.Path & "" _
), Array("cel;DriverIdy0;MaxBufferSize 48;" & _
"PageTimeout=5;")), Destination:=Worksheets("Feuil1").Range("D1"))

.CommandText = Array(Requete)
.Name = "Lancer la requête à partir de Excel Files"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.Refresh BackgroundQuery:úlse
End With
End Sub
'-------------------------------------------


Salutations!





"Eric" a écrit dans le message de news:


Bonjour,

je souhaite extraire des données directement de ma base Progress via VBA
excel.

Je voudrais remplacer une donnée date par une variable (variable Reponse)

J'ai une message d'erreur m'indiquant que j'ai fait une erreur de syntaxe
SQL.

Je suis un peu HS, mais si quelqu'un peut me donner un coup de main,



Sub connexion()
Dim Reponse

Reponse = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now())

With ActiveSheet.QueryTables.Add(Connection:= _


"ODBC;DSN=ntgest;HOST=cga29000s;PORT=ntgest;DBÎgest;UIDËRS5;PWDÎgid",

_
Destination:=Range("A1"))
.CommandText = Array( _

...
& Chr(13) & "" & Chr(10) & "WHERE (attestation_0.""dte-edi-att"" > { " & Reponse & "} )" & Chr(13) & "" & Chr(10) & "ORDER BY
attestation_0.""num-attest""")

' LIGNE D'ORIGINE & Chr(13) & "" & Chr(10) & "WHERE
(attestation_0.""dte-edi-att""={d '2005-03-16'})" & Chr(13) & "" & Chr(10)
&

"ORDER BY attestation_0.""num-attest""")

...

End Sub


Bonne réception
Eric