Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Insert into : besoin d'aide sur un code SQL (encore ?)

7 réponses
Avatar
Stéphane Brille
Bonjour,

j'utilise le code suivant pour ajouter un enregistrement dans la table
ProgParam, en donnant une valeur (chEntrée) au champ NomProg grâce à une
InputBox :

strsql = "INSERT INTO ProgParam (NomProg) VALUES ('" & chEntrée & "')"
CurrentDb.Execute strsql

Tout ça marche bien, j'ajoute une ligne à ma table, dont le champ ProgParam
contient le nom donné par l'inputbox, les autres champs sont vierges dans
cette ligne.
Mais comment devrais-je faire pour que la ligne créée dans ma table
contienne toutes les valeurs initiales des champs (En fait, je cherche à
recopier à l'identique la ligne affichée par mon formulaire, en renommant
simplement mon champ NomProg avec la valeur de mon choix...)

je sèche depuis longtemps là dessus, merci de me pousser un peu...

--
Cordialement,

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

7 réponses

Avatar
J-Pierre
Bonsoir,

En rajoutant plein de virgules....

strsql = "INSERT INTO ProgParam (NomProg, ch1, ch2) VALUES ('" & chEntrée & "', '" & xxx & "', '" & yyy & "')"

J-Pierr

"Stéphane Brille" a écrit dans le message de news:bq0qed$3b4$
Bonjour,

j'utilise le code suivant pour ajouter un enregistrement dans la table
ProgParam, en donnant une valeur (chEntrée) au champ NomProg grâce à une
InputBox :

strsql = "INSERT INTO ProgParam (NomProg) VALUES ('" & chEntrée & "')"
CurrentDb.Execute strsql

Tout ça marche bien, j'ajoute une ligne à ma table, dont le champ ProgParam
contient le nom donné par l'inputbox, les autres champs sont vierges dans
cette ligne.
Mais comment devrais-je faire pour que la ligne créée dans ma table
contienne toutes les valeurs initiales des champs (En fait, je cherche à
recopier à l'identique la ligne affichée par mon formulaire, en renommant
simplement mon champ NomProg avec la valeur de mon choix...)

je sèche depuis longtemps là dessus, merci de me pousser un peu...

--
Cordialement,

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




Avatar
3stone
Salut,

"Stéphane Brille"
j'utilise le code suivant pour ajouter un enregistrement dans la table
ProgParam, en donnant une valeur (chEntrée) au champ NomProg grâce à une
InputBox :

strsql = "INSERT INTO ProgParam (NomProg) VALUES ('" & chEntrée & "')"
CurrentDb.Execute strsql

Tout ça marche bien, j'ajoute une ligne à ma table, dont le champ ProgParam
contient le nom donné par l'inputbox, les autres champs sont vierges dans
cette ligne.


Ici, ProgParam est le nom de la table... et, NomProg est le nom du champ


Mais comment devrais-je faire pour que la ligne créée dans ma table
contienne toutes les valeurs initiales des champs (En fait, je cherche à
recopier à l'identique la ligne affichée par mon formulaire, en renommant
simplement mon champ NomProg avec la valeur de mon choix...)


Qu'entend tu par "valeurs initiales" ?
et renommer le champ, avec la valeur de ton choix ?

Pas clair (pour moi ;)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Avatar
Stéphane Brille
Salut, c'est vrai que j'ai du mal à m'expliquer clairement !

En fait, mon formulaire correspond à des paramètres utilisés par mon appli.
Chaque utilisateur peut créer un jeu de paramètres qui lui correspond et
enregistre ses préférences dans la table ProgParam, chaque jeu de paramètres
(chaque ligne de la table...) porte un nom unique, placé dans le champ
NomProg de la table. Ce form est ensuite affiché en mode masqué, et toute
l'appli s'y réfère en cas de besoin...

Quand un nouvel utilisateur arrive, je souhaite lui proposer d'afficher le
jeu de paramètres qui lui convient le mieux (donc de faire défiler dans le
form les enregistrements de la table ProgParam sous-jacente), puis de
recopier ces enregistrements pour se créer un jeu de paramètres
personnalisé, s'il le souhaite (c-à-d ajouter une ligne à la table
ProgParam, en recopiant les valeurs qui étaient affichées par le form). Il
pourra donc les modifier rapidement et facilement pour les adapter à ses
besoins.

c'est ici que se situe mon problème : je sais recopier la ligne entière,
mais je crée un doublon sur le champ NomProg, ce que la structure de ma
table n'accepte pas (c'est surtout moi qui voudrait que chaque ligne porte
un nom différent !)

C'est pour ça que je cherche à intercepter, au moment de la recopie des
champs, le champ NomProg avec une inputBox, obligeant l'utilisateur à saisir
un nom différent.

Merci d'avoir eu la patience de lire jusqu'ici, je pense avoir été un peu
plus clair. toutes vos idées m'intéressent...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)
"3stone" a écrit dans le message de news:
3fc3ef9d$0$2875$
Salut,

"Stéphane Brille"
j'utilise le code suivant pour ajouter un enregistrement dans la table
ProgParam, en donnant une valeur (chEntrée) au champ NomProg grâce à une
InputBox :

strsql = "INSERT INTO ProgParam (NomProg) VALUES ('" & chEntrée & "')"
CurrentDb.Execute strsql

Tout ça marche bien, j'ajoute une ligne à ma table, dont le champ
ProgParam


contient le nom donné par l'inputbox, les autres champs sont vierges
dans


cette ligne.


Ici, ProgParam est le nom de la table... et, NomProg est le nom du
champ



Mais comment devrais-je faire pour que la ligne créée dans ma table
contienne toutes les valeurs initiales des champs (En fait, je cherche à
recopier à l'identique la ligne affichée par mon formulaire, en
renommant


simplement mon champ NomProg avec la valeur de mon choix...)


Qu'entend tu par "valeurs initiales" ?
et renommer le champ, avec la valeur de ton choix ?

Pas clair (pour moi ;)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------







Avatar
3stone
Salut,

"Stéphane Brille"

c'est ici que se situe mon problème : je sais recopier la ligne entière,
mais je crée un doublon sur le champ NomProg, ce que la structure de ma
table n'accepte pas (c'est surtout moi qui voudrait que chaque ligne porte
un nom différent !)

C'est pour ça que je cherche à intercepter, au moment de la recopie des
champs, le champ NomProg avec une inputBox, obligeant l'utilisateur à saisir
un nom différent.



Tu as vu la réponse de J-Pierre ?

Si je comprends... cela doit tourner autour de cela.
Sinon, je ne comprend pas ta difficulté à coller le nom du prog (NomProg)
demander à l'utilisateur dans ta requête...

Avec l'exemple de J-Pierre :

Dim chEntrée As String
chEntrée = InputBox ("Nom du prog ? " )

et la chaine sql...

et avant d'executer ajout, vérifier par un Dlookup ou DCount si le nom existe...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Avatar
Stéphane Brille
Merci à vous 2 pour votre aide, je vais suivre vos conseils, ça fera une
belle ligne plein de virgules car il y a une soixantaine de champs à gérer
!
à bientôt pour d'autres soucis...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)
"3stone" a écrit dans le message de news:
3fc4f075$0$2863$
Salut,

"Stéphane Brille"

c'est ici que se situe mon problème : je sais recopier la ligne entière,
mais je crée un doublon sur le champ NomProg, ce que la structure de ma
table n'accepte pas (c'est surtout moi qui voudrait que chaque ligne
porte


un nom différent !)

C'est pour ça que je cherche à intercepter, au moment de la recopie des
champs, le champ NomProg avec une inputBox, obligeant l'utilisateur à
saisir


un nom différent.



Tu as vu la réponse de J-Pierre ?

Si je comprends... cela doit tourner autour de cela.
Sinon, je ne comprend pas ta difficulté à coller le nom du prog (NomProg)
demander à l'utilisateur dans ta requête...

Avec l'exemple de J-Pierre :

Dim chEntrée As String
chEntrée = InputBox ("Nom du prog ? " )

et la chaine sql...

et avant d'executer ajout, vérifier par un Dlookup ou DCount si le nom
existe...



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------









Avatar
J-Pierre
Oui, Stéphane, 60 virgules, tu seras dans le livre des records, bravo..........

Autres possibilités, mais tu resteras anonyme.
1/---------------------------------------------
Tu crées ta ligne dans la table avec seulement le NomProg, et après, tu mets cette ligne à jour avec une requête. Mais ça fera une
grosse requête.
2/--------------------------------------------
Tu rajoutes un champ numérique Long dans ta table ProgParam , disons truc, ce champ n'est ni clé, ni index.
Tu crées une nouvelle table qui te servira de table intermédiaire, copie conforme de ProgParam, mais là, la clé est le champ truc
que tu définis comme autonum.

Tu recopies la ligne entière dans la table intermédiaire et tu récupères la valeur du champ truc autonum pour la ligne insérée.
Tu modifies le champ NomProg
Tu insères la ligne de la table intermédiaire dans la table ProgParam:

INSERT INTO ProgParam SELECT [table intermédiaire].* FROM [table intermédiaire] WHERE truc = xxxxxxx;
---------------------------------------------

T'as vu ? y'a pas une seule virgule...........................................

J-Pierre - Expert en réduction du nombre de virgules.

"Stéphane Brille" a écrit dans le message de news:bq3612$gkd$
Merci à vous 2 pour votre aide, je vais suivre vos conseils, ça fera une
belle ligne plein de virgules car il y a une soixantaine de champs à gérer
!
à bientôt pour d'autres soucis...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)
"3stone" a écrit dans le message de news:
3fc4f075$0$2863$
Salut,

"Stéphane Brille"

c'est ici que se situe mon problème : je sais recopier la ligne entière,
mais je crée un doublon sur le champ NomProg, ce que la structure de ma
table n'accepte pas (c'est surtout moi qui voudrait que chaque ligne
porte


un nom différent !)

C'est pour ça que je cherche à intercepter, au moment de la recopie des
champs, le champ NomProg avec une inputBox, obligeant l'utilisateur à
saisir


un nom différent.



Tu as vu la réponse de J-Pierre ?

Si je comprends... cela doit tourner autour de cela.
Sinon, je ne comprend pas ta difficulté à coller le nom du prog (NomProg)
demander à l'utilisateur dans ta requête...

Avec l'exemple de J-Pierre :

Dim chEntrée As String
chEntrée = InputBox ("Nom du prog ? " )

et la chaine sql...

et avant d'executer ajout, vérifier par un Dlookup ou DCount si le nom
existe...



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------













Avatar
Stéphane Brille
Salut,
j'ai finalement résolu mon problème avec la méthode AddNew après
OpenRecordset.

Si quelqu'un est interessé, j'envoie le code...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)
"J-Pierre" a écrit dans le message de
news: eL#k$
Oui, Stéphane, 60 virgules, tu seras dans le livre des records,
bravo..........


Autres possibilités, mais tu resteras anonyme.
1/---------------------------------------------
Tu crées ta ligne dans la table avec seulement le NomProg, et après, tu
mets cette ligne à jour avec une requête. Mais ça fera une

grosse requête.
2/--------------------------------------------
Tu rajoutes un champ numérique Long dans ta table ProgParam , disons truc,
ce champ n'est ni clé, ni index.

Tu crées une nouvelle table qui te servira de table intermédiaire, copie
conforme de ProgParam, mais là, la clé est le champ truc

que tu définis comme autonum.

Tu recopies la ligne entière dans la table intermédiaire et tu récupères
la valeur du champ truc autonum pour la ligne insérée.

Tu modifies le champ NomProg
Tu insères la ligne de la table intermédiaire dans la table ProgParam:

INSERT INTO ProgParam SELECT [table intermédiaire].* FROM [table
intermédiaire] WHERE truc = xxxxxxx;

---------------------------------------------

T'as vu ? y'a pas une seule
virgule...........................................


J-Pierre - Expert en réduction du nombre de virgules.

"Stéphane Brille" a écrit dans le message
de news:bq3612$gkd$

Merci à vous 2 pour votre aide, je vais suivre vos conseils, ça fera une
belle ligne plein de virgules car il y a une soixantaine de champs à
gérer


!
à bientôt pour d'autres soucis...

--
Cordialement,

Stéphane Brille
www.microbloc.com
(enlevez NoSpam. pour répondre)
"3stone" a écrit dans le message de news:
3fc4f075$0$2863$
Salut,

"Stéphane Brille"

c'est ici que se situe mon problème : je sais recopier la ligne
entière,




mais je crée un doublon sur le champ NomProg, ce que la structure de
ma




table n'accepte pas (c'est surtout moi qui voudrait que chaque ligne
porte


un nom différent !)

C'est pour ça que je cherche à intercepter, au moment de la recopie
des




champs, le champ NomProg avec une inputBox, obligeant l'utilisateur
à




saisir
un nom différent.



Tu as vu la réponse de J-Pierre ?

Si je comprends... cela doit tourner autour de cela.
Sinon, je ne comprend pas ta difficulté à coller le nom du prog
(NomProg)



demander à l'utilisateur dans ta requête...

Avec l'exemple de J-Pierre :

Dim chEntrée As String
chEntrée = InputBox ("Nom du prog ? " )

et la chaine sql...

et avant d'executer ajout, vérifier par un Dlookup ou DCount si le nom
existe...



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------