Bonjour,
Je cale depuis des heures sur un problème de requête sql qui emploie un critère de date.
L'application doit extraire d'un fichier DBF, des données.
Je souhaiterais que les données extraites soient limitées en fonction du critère suivant :
DATESOR (champ date de la table de donnée) soit vide ou supérieur à la valeur date stockée dans la cellule nommée "DateSortie" de la feuille "Start" (cellule E13).
J'avais compris que la date des requêtes était au format américain (mm/dd/yyyy).
J'ai essayé plein de choses mais je n'y arrive pas.
Je joins en annexe le fichier avec le code VBA et le fichier des dossiers (normalement format dbf mais renommé en xls pour l'import sur le forum) et un fichier de données (idem dbf > xls)
Voici le code
Cible = "SELECT CODE,LIBELLE,FOURNI,DATEE,COMPTE,VALACHAT,TYPE,CUMUL,DUREA,PCOMPTA,DATSOR FROM " & laBase & " ORDER BY DATEE ;"
Je voudrais que ceci fonctionne :
WHERE DATSOR < DateSort OR DATSOR is null
DATESOR est le champ qui contient la date dans le fichier de données.
DateSort est la variable qui renvoie le contenu de la cellule nommée "DateSortie" de la feuille "Start" (cellule E13)
Si quelqu'un pouvait m'aider, car je désespère.
Merci d'avance
Je cale depuis des heures sur un problème de requête sql qui emploie un critère de date.
L'application doit extraire d'un fichier DBF, des données.
Je souhaiterais que les données extraites soient limitées en fonction du critère suivant :
DATESOR (champ date de la table de donnée) soit vide ou supérieur à la valeur date stockée dans la cellule nommée "DateSortie" de la feuille "Start" (cellule E13).
J'avais compris que la date des requêtes était au format américain (mm/dd/yyyy).
J'ai essayé plein de choses mais je n'y arrive pas.
Je joins en annexe le fichier avec le code VBA et le fichier des dossiers (normalement format dbf mais renommé en xls pour l'import sur le forum) et un fichier de données (idem dbf > xls)
Voici le code
Cible = "SELECT CODE,LIBELLE,FOURNI,DATEE,COMPTE,VALACHAT,TYPE,CUMUL,DUREA,PCOMPTA,DATSOR FROM " & laBase & " ORDER BY DATEE ;"
Je voudrais que ceci fonctionne :
WHERE DATSOR < DateSort OR DATSOR is null
DATESOR est le champ qui contient la date dans le fichier de données.
DateSort est la variable qui renvoie le contenu de la cellule nommée "DateSortie" de la feuille "Start" (cellule E13)
Si quelqu'un pouvait m'aider, car je désespère.
Merci d'avance
VB:
Private Sub CommandButton1_Click()
'bouton d'importation pour le processus d'import du fichier comptes.dbf et appel de la procédure d'import de lign.dbf
Application.ScreenUpdating = False
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim chemin As String, Cible As String, laBase As String
Dim Fld As ADODB.Field
Dim i As Integer
Dim DateSort As Date
If ComboBox1.ListIndex = -1 Then Exit Sub
chemin = ComboBox1.List(ComboBox1.ListIndex, 1)
laBase = "IMMOS.dbf"
DateSort = Format(Range("DateSortie"), "MM/DD/YYYY")
'efface la feuille comptes
Sheets("ImmoCiel").Select
Columns("A:k").Select
Range("k1").Activate
Selection.ClearContents
Range("A1").Select
Set Cn = New ADODB.Connection
Cn.Open _
"Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
chemin & ";"
'WHERE DATSOR < DateSort ORDER BY DATEE WHERE DATSORT > DateSort"
Cible = "SELECT CODE,LIBELLE,FOURNI,DATEE,COMPTE,VALACHAT,TYPE,CUMUL,DUREA,PCOMPTA,DATSOR FROM " & laBase & " ORDER BY DATEE ;"
Set Rs = New Recordset
Rs.Open Cible, Cn, adOpenKeyset, adLockOptimistic
For Each Fld In Rs.Fields
i = i + 1
Sheets("ImmoCiel").Cells(1, i) = Fld.Name
Next Fld
Do While Not Rs.EOF
Sheets("ImmoCiel").Range("A2").CopyFromRecordset Rs
Loop
Rs.Close
Cn.Close
Sheets("Start").Select
Range("DOS") = ComboBox1
Range("REPDOS") = ComboBox1.List(ComboBox1.ListIndex, 1)
Range("CODEDOS") = ComboBox1.List(ComboBox1.ListIndex, 2)
Calculer
Application.ScreenUpdating = True
End Sub