Erreur 3464

Fermé
fifidibosco Messages postés 72 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 17 juillet 2023 - 7 juin 2018 à 19:27
fifidibosco Messages postés 72 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 17 juillet 2023 - 9 juin 2018 à 12:42
Bonjour
je voudrais créer un formulaire de facturation à partir de deux tables. Une facture est faite pour une date, un repas (midi ou soir), une table et un service, une table pouvant être utilisée deux fois pendant un même repas.

Une table T_service qui comprend les champs :
- ID_fact, numéro de facture, clé primaire de la table, type NuméroAuto,
- dateService, date de la facture, type Date/heure,
- Repas, type texte, liste de choix entre « Midi » et « Soir »,
- Service, qui correspond au nombre d’utilisation de la table pendant un repas, type texte, liste de choix entre « Premier service » et « Deuxième service »,
-btableNum, type texte, liste de choix entre les numéro de tables (de 1 à 9),
-bnbClients, type texte, nombre de clients à la table pour le service considéré,
-bServeur, type texte, nom du serveur qui a servi la table,

et une table T_plats qui comprend les champs :
- ID_plat, numéro du plat, clé primaire de la table, type NuméroAuto,
- nomPlat, type texte, le nom du plat,
- categoriePlat, type texte, liste de choix entre « Entrée », « Plat », « Dessert », etc..
- prixPlat, type Numérique, prix du plat.

Le formulaire que je voudrais créer est basé sur la table T_service, avec un sous-formulaire qui listera les plats servis.
Le formulaire qui identifie la facture comprend les contrôles :
- txt_ID_fact, indépendant, numéro de facture => T_service /ID_fact
- txt_Date, indépendant, date de la facture => T_service /dateService
- lt_Repas, indépendant, liste de choix => T_service /Repas
- lt_numTable, indépendant, numéro de la table, liste de choix => T_service /tableNum
- lt_service, indépendant, liste de choix, premier ou deuxième service => T_service /Service
- txt_nbClients, indépendant, => T_service /nbClients
- lt_serveur, indépendant, liste de choix => T_service /Serveur

et un bouton (bt_newAddis) qui, sur click, lance la procédure suivante :

Private Sub bt_newAddis_Click()
Dim base As DAO.Database: Dim ligne As DAO.Recordset
Dim nb_fact As Byte: Dim requete As String
If (txt_date.Value <> "" And lt_repas.Value <> "" And lt_numTable.Value <> "" And lt_service.Value <> "" And txt_nbClients.Value <> "" And lt_serveur.Value <> "") Then
Set base = Application.CurrentDb
Set ligne = base.OpenRecordset("SELECT COUNT(ID_fact) AS nb_fact FROM T_service WHERE dateservice='" & txt_date.Value & "' AND repas='" & lt_repas.Value & "'", dbOpenDynaset)
ligne.MoveFirst
nb_fact = ligne.Fields("ID_fact").Value
If (Int(nb_fact > 0)) Then
MsgBox "La facture existe déjà, elle ne peut donc être créée une deuxième fois"
End If
Else
MsgBox "Pour créer une nouvelle facture, toutes les informations des champs doivent être renseignées"
End If
End Sub


La ligne :  Set ligne = base.OpenRecordset("SELECT COUNT(ID_fact) AS nb_fact FROM T_service WHERE dateservice='" & txt_date.Value & "' AND repas='" & lt_repas.Value & "'", dbOpenDynaset)
renvoie l’erreur suivante :

Erreur d’exécution ‘3464’ :
Type de données incompatible dans l’expression du critère.

Comment trouver quelle est la donnée incompatible ?
par avance merci
Fifi

2 réponses

yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
Modifié le 8 juin 2018 à 22:55
bonsoir, je pense que tu dois transformer txt_date.Value en date, afin qu'il soit compatible avec dateservice.
peut-être en remplacant
dateservice='" & txt_date.Value & "'

par
dateservice= " & clng(datevalue(txt_date.Value)) & " 

pour comprendre, tu peux aussi faire:
requete= "SELECT COUNT(ID_fact) AS nb_fact FROM T_service WHERE dateservice='" & txt_date.Value & "' AND repas='" & lt_repas.Value & "'"
Set ligne = base.OpenRecordset(requete, dbOpenDynaset)

en cas d'erreur, tu récupères la valeur de requête, et tu la testes à la main.
0
fifidibosco Messages postés 72 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 17 juillet 2023
9 juin 2018 à 12:42
Bonjour yg_be,
et merci, ça fonctionne avec
dateservice= " & clng(datevalue(txt_date.Value)) & "
fifi
0