Merci pour ta reponse,
J'utilise la methode POST donc le form convient parfaitement...
Merci pour ta reponse,
J'utilise la methode POST donc le form convient parfaitement...
si c'est résolu pense à cliquer sur
ok au temps pour moi!
pardonnes mon empressement
Si t'as des soucis n'hésite pas on est là pour s'entre-aider
Encore et toujours des soucis...
J'aimerais effectuéer l'update sur une autre page mais apparement je m'y prends mal ...( encore une fois ) ..j'ai essayé ainsi mais sans success :
Sel est l'IDMatricule de la personne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Dim Sel,IDFormation Sel=Request.Form("Sel") IDFormation=Request.Form("IDFormation") <%'-------création de la connection et du recordset----------- Set Conn = Server.CreateObject("ADODB.Connection") Conn.Mode=3 Conn.Open "DBEmploye" Set Rs = Server.CreateObject("ADODB.Recordset") Set RsForm = Server.CreateObject("ADODB.Recordset") Rs.Open "Select * from tblEncodage",Conn , adCmdTable %> <% Do while not Rsform.EOF Rs.Addnew Rs("IDMatricule")= ("Sel") Rs("IDFormation")=RsForm("IDFormation") Rs.Update RsForm.MoveNext loop 'Wend %> <%'-------fermeture de la connection et du recordset---------- Set Rs = Nothing Conn.Close Set Conn = Nothing%>
En fait je ne sais pas si je recupere bien les donnée,....
faut il reeouvrir un nouveau recordset RsForm utilisé auparavant ?
J'ai un message d'erreur EOF is true.........donc il ne fait pas la boucle d'update ??
HELP HELP !! y a encore bcp de trucs qui m'echappe en asp ....
1) pour savoir si tu récupères bien les données
fais un response.write Request.Form("monchamp")
2) Faut -il réouvrir RsForm oui
3)Ton RsForm n'est pas ouvert donc tu ne passeras jamais dans ta boucle
4) euh réexpliques ce que tu cherches a faire je me souviens plus (C'est vendredi )
En fait ce que j'aimerais c'est inscirre dans ma tableEncodage ( RsForm) les case qui ont ete cochez par l'utilisateur, Mais je n'arrive pas a recuperer les valeurs des cases a cocher et de faire l'update dans ma table !!Envoyé par Pymm
les checkbox doivent avoir une certaine valeur et non pas un "non/oui"
Le code que tu m'avait donné etait bon mais je n'arrive pas a l'inserer a la bonne place .....
ta checkbox est de ce style :
à la validation du formulaire si elle a été cochée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part <input type="checkbox" nom="machkbx" id="machkbx" value="OK">
ton request.form("machkbx")="OK" sinon request.form("machkbx")=""
Conseil : dans cette partie tu n'as pas besoin des <% et %> car tu n'as que de l'ASP. Ils ne s'utilisent que lors du passage de l'ASP vers le HTML ou le javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Dim Sel,IDFormation Sel=Request.Form("Sel") IDFormation=Request.Form("IDFormation") '-------création de la connection et du recordset----------- Set Conn = Server.CreateObject("ADODB.Connection") Conn.Mode=3 Conn.Open "DBEmploye" Set Rs = Server.CreateObject("ADODB.Recordset") Set RsForm = Server.CreateObject("ADODB.Recordset") Rs.Open "Select * from tblEncodage",Conn , adCmdTable RsForm.Open "Select * from tblEncodage",Conn , adCmdTable Do while not Rsform.EOF If Request.Form(RsForm("IdFormation"))="OK" Rs.Addnew Rs("IDMatricule")= ("Sel") Rs("IDFormation")=RsForm("IDFormation") Rs.Update End If RsForm.MoveNext loop '-------fermeture de la connection et du recordset---------- Rs.Close Set Rs = Nothing RsForm.Close Set RsForm=Nothing Conn.Close Set Conn = Nothing
ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10... While Not Rs.EOF ... Wend %> <script language="javascript"> ... </script> <%
lorsque j'exécute j'ai un message d'erreur suivant :
Ma ligne 21 est la suivant Rs.Add
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ADODB.Recordset (0x800A0CB3) Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype. /BDF/traitement_form.asp, line 21
J'ai bien tout les droits, j'ai essayé dans la base access directemente et ca marche !!
Je pense qu'il y a un problème avec le recordset !!
Sur la page du formulaire j'avais le RsForm suivant:
Dois je utiliser les meme sur cette page ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 RsForm.Open "Select * from tblEncodage WHERE IDMatricule =" &Sel , ConnTable RsTable.Open "Select * from tblFormation WHERE IDFormation <20" , ConnTable RsAdd.Open " Select * from tblEncodage", ConnTable%>
testes en changeant ces lignes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 'Conn.Mode=3 //mets cette ligne en commentaire Rs.Open "Select * from tblEncodage",Conn , 1,3 RsForm.Open "Select * from tblEncodage",Conn , 1,3
Ca a l'air de fonctionner mais il me met une vingtaine de fois le matricule dans ma table !!! j'ai donc du enlever les cle primaire, index.....
Problème dans la boucle a mon avis !!!
L'insertion se fait dans ma base de donnée access mais j'ai du enlever les cle primaire. Le problème est que si la case est deja coché, il essaye de me la rajouter dans la base...comment faire pour tester si les valeurs se trouvent deja dans la base ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Dim Sel,IDFormation Sel=Request.Form("Sel") IDFormation=Request.Form("IDFormation") IDFormation=CINT(IDFormation) '-------création de la connection et du recordset----------- Set Conn = Server.CreateObject("ADODB.Connection") 'Conn.Mode=3 Conn.Open "DBEmploye" Set Rs = Server.CreateObject("ADODB.Recordset") Set RsForm = Server.CreateObject("ADODB.Recordset") Rs.Open "Select * from tblEncodage",Conn ,1,3 RsForm.Open "Select * from tblFormation ",Conn ,1,3 Do while not Rsform.EOF If Request.Form(RsForm("IdFormation"))="OK" then Rs.Addnew Rs("IDMatricule")= (Sel) Rs("IDFormation")=RsForm("IDFormation") Rs.Update End If RsForm.MoveNext loop
j'ai aussi un message d'erreur : Request object, ASP 0105 (0x80004005)
An array index is out of range.
/BDF/traitement_form.asp, line 23
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 line23. If Request.Form(RsForm("IdFormation"))="OK" then
J'en finirai donc jamais avec cette update :
c'est une mise à jour ou un création que tu fais ?
En fait j'aimerais faire une création lorsque la formation n'a pas eté effectué et une mise a jour pour sélectionner ou déselectionner une formation donc en fait c'est un melange des 2 ...
j'aimerais qu'il ne me crée que les formations qui n'ont pas encore ete coché....mais ici lorsque je fais " valider " il me crée automatiquement toute les formations qui ont ete coché meme celles qui ont ete coché auparavant donc ca crée un probleme de redondance...:s
tu peux créer un recordset sur une simple requete de ta base, tu le parcours en le comparant à tes formations cochées, si ça existe MAJ, si ça n'existe pas INSERT
genre :
while not rs.EOF
maval = rs("formation")
if maval = maformationcheckee then
sql = update...
else
sql = insert
en gros c'est l'idée...
ce que j'aimerais c'est de comparer si ma valeur checked est deja dans ma table Encodage !!
Puisque mes case a cocher se traduise en Numerique dans ma table !!
du style
If Request.Form RsForm("IDFormation")="OK" And RsForm("IDFormation") != Rs("IDFormation") ..........ou Rs est ma table Encodage
Dans cette situation, je supprime tous les enregistrements de la personne et j'ajoute ensuite comme ça pas de problème de doublons
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 Dim Sel,IDFormation Sel=Request.Form("Sel") IDFormation=Request.Form("IDFormation") IDFormation=CINT(IDFormation) '-------création de la connection et du recordset----------- Set Conn = Server.CreateObject("ADODB.Connection") 'Conn.Mode=3 Conn.Open "DBEmploye" Set Rs = Server.CreateObject("ADODB.Recordset") Set RsForm = Server.CreateObject("ADODB.Recordset") Rs.Open "Delete * from tblEncodage where IDMatricule=" & Sel & ";",Conn ,1,3 Rs.Open "Select * from tblEncodage;",Conn ,1,3 RsForm.Open "Select * from tblFormation ",Conn ,1,3 Do while not Rsform.EOF If Request.Form(RsForm("IdFormation"))="OK" then Rs.Addnew Rs("IDMatricule")= Sel Rs("IDFormation")=RsForm("IDFormation") Rs.Update End If RsForm.MoveNext loop
Bonjour,
Une autre façon de faire :Envoyé par Pymm
Désactiver le gestionnaire d'erreurs (on error resume next)
Exécuter une requête INSERT
Si err > 0 => requête UPDATE
Merci l'update marche bien mise a part que j'ai toujours un message d'erreur ....array index is out of range
Maintenant j'aimerais y ajouter la date aussi mais j'ai un doute concernant la récupération du name de l'input box ...j'explique :
dans mon formulaire j'ai l'input box de type texte :
Comment je fais pour récuper ce type de nom ??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Response.Write " <td>" & chr(10) Response.Write " <input id=""date_" & RsTable("IDFormation") & """ type=""text"" name=""date_" & RsTable("IDFormation")& """ value="""">" & chr(10) Response.Write " </td>" & chr(10)
DDate = "date_" Request.form("IDFormation") ??????????
De + quand j'essaye d'updater la date et que je coche les cases 1,2,3,4,5
i me coche les cases 1,3,5,7 :
bon on va tout d'abord s'occuper de ton problème d'indice :
indique moi la ligne incriminée
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager