OVH Cloud OVH Cloud

A97 : Créer plusieurs lignes dans une table ?

7 réponses
Avatar
Stéphane Brille
Bonsoir le forum,

un appel à l'aide malgré (ou à cause de ,) l'heure tardive !

à l'ouverture d'un formulaire, je cherche à créer dans une table "programme"
plusieurs lignes correspondant chacune aux 5 jours ouvrables, ce qui me
permettra de stocker des données par une méthode "SQL update". Mon code
marche bien quand la date existe déjà dans le champ "dateprog", mais je
n'arrive pas à la créer si elle n'existe pas déjà dans la table.

Mon formulaire comporte les champs date nommés "lundi", "mardi", "etc", qui
affichent chacun la bonne date, et je dispose des boutons qui me font aller
de semaine en semaine, en commençant par le lundi. je souhaite que pour
chaque semaine affichée soient créés les lignes correspondantes dans la
table. Comment m'y prendre pour que les lignes correspondantes soient
testées et créées le cas échéant dans la table ?

je suis empoté ce soir, et me mélange les pinceaux dans les rst.addnew
etc...
Pouvez-vous me mettre sur la voie ?

Merci d'avance !
--
Cordialement,

Stéphane Brille
www.microbloc.com

7 réponses

Avatar
Stéphane Brille
j'ai oublié de préciser que le form est indépendant, c'est p'tet important ?

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NosSpam. pour répondre)
Avatar
Anor
Bonjour,

Si j'ai bien compris (code non testé écrit à la volée)

Dim strsql as string
If dcount("*","LaTable","[dateprog] = #" & me!lundi.value & "#") = 0 then
strsql = "INSERT INTO LaTable (dateprog) SELECT " & me!lundi.value & " ;"
currentdb.execute strsql
end if

If dcount("*","LaTable","[dateprog] = #" & me!mardi.value & "#") = 0 then
strsql = "INSERT INTO LaTable (dateprog) SELECT " & me!mardi.value & " ;"
currentdb.execute strsql
end if

et ainsi de suite jusqu'à dimanche.
donc pas besoin d'ouvrir de recordset avec cette solution ;-)

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------

Stéphane Brille :
| Bonsoir le forum,
|
| un appel à l'aide malgré (ou à cause de ,) l'heure tardive !
|
| à l'ouverture d'un formulaire, je cherche à créer dans une table
| "programme" plusieurs lignes correspondant chacune aux 5 jours
| ouvrables, ce qui me permettra de stocker des données par une méthode
| "SQL update". Mon code marche bien quand la date existe déjà dans le
| champ "dateprog", mais je n'arrive pas à la créer si elle n'existe
| pas déjà dans la table.
|
| Mon formulaire comporte les champs date nommés "lundi", "mardi",
| "etc", qui affichent chacun la bonne date, et je dispose des boutons
| qui me font aller de semaine en semaine, en commençant par le lundi.
| je souhaite que pour chaque semaine affichée soient créés les lignes
| correspondantes dans la table. Comment m'y prendre pour que les
| lignes correspondantes soient testées et créées le cas échéant dans
| la table ?
|
| je suis empoté ce soir, et me mélange les pinceaux dans les rst.addnew
| etc...
| Pouvez-vous me mettre sur la voie ?
|
| Merci d'avance !
Avatar
Pierre CFI [mvp]
bonjour
oui, anor je sais pas si c'est la bonne solution, mais il faut un format date US
If dcount("*","LaTable","[dateprog] = #" & Format(me!lundi.value,"mm/dd/yyyy") & "#")

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Anor" <http://memoaccess.free.fr/anor/email.htm> a écrit dans le message de news: OqKqt#
Bonjour,

Si j'ai bien compris (code non testé écrit à la volée)

Dim strsql as string
If dcount("*","LaTable","[dateprog] = #" & me!lundi.value & "#") = 0 then
strsql = "INSERT INTO LaTable (dateprog) SELECT " & me!lundi.value & " ;"
currentdb.execute strsql
end if

If dcount("*","LaTable","[dateprog] = #" & me!mardi.value & "#") = 0 then
strsql = "INSERT INTO LaTable (dateprog) SELECT " & me!mardi.value & " ;"
currentdb.execute strsql
end if

et ainsi de suite jusqu'à dimanche.
donc pas besoin d'ouvrir de recordset avec cette solution ;-)

--
à+
Arnaud
--------------------------------------------------
Avant toute chose : http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
## Réponses souhaitées sur ce forum, merci. ##
--------------------------------------------------

Stéphane Brille :
| Bonsoir le forum,
|
| un appel à l'aide malgré (ou à cause de ,) l'heure tardive !
|
| à l'ouverture d'un formulaire, je cherche à créer dans une table
| "programme" plusieurs lignes correspondant chacune aux 5 jours
| ouvrables, ce qui me permettra de stocker des données par une méthode
| "SQL update". Mon code marche bien quand la date existe déjà dans le
| champ "dateprog", mais je n'arrive pas à la créer si elle n'existe
| pas déjà dans la table.
|
| Mon formulaire comporte les champs date nommés "lundi", "mardi",
| "etc", qui affichent chacun la bonne date, et je dispose des boutons
| qui me font aller de semaine en semaine, en commençant par le lundi.
| je souhaite que pour chaque semaine affichée soient créés les lignes
| correspondantes dans la table. Comment m'y prendre pour que les
| lignes correspondantes soient testées et créées le cas échéant dans
| la table ?
|
| je suis empoté ce soir, et me mélange les pinceaux dans les rst.addnew
| etc...
| Pouvez-vous me mettre sur la voie ?
|
| Merci d'avance !




Avatar
Stéphane Brille
Merci,

le code d'Anor marche super, j'ai simplement ajouté les # à la ligne
strsql = "INSERT INTO LaTable (dateprog) SELECT #" & me!lundi.value & "# ;"
sinon, les valeurs stockées ne sont pas prises pour des dates.

Pour la remarque de Pierre, j'ai déjà beaucoup galéré avec les formats de
dates US ou non dans mes vies antérieures, mais dans ce cas, le problème ne
se pose pas, peut-être parce que les valeurs dans Lundi, Mardi, etc, ont été
converties avec la fonction Cdate() ? ici, les dates sont stockées dans la
table au format dd/mm/yyyy.

Encore merci à vous de l'énergie que vous consacrez à ce forum, et de l'aide
apportée aux amateurs...

--
Cordialement,

Stéphane Brille
www.microbloc.com
Avatar
Pierre CFI [mvp]
oui, si tes dates dans ta table sont en dd/mm/yyyy, verifie quand méme sur des jours inférieurs à 12

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Stéphane Brille" a écrit dans le message de news: boqc7f$tdk$
Merci,

le code d'Anor marche super, j'ai simplement ajouté les # à la ligne
strsql = "INSERT INTO LaTable (dateprog) SELECT #" & me!lundi.value & "# ;"
sinon, les valeurs stockées ne sont pas prises pour des dates.

Pour la remarque de Pierre, j'ai déjà beaucoup galéré avec les formats de
dates US ou non dans mes vies antérieures, mais dans ce cas, le problème ne
se pose pas, peut-être parce que les valeurs dans Lundi, Mardi, etc, ont été
converties avec la fonction Cdate() ? ici, les dates sont stockées dans la
table au format dd/mm/yyyy.

Encore merci à vous de l'énergie que vous consacrez à ce forum, et de l'aide
apportée aux amateurs...

--
Cordialement,

Stéphane Brille
www.microbloc.com




Avatar
Stéphane Brille
J'ai encore répondu trop vite !
Pierre a raison, il faut passer en format US, mais pourquoi 27/10/2003
s'enregistre-t'il correctement dans la table, alors que 03/10/2003 donne
10/03/2003 ? parce que 27 > 12 ?
On est peu de chose, quand même...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)
Avatar
Pierre CFI [mvp]
et oui, des que le jour est > 12, il comprend
d'ailleurs dans une table acces si tu saisis 4/14/2003 , automatiquement il ecris 14/4/2003
ah ces dates :o(((

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Stéphane Brille" a écrit dans le message de news: boqdfj$l3i$
J'ai encore répondu trop vite !
Pierre a raison, il faut passer en format US, mais pourquoi 27/10/2003
s'enregistre-t'il correctement dans la table, alors que 03/10/2003 donne
10/03/2003 ? parce que 27 > 12 ?
On est peu de chose, quand même...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)