Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/04/2007, 11h56   #1
Membre éclairé
 
Avatar de jmulans
 
Inscription : juin 2006
Messages : 397
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 397
Points : 346
Points : 346
Par défaut probleme de doublons dans base Access

bonjour

j'ai une table retourForm dans une base de donnée access
je veut y inserer des elements.
je selectionne le plus grand numero d'index dans la table et j'attribue a l'element que je veut inserer ce numero + 1.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQLREQ = "SELECT Max(numero_commentaire) as valeur FROM [RetourForm]"
Set RSNUMRETOUR = Server.Createobject("ADODB.Recordset")
RSNUMRETOUR.Open SQLREQ,Conn , 3, 3
 
'insertion du commentaire'
SQLREQ = "INSERT into RetourForm (numero_commentaire,texte,numero_demandeur)"
SQLREQ = SQLREQ & " VALUES('"& Cint(RSNUMRETOUR("valeur") + 1) &"','"& texte &"','"& numero_demandeur &"')"
Set RECSET = Server.Createobject("ADODB.Recordset")
 
RSNUMRETOUR.close
RECSET.Open SQLREQ,Conn , 3, 3
 
Conn.execute(SQLREQ) // ligne 30
 
RECSET.close
or quand je lance la requete j'ai ça :
Citation:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][Pilote ODBC Microsoft Access] Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez.

/V4/envoiRetour.asp, line 30
je fait deja cette manipulation plusieurs fois et ça ne m'a jamais posé soucis, je ne comprend pas
jmulans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 12h08   #2
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

J'ai pas tout lu, mais quand tu as ça, cela veut dire que tu essaye de remplir manuellement la clé primaire qui comme tu sais n'admet pas les doublons donc à toi de trouver un champ qui pourrait écrire la même ligne sauf modifier la clé primaire.

Par exemple
tu as les champs id, nom, prenom sachant que l'on met id en clé primaire et que tu ne modifie pas manuellement car autoincrementé ainsi tu autorise les doublons (homonyme)
De ce fait tu pourras avoir :
1 toto riri
2 toto riri

j'espère que sa pourra t'aider

++
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 13h44   #3
Membre éclairé
 
Avatar de jmulans
 
Inscription : juin 2006
Messages : 397
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 397
Points : 346
Points : 346
je n'avais jamais fait d'access avant, j'avais surtout fait du mysql, ou lo'n ne remplit pas la clé primaire dans les insert puisqu'elle s'autoincrémente

là c'est un projet que je reprend, ou il y a une base access
et des qu'il y a une insertion dans la base, la clé primaire est rensignée
alors je trouve ça bizarre, mais apparement ça fonctionne

d'apres toi je devrais faire ma requete comme ça ?
Code :
1
2
SQLREQ = "INSERT into RetourForm (texte,numero_demandeur)"
SQLREQ = SQLREQ & " VALUES('"& texte &"','"& numero_demandeur &"')"
j'ai essayé mais j'ai exactement la meme erreur.

edit : nan pas exactement en fait
avant ça m'inserais quand meme dans la base malrgé le message d'erreur
alors que là ça ne m'insere qu'une fois (la 1ere fois) avec comme id "0" et apres ça n'insere plus
jmulans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 16h58   #4
Nouveau Membre du Club
 
Inscription : mai 2005
Messages : 67
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 67
Points : 30
Points : 30
et si tu fais :

Code :
1
2
3
4
'insertion du commentaire'
SQLREQ = "INSERT into RetourForm (numero_commentaire,texte,numero_demandeur)"
SQLREQ = SQLREQ & " VALUES('"& Cint(RSNUMRETOUR("valeur")) + 1 &"','"& texte &"','"& numero_demandeur &"')"
Set RECSET = Server.Createobject("ADODB.Recordset")
?

[EDIT]
Autant pour moi, ça change rien...
la prochaine fois je testerai avant de poster :/

et oui en ASP, la concaténation se fait avec &, et non avec +, donc le cast se fait bien
[/EDIT]
sqlnoob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 21h39   #5
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

Tu trouve pas ça un peu bizarre :
Code :
1
2
3
4
<%
...VALUES('"& Cint(RSNUMRETOUR("valeur") + 1) &"',...
%>
Si ton champ et en numérique inutile de mettre les ', de plus si tu as un calcul à faire fait le avant de l'insérer dans la requête :
Code :
1
2
3
<%
Num_ret=Cint(RSNUMERETOUR("valeur"))+1
%>
ta requete :
Code :
1
2
3
<%
... VALUES("& Num_ret &",..)
%>
++
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 08h13   #6
Membre éclairé
 
Avatar de jmulans
 
Inscription : juin 2006
Messages : 397
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 397
Points : 346
Points : 346
Citation:
Envoyé par kaiser59
Salut,

Tu trouve pas ça un peu bizarre :
Code :
1
2
3
4
<%
...VALUES('"& Cint(RSNUMRETOUR("valeur") + 1) &"',...
%>
si justement je trouve ça bizarre
mais comme je l'ai dit plus haut, c'est un projet que je reprend, et tous les INSERT avant se faisaient comment ça, alors moi j'ai fait pareil
mais au final ça n'a pas l'air de fonctionner.
dans les table j'avais remarqué aussi que la clé primaire n'etais pas en autoincrément , alors pour la table que j'utilise là je l'ai mise en autoincrémente et ça fonctionne
mais je ne comprend pas pourquoi ça fonctionne les fois d'avant

merci
jmulans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/04/2007, 14h24   #7
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

Tu es sûr que sa fonctionné auparavant ?? Tu l'avais vue fonctionner ?

++
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 10h27   #8
Membre éclairé
 
Avatar de jmulans
 
Inscription : juin 2006
Messages : 397
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2006
Messages : 397
Points : 346
Points : 346
oui oui je suis sur
je l'ai meme refait, j'ai fait un INSERT sur une des table qui etais presente avant, en renseignant la clé primaire, et ça fonctionne
la clé primaire n'est pas en autoincrement

va comprendre...
jmulans est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/04/2007, 11h45   #9
Modérateur
 
Avatar de kaiser59
 
Inscription : novembre 2005
Messages : 1 246
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : novembre 2005
Messages : 1 246
Points : 1 203
Points : 1 203
Envoyer un message via MSN à kaiser59
Salut,

C'est claire que c'est à rien comprendre

++
kaiser59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h59.


 
 
 
 
Partenaires

Hébergement Web