Bonjour,

j'essaie depuis pas mal de temps de résoudre ce problème mais je n'y arrive pas. Alors j'en appel à votre aide.
Voici tout d'abord le code qui pose problème:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Dim oDB As DAO.Database
Set oDB = CurrentDb
Dim strSQL As String
strSQL = "SELECT [Composant].[Type], [ContenuInventaire].[Composant], [ModificationMarque].[SB], [ModificationMarque].[StatusSbOut], [Composant].[StatusTL], [ContenuInventaire].[Qte]"
strSQL = strSQL & " FROM ((Chantier INNER JOIN Inventaire ON [Chantier].[Inventaire]=[Inventaire].[Numero]) INNER JOIN (Composant INNER JOIN ContenuInventaire ON [Composant].[PN]=[ContenuInventaire].[Composant]) ON [Inventaire].[Numero]=[ContenuInventaire].[Inventaire]) INNER JOIN ModificationMarque ON [Inventaire].[Numero]=[ModificationMarque].[Inventaire]"
strSQL = strSQL & " WHERE (((ModificationMarque.SB)=[ContenuInventaire].[SB]) AND ((ContenuInventaire.Qte)>0) AND ((ContenuInventaire.Inventaire) In (SELECT Chantier.Inventaire FROM Chantier WHERE (Chantier.ESN=" & Chr(34) & [Forms]![Prepa_Choix_Action]![Text_ESN] & Chr(34) & " AND Chantier.DateDebut=" & Chr(34) & [Forms]![Prepa_Choix_Action]![Text_Date] & Chr(34) & "))))"
strSQL = strSQL & " ORDER BY [ContenuInventaire].[Composant];"
Set oRstDate = oDB.OpenRecordset(strSQL, dbOpenDynaset)
la ligne qui plante est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set oRstDate = oDB.OpenRecordset(strSQL, dbOpenDynaset)
Message d'erreur:
Type de données incompatible dans l'expression du critère

Pourtant si je suprrime dans l'instruction SQL cette partie a la fin du where :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
" AND Chantier.DateDebut=" & Chr(34) & [Forms]![Prepa_Choix_Action]![Text_Date] & Chr(34) &
Cela fonctionne mais biensur ca ne me convient pas parce que la cela marche uniquement lorsque je n'ai qu'un seul chantier et pas qu'en j'en ai plusieurs.
Je me demande si cela ne vient pas de la date.
Pourtant quand je fais un Debug.print du sql cela me donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
SELECT [Composant].[Type], [ContenuInventaire].[Composant], [ModificationMarque].[SB], [ModificationMarque].[StatusSbOut], [Composant].[StatusTL], [ContenuInventaire].[Qte] FROM ((Chantier INNER JOIN Inventaire ON [Chantier].[Inventaire]=[Inventaire].[Numero]) INNER JOIN (Composant INNER JOIN ContenuInventaire ON [Composant].[PN]=[ContenuInventaire].[Composant]) ON [Inventaire].[Numero]=[ContenuInventaire].[Inventaire]) INNER JOIN ModificationMarque ON [Inventaire].[Numero]=[ModificationMarque].[Inventaire] WHERE (((ModificationMarque.SB)=[ContenuInventaire].[SB]) AND ((ContenuInventaire.Qte)>0) AND ((ContenuInventaire.Inventaire) In (SELECT Chantier.Inventaire FROM Chantier WHERE (Chantier.ESN="444444" AND Chantier.DateDebut="26/05/2007")))) ORDER BY [ContenuInventaire].[Composant];

Donc comme on peut le voir cela fonctionne bien car l'ESN et la date sont bien récupéré.

J'avoue que la j'ai du mal a voir d'ou cela peut provenir.

Merci d'avance pour votre aide.