Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/12/2011, 15h02   #1
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
Par défaut erreur de date dans requete SELECT vers zone de texte en DAO

Bonjour,
J'ai l'erreur 3464 : Type de données incompatible dans l'expression du critère

Voici mon code:
Code :
1
2
3
4
5
6
7
8
Set db = CurrentDb
serie = Me.CSA.Value
rdv = Me.LISTE_RDV.Column(0)
SQL = "SELECT [T_DATE_ORIGINE].[Date_Reunion],[T_DATE_ORIGINE].[Type_Reunion], [T_DATE_ORIGINE].[Service] FROM [T_DATE_ORIGINE] WHERE [T_DATE_ORIGINE].[CSA] = '" & serie & "' AND [T_DATE_ORIGINE].[Date_Reunion] = '" & rdv & "' ;"
Set rst = db.OpenRecordset(SQL, dbOpenSnapshot, dbReadOnly)
Me.DATE.Value = rst("Date_Reunion")
Me.Modifiable47.Value = rst("Type_Reunion")
Me.CELLULE.Value = rst("Service")
Je pense que mon erreur vient de la gestion de rdv qui est au format date...

J'ai fait avec le debug, ? sql etc. je suis passé en enlevant les quotes, en mettant les # rien y fait.

forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 15h24   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
bonjour,

il faudrait essayer avec cette fonction à ajouter dans un module de code VBA :
Code :
1
2
3
4
5
 
'conversion des dates au format SQL pour requête
Public Function DateToSQL(ByVal dDate As Date) As String
   DateToSQL = Format$(dDate, "\#m-d-yyyy\#")
End Function
Ensuite si vos variables sont au format texte ou variant et après avoir vérifié que les données d'origine sont bien des dates :
Code :
1
2
3
serie = DateToSQL(Me.CSA.Value)
rdv = DateToSQL(Me.LISTE_RDV.Column(0))
puis écrire :
Code :
1
2
SQL = "SELECT Date_Reunion,Type_Reunion, Service] FROM T_DATE_ORIGINE WHERE CSA = " & serie & " AND Date_Reunion = " & rdv
Je suis un peu surpris de la ligne Me.DATE.Value = rst("Date_Reunion") puique l'on passe dans le where la date de cette réunion...

@+

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 23h34   #3
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut Philippe et forzaxelah,

pour ce que tu veux obtenir tu pourrais éventuellement utiliser dlookup() (RechDom) ex:
Code :
=RechDom("Date_Reunion";"T_DATE_ORIGINE";"[CSA]=" & Format([CSA];"\#m/j/aa\#") & " AND [Date_Reunion]=" & Format([LISTE_RDV];"\#m/j/aa\#"))
(avec les requery appropriés...)

vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 08h30   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
Salut diem,

Comme la requête d'origine retourne plusieurs champs d'un enregistrement je suis resté sur DAO qui est plus performant dans ce cas que x fonctions de domaines. Ta solution a le mérite d'être plus simple à mettre en oeuvre.

Bonnes fêtes mon ami

Philippe

Ps: Diem, je suis en train de préparer ton cadeau pour le nouvel an...
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 09h54   #5
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
C'est bon! Merci beaucoup!!!
forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 18h28   #6
Membre du Club
 
Inscription : mai 2005
Messages : 162
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 162
Points : 58
Points : 58
Envoyer un message via MSN à forzaxelah
Euh, finalement...

J'ai bien fait comme tu as dit (module etc.)

Voici un code d'ajout dans une table:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
Private Sub Commande180_Click()
Dim QCDS, serie, ETAT, ETAPE, DECLENCHEUR, DESCRIPTION, PILOTE As String
Dim rst As DAO.Recordset
Dim db As DAO.Database
Dim SQL, SQL1, SQL2 As String
Dim date_decl, date_prev As Date
 
'Set db = CurrentDb
 
QCDS = Me.FicheQCDS.Value
serie = Me.CSA.Value
ETAT = Me.ETAT.Value
ETAPE = Me.ETAPE.Value
DECLENCHEUR = Me.DECLENCHEUR.Value
date_decl = Me.DATE_DECLENCHEUR.Value
DESCRIPTION = Me.DESCRIPTION.Value
PILOTE = Me.PILOTE.Value
date_prev = DateToSQL(Me.DELAI_INIT.Value)
 
 
Set db = CurrentDb
Set rst = db.OpenRecordset("T SUIVI ACTIONS", dbOpenTable)
rst.AddNew
rst.Fields("N°").Value = QCDS
rst.Fields("CSA").Value = serie
rst.Fields("ETAPE").Value = ETAPE
rst.Fields("DECLENCHEUR").Value = DECLENCHEUR
rst.Fields("DATE_DECLENCHEUR").Value = date_decl
rst.Fields("ACTION").Value = DESCRIPTION
rst.Fields("PILOTE").Value = PILOTE
rst.Fields("DATE PREVUE").Value = date_prev
rst.Fields("ETAT").Value = ETAT
rst.Update
J'ai l'erreur 13 , incompatibilité de type sur la ligne suivante:
Code :
 date_prev = DateToSQL(Me.DELAI_INIT.Value)
Par contre dans le module, peux tu expliquer pourquoi on ne met pas MM/DD/YYYY ?


Si vous pouviez m'expliquer mes difficultés, sachant que dans mes tables, les champs de date sont spécifiés Date/Heure.??
Ce que j'en comprends, c'est une incompatibilité entre notre système de date DD/MM/YYYY et celui de SQL qui est du type MM/DD/YYYY ???

Merci pour l'aide!
forzaxelah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 18h38   #7
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 586
Points : 1 586
bonjour,

cette fonction DateToSQL() n'est utile que pour convertir une date vers le format US lorsqu'une date intervient dans une clause WHERE d'une requête construite en VBA.

Dans le cas ici, il ne faut pas l'utiliser.

@+

philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h14.


 
 
 
 
Partenaires

Hébergement Web