Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3061 connectés 

  FORUM HardWare.fr
  Programmation
  ASP

  pb requête update Access avec equi-jointure de table

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

pb requête update Access avec equi-jointure de table

n°1426473
rouanelion
Posté le 17-08-2006 à 10:55:38  profilanswer
 

Bonjour,
 
Voilà mon problème je veux mettre à jour deux champs(mini) de deux tables différentes mais liées par un identifiant.
Le hic c'est que je renseigne mes deux champs de la requete sql avec deux variables et j'arrive pas a chopper la bonne syntaxe étant donné que je suis en asp avec une bdd Access et que je suis débutant en asp  :whistle:.
Voici mon code qui pose probleme
 

Code :
  1. <% @LANGUAGE="VBSCRIPT" %>
  2. <%
  3. vNum=Application("IdUnique" )
  4. var1=request.form("champ1" )
  5. var2=request.form("champ2" )
  6. %>
  7. <%
  8. Set OBJdbConnection = Server.CreateObject ("ADODB.Connection" )
  9. OBJdbConnection.Open "DSN=NomDeMaBDD;UID=;PWD=" 
  10. sql="UPDATE tab2, tab1 SET col2_prenom="&var1&", col1_nom="&var2&" WHERE tab2.col2_visa = "&vNum&" AND tab1.col1_cle = tab2.col2_cle"
  11. set req=OBJdbConnection.execute(sql)
  12. %>


J'ai afficher toutes mes variables et elles sont bien renseignées donc c'est vraiment au niveau de la requete que la syntaxe passe pas :( .
Donc j'ai un message d'erreur qui apparait me signalant que la =>" de "&var1&" dans la requete est prise comme une fin de requete :pfff:  et qu il comprend plus la suite j'ai tenté de remplacer par des ' mais ma variable n'est pas pris en compte. :sweat:  
Si quelqu'un à une idée de la syntaxe pour mes variables...merci d'avance
 :hello:


Message édité par rouanelion le 18-08-2006 à 11:35:55
mood
Publicité
Posté le 17-08-2006 à 10:55:38  profilanswer
 

n°1426479
jbourdello​n
Posté le 17-08-2006 à 11:01:52  profilanswer
 

\" ou \' autour des variables come ca :  
 
 
- tu mets des guillemets autour des valeurs de ta requete : normal c'est des string  
- Tu les échappes pour qu'il ne soit pas interprétés
 

n°1426485
rouanelion
Posté le 17-08-2006 à 11:05:12  profilanswer
 

Donc je dois mettre par exemple:

Code :
  1. sql="UPDATE tab2, tab1 SET col2_prenom=\"&var1&\", col1_nom=\"&var2&\" WHERE tab2.col2_visa = "&vNum&" AND tab1.col1_cle = tab2.col2_cle"


 
Où je suis a coté de la plaque et je dois virer les &

n°1426488
jbourdello​n
Posté le 17-08-2006 à 11:08:20  profilanswer
 

Citation :

sql="UPDATE tab2, tab1 SET col2_prenom=\""&var1&"\", col1_nom=\""&var2&"\" WHERE tab2.col2_visa = "&vNum&" AND tab1.col1_cle = tab2.col2_cle"

n°1426500
rouanelion
Posté le 17-08-2006 à 11:20:25  profilanswer
 

Merci bien de ton aide, j'ai trouvé la syntaxe qui marche

Code :
  1. sql="UPDATE tab2, tab1, Elu SET col2_prenom='"&var1&"', col1_nom='"&var2&"' WHERE tab2.col2_visa = "&vNum&" AND tab1.col1_cle = tab2.col2_cle"


Sinon j'avais les \ dans l'enregistrement :-)
En revanche si je mets comme prenom => j'asper, le ' empeche de faire un update, y a t'il un moyen de parer se problème.
Encore merci de ton aide ^_^

n°1426510
jbourdello​n
Posté le 17-08-2006 à 11:32:27  profilanswer
 

Essaie un traitement sur les paramètres ( suppresion des ' ou échappement )

n°1426511
rouanelion
Posté le 17-08-2006 à 11:33:33  profilanswer
 

Re tout le monde,
 
En fait, j'ai quand même des problèmes avec cette requête, s'il y aucun caractère je ne peux pas faire l'update il faut au mini que je mette un espace et s'il y a une cote ' ça tue ma requete...le drame
Si quelqu un a une idée :)
 
Merci

n°1426646
rouanelion
Posté le 17-08-2006 à 14:39:16  profilanswer
 

Re,
 
Bon j'ai fait un traitement de ma chaine de caractere

Code :
  1. <%
  2. for i=0 to 26
  3. response.Write("la valeur est :"&Tab(i)&"<br>" )
  4. CleanReplaceApos=replace(Tab(i),"'"," " ) //remplace les apostrophes par espace
  5. RemSpace=trim(CleanReplaceApos) //Supprime les espaces avant et apres ma chaine de caracteres
  6. longueur=len(RemSpace) //renvoie la taille de ma chaine de caracteres
  7. response.Write("la longueur est :"&longueur&"<br>" ) //affiche la taille
  8. response.Write("la phrase est :"&RemSpace&"<br>" ) //affiche le resultat apres le traitement
  9. next
  10. %>


Me reste plus que le probleme de la mise a jour quand la longueur est à 0 car ça fait planter ma requete donc si quelqu un a une idée car je vois pas comment faire sans faire un travail de porc genre si longueur=0 alors RemSpace=" "...autant dire vaudrait mieux éviter ^^


Message édité par rouanelion le 17-08-2006 à 14:39:58
n°1426700
rouanelion
Posté le 17-08-2006 à 15:21:32  profilanswer
 

Voilà le message d'erreur que j'obtiens
 
Microsoft OLE DB Provider for ODBC Drivers erreur '80004005'  
 
[Microsoft][Pilote ODBC Microsoft Access] Le champ 'tab1.col1_bp' ne peut pas être une chaîne vide.  
 
/home/asp_test/boucle.asp, ligne 56  
 
Si ça fait penser à quelque chose a quelqu un je le remercie d'avance car là je bloque


Message édité par rouanelion le 17-08-2006 à 15:22:02
n°1426704
lapin21
Posté le 17-08-2006 à 15:26:16  profilanswer
 

Ca plante si var1 ou var2 sont vides ? Bizarre.
 
A part mettre un contrôle sur le formulaire pour empêcher les champs vides, je crois que tu n'échapperas pas à ta solution "à la main".

mood
Publicité
Posté le 17-08-2006 à 15:26:16  profilanswer
 

n°1426705
jbourdello​n
Posté le 17-08-2006 à 15:26:34  profilanswer
 

Ben on dirait que que col1_bp n'est pas renseigné dans ta requete donc ...

n°1426712
rouanelion
Posté le 17-08-2006 à 15:35:14  profilanswer
 

En faite ce qui se passe c'est que je fais un formulaire pour modifier des données existantes que je met par defaut dans les champ de mon formulaire donc si un champ n'est pas remplie et que j'y touche pas quand j'envoie ma requete la variable par defaut est vide...donc j'aimerai la laissé vide donc col1_bp est renseigné par une variable qui n'a rien...donc c'est un peu foireux peut-être comme systeme?

n°1426716
rouanelion
Posté le 17-08-2006 à 15:39:54  profilanswer
 

J'ai une solution de contournement mais qui me plait pas car c'est pas propre, je la donne quand meme des fois que des gens ont le meme problème et veule avancer

Code :
  1. if len(RemSpace)=0 then // si la taille de la chaine de caracteres=0 alors je met un espace
  2. response.Write("champ vide" ) //permet juste de savoir quand je passe dans le if
  3. RemSpace=" " //je met mon espace donc il sera plus vide et ma requete passera
  4. end if


autant dire que ça marche mais j'en veux pas car c'est vraiment pas propre ;-)

n°1426717
jbourdello​n
Posté le 17-08-2006 à 15:40:00  profilanswer
 

Ben le truc c'est que col1_bp est NULL dans la base , mais toi tu veux y inserer "" qui est différent de NULL  
 
Donne voir la requete complète ?

n°1426723
rouanelion
Posté le 17-08-2006 à 15:45:23  profilanswer
 

Voilà la requete avec col1_bp=variable 4 du tableau dont voici l'initialisation
Tab(4)=request.form("sCol1Bp" )

Code :
  1. sql="UPDATE tab2, tab1 SET col2_siege='"&Tab(1)&"', col1_nom='"&Tab(2)&"', col1_adr1='"&Tab(3)&"', col1_bp='"&Tab(4)&"' WHERE tab2.col2_visa = "&vNum&" AND tab1.col1_cle = tab2.col2_cle

n°1426728
rouanelion
Posté le 17-08-2006 à 15:47:21  profilanswer
 

Tiens dans mon formulaire voilà comment je recupere le champ

Code :
  1. <input name="sCol1Bp" type="text" size="30" value="<%=req("col1_bp" )%>">


En tout cas merci pour ton aide jbourdellon je te gonfle avec ça depuis un moment ^_^ sympa d'être patient


Message édité par rouanelion le 17-08-2006 à 15:50:26
n°1426732
jbourdello​n
Posté le 17-08-2006 à 15:51:39  profilanswer
 

ben comme tout à l'heure traitement sur sCol1Bp avec je sais pas une requete que tu generes au fur et à mesure que tu traites les variables et surtout qu'elles existent  
PSEUDO CODE
 
if (exist(VarA)){
requete = "update ... SET varA = "&varA;
}
if (exist(varB)){
requete = requete & AND varB = "&varB ;
}
 
....

n°1426738
rouanelion
Posté le 17-08-2006 à 15:54:52  profilanswer
 

ok donc tu préconises une requête par champ à update dans le cas où c'est pas vide c'est bien ça?

n°1426748
jbourdello​n
Posté le 17-08-2006 à 16:06:45  profilanswer
 

non par une requete par champ mais une seule requete "variable"  
donc une seule string requete  
 
et pis pour chaque variable présente tu ajoutes le bout de code qui va bien à la requete pour mettre a jour  
 
Etape 1 :  
Requete " UDPATE .... SET"
Etape 2 :  
Requete " UDPATE .... SET varA = 'ABC'"
Etape 2 :  
Requete " UDPATE .... SET varA = 'ABC' AND varC = 'DEF'"
 
...
 

n°1426756
rouanelion
Posté le 17-08-2006 à 16:29:53  profilanswer
 

ok ça marche merci bien je vais me pencher dessus


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASP

  pb requête update Access avec equi-jointure de table

 

Sujets relatifs
Supprimer des entrées elles n'existent pas dans une autre tablequotes dans requête pose problème
Affiche toutes les colonnes d'une table [repondu][MySql] : requete de premier elettres d'un clonne
Outils pour connaitre la quantité de donnée par requete SQLProblème avec nombre d'enregistrements dans une table
[PHP] Array dans une requète SQLSaut de ligne sous ACCESS dans des Label en VBA
petit soucis requete sql sur deux table ( order spécial :) ) 
Plus de sujets relatifs à : pb requête update Access avec equi-jointure de table


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR