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:
la ligne qui plante est :
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)
Message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set oRstDate = oDB.OpenRecordset(strSQL, dbOpenDynaset)
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 :
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part " AND Chantier.DateDebut=" & Chr(34) & [Forms]![Prepa_Choix_Action]![Text_Date] & Chr(34) &
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.
Partager