PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → insert date dans bdd *.mdb
insert date dans bdd *.mdb
Iniciado por Stéphane D., 07,ago. 2019 15:15 - 3 respuestas
Miembro registrado
230 mensajes
Publicado el 07,agosto 2019 - 15:15
Bonjour à tous,
Je veux faire un simple insert dans une table mdb mais sa plante,
Voici le code :
madate est une Date = Gauche(DateSys(),8)

Reqtxt=[
INSERT INTO PC
(
CODE
,LIBELLE
,DATE
)VALUES
('%1','%2','%3')
]

Reqtxt = ChaîneConstruit(Reqtxt,"00420", "Mon new article",madate)

SI PAS HExécuteRequêteSQL(Reqsql,cnxAccess,hRequêteSansCorrection,Reqtxt) ALORS
Erreur(HErreurInfo())
FinProgramme()
FIN

Elle fait un insert parfait quand je ne lui mets pas de rubrique DATE, par contre si j'ajoute la rubrique DATE sa plante et me donne ce message :
Erreur de syntaxe dans l'instruction INSERT INTO.
Si quelqu'un aurait une idée pour le format de la date...
Merci d'avance.

--
Stéphane.
Miembro registrado
4.361 mensajes
Publicado el 07,agosto 2019 - 15:39
Bonjour,
Ma réponse va sembler ridicule, mais le format date est le format défini dans la table Access.
Va voir du côté de DateVersChaine pour passer le bon format.

Voici la doc Acces concernant le traitement des dates
https://support.office.com/fr-fr/article/mettre-en-forme-un-champ-de-date-et-d-heure-47fbbdc1-52fa-416a-b8d5-ba24d881b698…

--
Il y a peut être plus simple, mais, ça tourne
Mensaje modificado, 07,agosto 2019 - 15:43
Miembro registrado
512 mensajes
Publicado el 07,agosto 2019 - 18:51
Bonjour,

En préambule, le nom d'une rubrique dans une table MS Access ne doit pas être un mot-clé (réservé) parce que l'analyseur du code SQL de MS Access provoque une erreur.
Ou alors dans le SQL, il faut "protéger" ce nom de rubrique en l'encadrant avec des crochets pour informer l'analyseur qu'il ne s'agit pas d'un mot-clé.
Ici, le nom de la rubrique DATE va provoquer une erreur de syntaxe, sauf si on protège ce nom de rubrique.

Et maintenant le format de date...
Comme il s'agit d'une requête sans correction (hRequêteSansCorrection) il faut respecter scrupuleusement le format de date de MS Access.

Le délimiteur de date est le caractère # . Il ne faut pas utiliser le caractère simple quote (c'est-à-dire l'apostrophe).
Le séparateur des composantes de la date est / ou - .
L'ordre des composantes de la date est :
Mois Jour Année

Exemple de date littérale valide pour le SQL de MS Access, ici le 14 juillet 2019 :
#7/14/2019#

Voilà une proposition de correction du code:
madate est une Date = DateSys()

Reqtxt est une chaîne = [
INSERT INTO PC
( CODE, LIBELLE, [DATE] )
VALUES
( '%1', '%2', #%3# )
]

Reqtxt = ChaîneConstruit(Reqtxt,"00420", "Mon new article",DateVersChaîne(madate,"MM/JJ/AAAA"))


L'évaluateur d'expression SQL de MS Access accepte aussi un certain nombre de fonctions VBA.
Par exemple, la fonction Date() retourne la date système.
C'est possible de l'utiliser en lieu et place du 3ème paramètre.
Reqtxt est une chaîne = [
INSERT INTO PC
( CODE, LIBELLE, [DATE] )
VALUES
( '%1', '%2', Date() )
]

Reqtxt = ChaîneConstruit(Reqtxt,"00420", "Mon new article")


:)

--
Pour me contacter par courrier électronique, cliquez sur le lien ci-dessous (protection antispam): http://cerbermail.com/…
Mensaje modificado, 07,agosto 2019 - 18:56
Miembro registrado
230 mensajes
Publicado el 07,agosto 2019 - 23:24
Salut à vous et merci pour votre réponse.
=JBO= C'est bien cela le mot DATE et réservé donc en mettant [DATE] sa passe nickel...

Merci encore pour votre aide.

--
Stéphane.