Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Requete sur un lien ODBC en fonction de la date ?

8 réponses
Avatar
Torkem
Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !

8 réponses

Avatar
MichDenis
Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !
Avatar
Torkem
Merci beaucoup !

J'ai un peu de mal a l'adapter a mon cas actuel...ca n'est pas tres facile,
je ne connais pas bien les regles du codage Vb...
Est ce que j'en demande trop si je te demande (ou quelqu'un d'autre) de
l'adapter a partir de la requete enregistree via une macro ?

Merci pour ton aide !

'----------------------------------------------------------------------
Sub Macro4()
'
' Macro4 Macro
' Macro recorded 2006-11-03 by sanyhi
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC Data
Source;ARServer=cyberdome;UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT ""AA-Request relations"".""Create Date"", ""AA-Request
relations"".handled_by_site" & Chr(13) & "" & Chr(10) & "FROM ""AA-Request
relations"" ""AA-Request relations""" & Chr(13) & "" & Chr(10) & "WHERE
(""AA-Request relations"".""Create Date"">{ts '2006-11-01 00:" _
, _
"00:00'}) AND (""AA-Request
relations"".handled_by_site='SÖDERTÄLJE')" & Chr(13) & "" & Chr(10) & "ORDER
BY ""AA-Request relations"".""Create Date""" _
)
.Name = "Query from AR System ODBC Data Source_1"
.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
'-----------------------------------------------------------------------------




"MichDenis" wrote:

Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !





Avatar
Garette
Bonjour,

Je n'ai pas de base externe mais j'ai fait le test de requete sur un fichier
XL et ça fonctionne.

Je pense qu'il est possible d'écrire une requete SQL du type :

SELECT * FROM Base_de_données WHERE "date">date()-70 AND "date"<date()

.... qui automatiquement te raménera les données concernant les 70 derniers
jours en fonction de la date système.
C'est automatique et ça évite la macro.

Il faut peut etre se tourner vers un forum SQL pour avoir les syntaxes
correctes de la fonction date() en fonction de la base de données que tu
utilises.
Avatar
MichDenis
Voici un bout de ta requête ... évidemment pas testé...

Sub Macro4()

Dim Requete As String
Dim LaDate As String

LaDate = Format(Date - 70, "yyyy-mm-dd 00:00:00")

Requete = _
"SELECT ""AA-Request relations"".""Create Date"", " & _
"""AA-Request relations"".handled_by_site " & _
Chr(13) & Chr(10) & _
" FROM ""AA-Request relations"" ""AA-Request relations"" " & _
Chr(13) & Chr(10) & _
"WHERE ""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'} "

With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC DataSource;ARServer=cyberdome;" & _
"UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array(Requete)
.Name = "Query from AR System ODBC Data Source_1"
.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






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

Merci beaucoup !

J'ai un peu de mal a l'adapter a mon cas actuel...ca n'est pas tres facile,
je ne connais pas bien les regles du codage Vb...
Est ce que j'en demande trop si je te demande (ou quelqu'un d'autre) de
l'adapter a partir de la requete enregistree via une macro ?

Merci pour ton aide !

'----------------------------------------------------------------------
Sub Macro4()
'
' Macro4 Macro
' Macro recorded 2006-11-03 by sanyhi
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC Data
Source;ARServer=cyberdome;UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT ""AA-Request relations"".""Create Date"", ""AA-Request
relations"".handled_by_site" & Chr(13) & "" & Chr(10) & "FROM ""AA-Request
relations"" ""AA-Request relations""" & Chr(13) & "" & Chr(10) & "WHERE
(""AA-Request relations"".""Create Date"">{ts '2006-11-01 00:" _
, _
"00:00'}) AND (""AA-Request
relations"".handled_by_site='SÖDERTÄLJE')" & Chr(13) & "" & Chr(10) & "ORDER
BY ""AA-Request relations"".""Create Date""" _
)
.Name = "Query from AR System ODBC Data Source_1"
.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
'-----------------------------------------------------------------------------




"MichDenis" wrote:

Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !





Avatar
Torkem
Me voici comblé !
Code testé et approuvé ! Merci beaucoup !


Voici un bout de ta requête ... évidemment pas testé...

Sub Macro4()

Dim Requete As String
Dim LaDate As String

LaDate = Format(Date - 70, "yyyy-mm-dd 00:00:00")

Requete = _
"SELECT ""AA-Request relations"".""Create Date"", " & _
"""AA-Request relations"".handled_by_site " & _
Chr(13) & Chr(10) & _
" FROM ""AA-Request relations"" ""AA-Request relations"" " & _
Chr(13) & Chr(10) & _
"WHERE ""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'} "

With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC DataSource;ARServer=cyberdome;" & _
"UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array(Requete)
.Name = "Query from AR System ODBC Data Source_1"
.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






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

Merci beaucoup !

J'ai un peu de mal a l'adapter a mon cas actuel...ca n'est pas tres facile,
je ne connais pas bien les regles du codage Vb...
Est ce que j'en demande trop si je te demande (ou quelqu'un d'autre) de
l'adapter a partir de la requete enregistree via une macro ?

Merci pour ton aide !

'----------------------------------------------------------------------
Sub Macro4()
'
' Macro4 Macro
' Macro recorded 2006-11-03 by sanyhi
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC Data
Source;ARServer=cyberdome;UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT ""AA-Request relations"".""Create Date"", ""AA-Request
relations"".handled_by_site" & Chr(13) & "" & Chr(10) & "FROM ""AA-Request
relations"" ""AA-Request relations""" & Chr(13) & "" & Chr(10) & "WHERE
(""AA-Request relations"".""Create Date"">{ts '2006-11-01 00:" _
, _
"00:00'}) AND (""AA-Request
relations"".handled_by_site='SÖDERTÄLJE')" & Chr(13) & "" & Chr(10) & "ORDER
BY ""AA-Request relations"".""Create Date""" _
)
.Name = "Query from AR System ODBC Data Source_1"
.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
'-----------------------------------------------------------------------------




"MichDenis" wrote:

Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !










Avatar
Torkem
Ceci dit, j'ai encore une derniere chose...
Je tente d'ajouter un critere a la requete, mais lorsque je rentre le code
ci-dessous, j'ai une erreur de "Type Mismatch"

"WHERE (""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'}) AND
(AA-Request relations"".""handled_by_site""='SÖDERTÄLJE')"

Ai'je fait une erreur de syntaxe ???

Encore merci !


Me voici comblé !
Code testé et approuvé ! Merci beaucoup !


Voici un bout de ta requête ... évidemment pas testé...

Sub Macro4()

Dim Requete As String
Dim LaDate As String

LaDate = Format(Date - 70, "yyyy-mm-dd 00:00:00")

Requete = _
"SELECT ""AA-Request relations"".""Create Date"", " & _
"""AA-Request relations"".handled_by_site " & _
Chr(13) & Chr(10) & _
" FROM ""AA-Request relations"" ""AA-Request relations"" " & _
Chr(13) & Chr(10) & _
"WHERE ""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'} "

With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC DataSource;ARServer=cyberdome;" & _
"UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array(Requete)
.Name = "Query from AR System ODBC Data Source_1"
.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






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

Merci beaucoup !

J'ai un peu de mal a l'adapter a mon cas actuel...ca n'est pas tres facile,
je ne connais pas bien les regles du codage Vb...
Est ce que j'en demande trop si je te demande (ou quelqu'un d'autre) de
l'adapter a partir de la requete enregistree via une macro ?

Merci pour ton aide !

'----------------------------------------------------------------------
Sub Macro4()
'
' Macro4 Macro
' Macro recorded 2006-11-03 by sanyhi
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC Data
Source;ARServer=cyberdome;UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT ""AA-Request relations"".""Create Date"", ""AA-Request
relations"".handled_by_site" & Chr(13) & "" & Chr(10) & "FROM ""AA-Request
relations"" ""AA-Request relations""" & Chr(13) & "" & Chr(10) & "WHERE
(""AA-Request relations"".""Create Date"">{ts '2006-11-01 00:" _
, _
"00:00'}) AND (""AA-Request
relations"".handled_by_site='SÖDERTÄLJE')" & Chr(13) & "" & Chr(10) & "ORDER
BY ""AA-Request relations"".""Create Date""" _
)
.Name = "Query from AR System ODBC Data Source_1"
.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
'-----------------------------------------------------------------------------




"MichDenis" wrote:

Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !












Avatar
Torkem
Même apres correction des oublis de " ... j'ai la même erreur avec cd code...

"WHERE (""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'}) AND
(""AA-Request relations"".handled_by_site='SÖDERTÄLJE')"



Ceci dit, j'ai encore une derniere chose...
Je tente d'ajouter un critere a la requete, mais lorsque je rentre le code
ci-dessous, j'ai une erreur de "Type Mismatch"

"WHERE (""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'}) AND
(AA-Request relations"".""handled_by_site""='SÖDERTÄLJE')"

Ai'je fait une erreur de syntaxe ???

Encore merci !


Me voici comblé !
Code testé et approuvé ! Merci beaucoup !


Voici un bout de ta requête ... évidemment pas testé...

Sub Macro4()

Dim Requete As String
Dim LaDate As String

LaDate = Format(Date - 70, "yyyy-mm-dd 00:00:00")

Requete = _
"SELECT ""AA-Request relations"".""Create Date"", " & _
"""AA-Request relations"".handled_by_site " & _
Chr(13) & Chr(10) & _
" FROM ""AA-Request relations"" ""AA-Request relations"" " & _
Chr(13) & Chr(10) & _
"WHERE ""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'} "

With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC DataSource;ARServer=cyberdome;" & _
"UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array(Requete)
.Name = "Query from AR System ODBC Data Source_1"
.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






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

Merci beaucoup !

J'ai un peu de mal a l'adapter a mon cas actuel...ca n'est pas tres facile,
je ne connais pas bien les regles du codage Vb...
Est ce que j'en demande trop si je te demande (ou quelqu'un d'autre) de
l'adapter a partir de la requete enregistree via une macro ?

Merci pour ton aide !

'----------------------------------------------------------------------
Sub Macro4()
'
' Macro4 Macro
' Macro recorded 2006-11-03 by sanyhi
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC Data
Source;ARServer=cyberdome;UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT ""AA-Request relations"".""Create Date"", ""AA-Request
relations"".handled_by_site" & Chr(13) & "" & Chr(10) & "FROM ""AA-Request
relations"" ""AA-Request relations""" & Chr(13) & "" & Chr(10) & "WHERE
(""AA-Request relations"".""Create Date"">{ts '2006-11-01 00:" _
, _
"00:00'}) AND (""AA-Request
relations"".handled_by_site='SÖDERTÄLJE')" & Chr(13) & "" & Chr(10) & "ORDER
BY ""AA-Request relations"".""Create Date""" _
)
.Name = "Query from AR System ODBC Data Source_1"
.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
'-----------------------------------------------------------------------------




"MichDenis" wrote:

Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !














Avatar
Torkem
Bon, finalement, j'ai trouvé en regardant comment il entregistrait la
variable..et ca fait trop de caractères apparement...il n'emregistrait pqs
tous mes paramètres...sommes nous limité à 256 caractères ?
J'ai donc decoupé le tout en 3 ( requestSelect, requestfrom et requestWhere)
que j'ai ré assemblé en écrivant ".CommandText = Array(Requete, RequeteFrom,
requeteWhere)"

Merci encore une fois !!!! (je ne le dirais jamais assez....)


Même apres correction des oublis de " ... j'ai la même erreur avec cd code...

"WHERE (""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'}) AND
(""AA-Request relations"".handled_by_site='SÖDERTÄLJE')"



Ceci dit, j'ai encore une derniere chose...
Je tente d'ajouter un critere a la requete, mais lorsque je rentre le code
ci-dessous, j'ai une erreur de "Type Mismatch"

"WHERE (""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'}) AND
(AA-Request relations"".""handled_by_site""='SÖDERTÄLJE')"

Ai'je fait une erreur de syntaxe ???

Encore merci !


Me voici comblé !
Code testé et approuvé ! Merci beaucoup !


Voici un bout de ta requête ... évidemment pas testé...

Sub Macro4()

Dim Requete As String
Dim LaDate As String

LaDate = Format(Date - 70, "yyyy-mm-dd 00:00:00")

Requete = _
"SELECT ""AA-Request relations"".""Create Date"", " & _
"""AA-Request relations"".handled_by_site " & _
Chr(13) & Chr(10) & _
" FROM ""AA-Request relations"" ""AA-Request relations"" " & _
Chr(13) & Chr(10) & _
"WHERE ""AA-Request relations"".""Create Date"">{ts '" & LaDate & "'} "

With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC DataSource;ARServer=cyberdome;" & _
"UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array(Requete)
.Name = "Query from AR System ODBC Data Source_1"
.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






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

Merci beaucoup !

J'ai un peu de mal a l'adapter a mon cas actuel...ca n'est pas tres facile,
je ne connais pas bien les regles du codage Vb...
Est ce que j'en demande trop si je te demande (ou quelqu'un d'autre) de
l'adapter a partir de la requete enregistree via une macro ?

Merci pour ton aide !

'----------------------------------------------------------------------
Sub Macro4()
'
' Macro4 Macro
' Macro recorded 2006-11-03 by sanyhi
'

'
With ActiveSheet.QueryTables.Add(Connection:= _
"ODBC;DSN=AR System ODBC Data
Source;ARServer=cyberdome;UID=sanyhi;PWD=sanyhi;ARAuthentication=;SERVER=NotTheServer" _
, Destination:=Range("A1"))
.CommandText = Array( _
"SELECT ""AA-Request relations"".""Create Date"", ""AA-Request
relations"".handled_by_site" & Chr(13) & "" & Chr(10) & "FROM ""AA-Request
relations"" ""AA-Request relations""" & Chr(13) & "" & Chr(10) & "WHERE
(""AA-Request relations"".""Create Date"">{ts '2006-11-01 00:" _
, _
"00:00'}) AND (""AA-Request
relations"".handled_by_site='SÖDERTÄLJE')" & Chr(13) & "" & Chr(10) & "ORDER
BY ""AA-Request relations"".""Create Date""" _
)
.Name = "Query from AR System ODBC Data Source_1"
.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
'-----------------------------------------------------------------------------




"MichDenis" wrote:

Voici un exemple de code pour une requête ODBC avec
la date -70 comme critère...

N.B. si tu utilises l'enregistreur macro pendant que tu fais ta requête
ce dernier te donnera l'essentiel du code .
Dans une fenêtre MsQuery, sur un champ date, ton critère se traduirait
comme ceci :
Champ : Les dates
Critère : >date-70

'------------------------------------------------------
Sub test()

Dim Requete As String
Dim Début As String

'Format particulier pour ta date de début
'Date d'aujourdhui - 70 -> ton critère
Début = Format(Date - 70, "yyyy-mm-dd 00:00:00")

'Tu adaptes le nom de la feuille et les champs de ton tableau
'dans la requête
requete = "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
'------------------------------------------------------






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

Bonjour !

J'ai creer un fichier Excel dans lequel j'importe des données via l'ODBC.
Mon probleme est que cette requete va m'importer un nombre assez consequent
d'enregistrements (35000 depuis le 1 Janvier 2006). Or, etant limite a 65000
enregistrement, il va arriver un moment ou j'aurait des problemes.
Les donnees dont j'ai besoin son uniquement celles des 70 derniers jours.
Mais, etant donne que les utilisateurs a qui ce fichier est dedie ne
connaissent rien a Excel, je me vois mal leur demander de modifier la requete
tous les mois, c'est pourquoi je voudrais integrer cette requete ODBC dans
une macro. Jusqu'ici, en fait, pas trop de soucis. Le seul truc est que je
voudrais integrer la variable "Aujourd'hui - 70 jours" dans cette requete
pour, du coup, n'importer que les 70 derniers jours de données.

Merci d'avance pour votre aide !