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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de compréhension d' une requête SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de compréhension d' une requête SQL

n°584197
orthodocs
Posté le 06-12-2003 à 01:20:33  profilanswer
 

Bonjour,
 
Serait il possible de m' expliquer pourquoi la requète que j' écris ci dessous est mauvaise par rapport à celle dans le code de la procédure "Command1"?
 
  Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values (' Replace(UCase(Trim(Text2.Text))), "'", "''" ) ' & ' Replace(UCase(Trim(Text1.Text))), "'", "''" ) ')" )
 
 
Private Sub Command1_Click()
If Trim(Text1.Text) <> "" And Trim(Text2.Text) <> "" Then
    Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values ('" & Replace(UCase(Trim(Text2.Text)), "'", "''" ) & "','" & Replace(UCase(Trim(Text1.Text)), "'", "''" ) & "')" )
    MsgBox ("donnée ajoutée!" )
    List1.Clear
    Text2.Text = ""
    Text1.Text = ""
    IniList
    Else
    MsgBox ("Aucun texte n'a été encodé" )
End If
End Sub
 
J' ai compris que & permet de concatener les chaines de caractères mais je ne saisis pas le pourquoi de leur emplacement et particulièrement avant Replace.
Je me prends la  tête avec cette requête depuis une semaine mais je ne lacherai pas jusqu' à ce que j' ai compris ses subtilités;
 
Merci d' avance pour la réponse.
 
Orthodocs

mood
Publicité
Posté le 06-12-2003 à 01:20:33  profilanswer
 

n°584258
jagstang
Pa Capona ಠ_ಠ
Posté le 06-12-2003 à 03:33:34  profilanswer
 

Citation :

Je me prends la  tête avec cette requête depuis une semaine mais je ne lacherai pas jusqu' à ce que j' ai compris ses subtilités;


 
Tu plaisantes j'espère...

n°584300
orthodocs
Posté le 06-12-2003 à 09:09:02  profilanswer
 

Cher JagStang!
 
Je suis désolé mais je ne plaisante pas. Comme je te l' ai signalé je suis un autodidacte et mon activité professionnelle est aux antipodes de la science de l' informatique. Si je vous demandais de m' expliquer un article sur l' intérrêt de la coagulation intra-discale dans la lompbalgie je pense que vous auriez autant de peine que moi en informatique à comprendre tous les tenants et aboutissants. Pour moi, l' informatique c' est un loisir.J' ai très peu de temps à moi-même et mon petit plaisir c' est d' essayer d' apprendre à programmer.  
Il est évident que pour des férus d' informatique une question telle que je vient deposer fait sourire mais je peux te garantir que démarrer de 0 avec des livres et seul, cela peut parfois ressembler à un travail de galérien.
 
Amicalement
 
Orthodocs

n°584301
orthodocs
Posté le 06-12-2003 à 09:13:31  profilanswer
 

Il vaut mieux paraître stupide cinq minutes en posant une question que idiot tout le reste de sa vie!
 
Orthodocs

n°584307
HappyHarry
Posté le 06-12-2003 à 09:53:07  profilanswer
 

orthodocs a écrit :

Bonjour,
 
Serait il possible de m' expliquer pourquoi la requète que j' écris ci dessous est mauvaise par rapport à celle dans le code de la procédure "Command1"?
 
  Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values (' Replace(UCase(Trim(Text2.Text))), "'", "''" ) ' & ' Replace(UCase(Trim(Text1.Text))), "'", "''" ) ')" )
 
 
Private Sub Command1_Click()
If Trim(Text1.Text) <> "" And Trim(Text2.Text) <> "" Then
    Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values ('" & Replace(UCase(Trim(Text2.Text)), "'", "''" ) & "','" & Replace(UCase(Trim(Text1.Text)), "'", "''" ) & "')" )
    MsgBox ("donnée ajoutée!" )
    List1.Clear
    Text2.Text = ""
    Text1.Text = ""
    IniList
    Else
    MsgBox ("Aucun texte n'a été encodé" )
End If
End Sub
 
J' ai compris que & permet de concatener les chaines de caractères mais je ne saisis pas le pourquoi de leur emplacement et particulièrement avant Replace.
Je me prends la  tête avec cette requête depuis une semaine mais je ne lacherai pas jusqu' à ce que j' ai compris ses subtilités;
 
Merci d' avance pour la réponse.
 
Orthodocs
 


 
pour faire simple et rapide ...
dans le corps de la fonction Command1_Click() tu construis une chaine de caractère, qui contiendra au final la requete que tu vas envoyer a ta base de données.
cette chaine se décompose en plusieurs parties :
- les parties "statiques" que tu écris toi meme entre double quotes
- les parties dynamiques que tu vas demander à faire exécuter par la machine au runtime
 
tu vas donc concaténer les parties statiques aux parties dynamiques

n°584364
chaica
Posté le 06-12-2003 à 12:40:35  profilanswer
 

orthodocs a écrit :

Cher JagStang!
 
Je suis désolé mais je ne plaisante pas. Comme je te l' ai signalé je suis un autodidacte et mon activité professionnelle est aux antipodes de la science de l' informatique. Si je vous demandais de m' expliquer un article sur l' intérrêt de la coagulation intra-discale dans la lompbalgie je pense que vous auriez autant de peine que moi en informatique à comprendre tous les tenants et aboutissants. Pour moi, l' informatique c' est un loisir.J' ai très peu de temps à moi-même et mon petit plaisir c' est d' essayer d' apprendre à programmer.  
Il est évident que pour des férus d' informatique une question telle que je vient deposer fait sourire mais je peux te garantir que démarrer de 0 avec des livres et seul, cela peut parfois ressembler à un travail de galérien.
 
Amicalement
 
Orthodocs


 
Faut pas faire attention, y'a bcp de têtes enflées sur ce forum. Mais y'a aussi des gens qui répondent intelligement, faut pas hésiter à poser tes questions :D

n°584555
jagstang
Pa Capona ಠ_ಠ
Posté le 06-12-2003 à 15:33:22  profilanswer
 

c'est peut-être une occupation d'amateur pour toi, mais je te conseille vivement de lire un livre ou deux. tu auras beaucoup plus de plaisir. C'est un peu comme jouer aux échecs sans savoir les règles du jeu.
 
Sinon, pour la "coagulation intra-discale dans la lompbalgie", c'est un domaine que je connais pas, et, par conséquent je laisse le soin aux professionnels de ce domaine d'en parler avec toi
 
bon week end

n°584616
orthodocs
Posté le 06-12-2003 à 18:43:00  profilanswer
 

En ce qui concerne la lecture, je fais mon possible. Si tu as un conseil, j' y preterai une particulière attention.  
Ceci dit, si la seule curiosité qui nous pousse à découvrir de nouveaux horizons dans la vie fixe ses frontières aux limites de nos compétences professionnelles, la vie serait bien triste. N' as tu pas un violon d' ingre? Tu fais de la moto je pense? Ne t' es tu jamais interessé au fonctionnement de ta belle machine? pourtant la mécanique est un domaine plutôt éloigné des préocupations quotidiennes d' un informatitien, non?
 
L' informatique serait elle un domaine réservé aux initiés?
 
Vraiment je ne comprends pas ta réaction ou alors il faut que je revoie la finalité d' un forum d' entre-aide!!!

n°584618
orthodocs
Posté le 06-12-2003 à 18:45:12  profilanswer
 

chaica a écrit :


 
Faut pas faire attention, y'a bcp de têtes enflées sur ce forum. Mais y'a aussi des gens qui répondent intelligement, faut pas hésiter à poser tes questions :D


Merci de me laisser une lueur d' espoir.

n°584624
mrbebert
Posté le 06-12-2003 à 19:10:24  profilanswer
 

Pour mieux comprendre, fais un MsgBox() de tout ce qui est dans le Cxn.Execute(). Tu verras la requête telle qu'elle est exécutée :)

mood
Publicité
Posté le 06-12-2003 à 19:10:24  profilanswer
 

n°584626
Taz
bisounours-codeur
Posté le 06-12-2003 à 19:17:57  profilanswer
 

JagStang > [:rofl] t'en as péché un bon gros là :D

n°584803
jagstang
Pa Capona ಠ_ಠ
Posté le 07-12-2003 à 16:17:15  profilanswer
 

entraide ne veux pas dire cours privé. un minimum de recherches personnelles DOIVENT être faites avant de poster.
 

n°585305
orthodocs
Posté le 08-12-2003 à 09:55:00  profilanswer
 

Bon!
 
Nous nous arreterons ici. Cette polémique stérile ne nous mènera à rien et la finalité nous laisse un goût amer dans la bouche.
Je présumerai que cette discussion a débuter sur un malentendu.
 
En tous les cas, merci à tous ceux qui ont daigné répondre à ma question.
 
Amicalement
 
Orthodocs

n°585995
MagicBuzz
Posté le 08-12-2003 à 22:11:58  profilanswer
 

JagStang & Taz : J'ai même pas besoin de dire ce que je pense de vos interventions déplorables, vous le savez déjà. Retournez-jouer dans les topics qui vous intéressent, et laissez les débutants apprendre tranquillement. Vous êtes vraiment trop nazes.
 
Orthodocs > Bienvenue sur ce forum qui à mon avis n'est pas ce qu'il y a de mieu pour commencer. En effet, il y a quelques personnes comme moi qui s'efforcent de répondre aux débutants, parceque j'aime bien expliquer les bases à quelquequ'un, et le voir voler de ses propres ailes au bout de 15 jours, plutôt que perdre mon temps à aider une personne qui maîtrise le sujet et qui a la flème de chercher une réponse avant de chercher (ça c'est moi :D et je suis tout à fait conscient que la plupart de mes questions sont chiantes :D)
 
Bon, alors, on va commencer par le début.
 
Comme tu l'as déjà compris, le & sert en VB pour concaténer des chaînes de caractère.
 
Ainsi, pour concaténer des chaînes de caractère, il faut que de chaque côté, il y ait des chaînes de caractères... Jusque là, je pense que tu suis ;)
 
Une chaîne de caractères en VB est délimitée par des guillements (" ).
En SQL, où l'oppérateur de concaténation est le plus (+), les chaînes sont délimitée par des quote (').
 
Donc, analysons ta ligne :
 
Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values (' Replace(UCase(Trim(Text2.Text))), "'", "''") ' & ' Replace(UCase(Trim(Text1.Text))), "'", "''") ')")
 
=> On voit qu'il y a un problème. Tes chaînes ne s'ouvrent et se ferment pas autour de l'oppérateur de concaténation, mais autour des quotes, que VB ne comprend pas (pour lui, la quote sert à mettre en commentaires) D'ailleurs, logiquement, dans VB, toute la fin de ta ligne doit être verte si je ne m'abuse.
 
Ta requête me semble un peu "compliquée" pour débuter à maîtriser cet aspect. On va donc la réécrire pour le moment sans tenir compte des échappements de quote (ça sert à au moteur SQL pour ne pas planter au cas où se trouve une quote dans une chaîne, puisqu'il croit que la chaîne s'arrête à ce moment), ni la mise en forme (majuscules, etc.)
 
On a donc, ta requête toujours fausse :
 
Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values (' Text2.Text ' & ' Text1.Text')")
 
Donc, là, ça ne fonctionne toujours pas, puisque tu envoies à SQL :
 
une chaîne de caractères " Text2.Text "
puis un symbole & qu'il ne comprends pas
puis une chaîne " Text1.Text "
 
Donc, il faut corriger tes chaînes pour que :
1) Tu n'écrires pas "Textn.Text" dans la base, mais sa valeur
2) Tu n'envoie plus un "&" au moteur SQL, puisqu'il ne le comprendra pas
 
Pour le moment, on va ignorer le code SQL. On verra ça plus tard. On va juste traîter le point 1.
Souvient toi : le "&" doit se situer entre des chaînes de caractère.
 
La ligne devient donc :
 
Cxn.Execute ("insert into codeinami ([N°INAMI], intitule) values ('" & Text2.Text & "' & '" & Text1.Text & "')")
 
A partir de ce moment, tu as donc une chaîne constituée de :
 
la chapine : insert into codeinami ([N°INAMI], intitule) values ('
puis la valeur de : Text2.Text
la chaîne : ' & '
puis la valeur de : Text1.Text
Et enfin, la chaîne : ')
 
Mettons que tu aies mis "toto" dans Text2.Text et "titi" dans Text1.Text. Tu envoies donc à SQL la requête :
 
insert into codeinami ([N°INAMI], intitule) values ('toto' & 'titi')
 
Cette fois, c'est presque bon.
 
Seulement, lorsque tu stipules une liste, en SQL, il faut utiliser la virgule (,) comme séparateur, et non le &.
 
Donc il fait corriger la requête pour qu'elle devienne :
 
insert into codeinami ([N°INAMI], intitule) values ('toto', 'titi')
 
Je te laisse faire cette correction au cas où tu ne t'en sorte pas. (pour ne pas avoir vu cette erreur fondamentale, j'en déduis que tu es en effet très débutant, et que tu n'as aucune base. je dois te féliciter pour ton choix du VB pour apprendre, puisqu'il est parfaitement adapté aux gens qui débute : syntaxe assez simple, pas trop restrictif, et très bien documenté).
 
N'hésite pas à me reposer des questions s'il y a un truc qui t'échappe, ou si tu ne t'en sors pas.
 
Si messieurs les emmerdeurs veulent bien te laisser tranquille ici, je t'invite à me répondre ici. Sinon, tu peux me trouver aussi sur http://forum.zozoll-online.com (y'a presque que moi qui poste là, et je suis admin, donc tu seras tranquille ;))


Message édité par MagicBuzz le 08-12-2003 à 22:15:10
n°586028
Hermes le ​Messager
Breton Quiétiste
Posté le 08-12-2003 à 22:40:23  profilanswer
 

MagicBuzz a écrit :


 
Si messieurs les emmerdeurs veulent bien te laisser tranquille ici, je t'invite à me répondre ici. Sinon, tu peux me trouver aussi sur http://forum.zozoll-online.com (y'a presque que moi qui poste là, et je suis admin, donc tu seras tranquille ;))


 
Pfffou, j'en reviens, c'est lent dis-donc... On voit que c'est de l'ASP... [:ddr555]

n°586037
MagicBuzz
Posté le 08-12-2003 à 22:44:26  profilanswer
 

biensur. les temps de génération sont inférieurs à ceux de ce forum :na:
 
nan, c'est l'admin qui est encore en train de bouffer toute la BP avec chais pas quoi... d'habitude au contraire, c'est rigoureusement instantané.

n°586039
MagicBuzz
Posté le 08-12-2003 à 22:45:38  profilanswer
 

pis de toute façon, d'ici quelques pas longtemps (5 ou 6 sciècles :ange:) il sera en C# (enfin... en VB.NET, mais on peut pas tout avoir... [:spamafote] )


Message édité par MagicBuzz le 08-12-2003 à 22:45:53
n°586092
Hermes le ​Messager
Breton Quiétiste
Posté le 08-12-2003 à 23:32:25  profilanswer
 

MagicBuzz a écrit :

pis de toute façon, d'ici quelques pas longtemps (5 ou 6 sciècles :ange:) il sera en C# (enfin... en VB.NET, mais on peut pas tout avoir... [:spamafote] )


 
Bah, de toutes manières, c'était juste pour te charrier un peu...  :D

n°586850
orthodocs
Posté le 09-12-2003 à 19:52:54  profilanswer
 

Vraiment, vraiment un tout grand merci. Tout d' abord, tu ne t' imagines comme ton message m' a soulagé. J' essaye de voler de mes propres ailes et souvent, tel Icare, je me brûle quelque plumes.  
Ce que tu vient de m' enseigner et de m' apprendre me permettra de progresser énormément dans le développement de mon application. La limpidité de tes explications sont à la hauteur d' un enseignement d' élite. Tu as pu saisir le problème qui me hantait et réussis à te mettre à mon niveau pour que je comprenne les tenants et aboutissants. Et cela, c' est digne des plus grands didactes (j' ai enseigné des matières difficiles à des étudiants et connais les difficultés pour un spécialiste à faire comprendre une matière tout en s' adaptant au niveau de l' élève).
Tu  honnores ce forum et je ne te remercierai jamais asser de m' avoir donné à nouveau confiance à un système de communication que je testais pour la première fois.
 
Amicalement et à ton service si un jour je peux t' aider.
 
Orthodocs

n°586875
ToxicAveng​er
Posté le 09-12-2003 à 20:42:11  profilanswer
 

MagicBuzz a écrit :

pis de toute façon, d'ici quelques pas longtemps (5 ou 6 sciècles :ange:) il sera en C# (enfin... en VB.NET, mais on peut pas tout avoir... [:spamafote] )


 
si tu veux un coup de main pour du C#... :D

n°586910
FRandon
Citation personnelle associée
Posté le 09-12-2003 à 21:47:04  profilanswer
 

orthodocs a écrit :

Vraiment, vraiment un tout grand merci. Tout d' abord, tu ne t' imagines comme ton message m' a soulagé. J' essaye de voler de mes propres ailes et souvent, tel Icare, je me brûle quelque plumes.  
Ce que tu vient de m' enseigner et de m' apprendre me permettra de progresser énormément dans le développement de mon application. La limpidité de tes explications sont à la hauteur d' un enseignement d' élite. Tu as pu saisir le problème qui me hantait et réussis à te mettre à mon niveau pour que je comprenne les tenants et aboutissants. Et cela, c' est digne des plus grands didactes (j' ai enseigné des matières difficiles à des étudiants et connais les difficultés pour un spécialiste à faire comprendre une matière tout en s' adaptant au niveau de l' élève).
Tu  honnores ce forum et je ne te remercierai jamais asser de m' avoir donné à nouveau confiance à un système de communication que je testais pour la première fois.
 
Amicalement et à ton service si un jour je peux t' aider.
 
Orthodocs


plus de doutes, c'est un troll  :ouch:


---------------
Cdlt,
n°586912
MagicBuzz
Posté le 09-12-2003 à 21:50:24  profilanswer
 

d-é-g-a-g-e
 
merci

n°586926
FRandon
Citation personnelle associée
Posté le 09-12-2003 à 22:18:23  profilanswer
 

c'est pas parce que tu t'es cassé le culs pour répondre à un mec qui déconne que tu dois etre agressif ;)


---------------
Cdlt,
n°586929
FRandon
Citation personnelle associée
Posté le 09-12-2003 à 22:20:37  profilanswer
 

[:spamafote]  
c'est pas tres français mais je me comprends :lol:


---------------
Cdlt,
n°586930
Hermes le ​Messager
Breton Quiétiste
Posté le 09-12-2003 à 22:20:52  profilanswer
 

frandon a écrit :

c'est pas parce que tu t'es cassé le culs pour répondre à un mec qui déconne que tu dois etre agressif ;)


 
heu, je suis pas sûr du tout qu'il déconne. IL a juste l'air d'être d'une autre génération, stout (et encore c'est pas sûr non plus).

n°586932
FRandon
Citation personnelle associée
Posté le 09-12-2003 à 22:26:16  profilanswer
 

je crois pas car il fait des fautes de temps en temps...
certaines phrases sont mal tournées et lourdes.
il en fait des tonnes quoi, c'est pourquoi je penche pour le troll.
 
bon, de toutes façons, je vais pas squatter ici tres longtemps
 
:hello:


---------------
Cdlt,
n°586938
MagicBuzz
Posté le 09-12-2003 à 22:40:26  profilanswer
 

Que répondre... Tu crois que tu t'en sortais mieu quand t'as débuté ? Alors si t'as pas envie de filer un coup de main, c'est ton choix, on va pas forcer les gens à partager leurs connaissances. Mais laisse les autres tranquille dans ce cas.
 
C'est pas croyable ça !

n°587082
FRandon
Citation personnelle associée
Posté le 10-12-2003 à 08:18:49  profilanswer
 

c'est pas ton coup de main ni ta logue et claire explication qui me faisait marrer.
tu te meprends deouyis le debut :(


---------------
Cdlt,
n°587154
MagicBuzz
Posté le 10-12-2003 à 10:23:36  profilanswer
 

Non je ne me méprends pas. Y'a un gars qui n'y connait rien et qui essaie d'apprendre, et qui a déjà pas mal cherché avant de poser la question.
Sauf qu'il n'a jamais eu de formation dans le domaine, donc la notion d'algo ou de "syntaxe" lui est totalement inconnue. C'est normal que ce bug gros comme un éléphant dans une tasse à café ne lui aie pas sauté aux yeux, tout comme je trouve anormal qu'une poignée de personnes se foutent de lui sous prétexte que "c'est un boulet".
Une fois qu'il aura compris les rudiments, il aura les bases nécessaire pour s'en sortir tout seul. Seulement, actuellement, un simple problème de femeture de chaîne, même en prenant un bon bouquin et un didacticiel de base, y'a pas moyen de l'inventer, et c'est jamais écrit nul part.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème de compréhension d' une requête SQL

 

Sujets relatifs
[PHP] Ecrire dans un fichier, probleme de formatage[SQL] Optimisation d'une requete
Cree des cles qui s'incrementent automatiquement sous SQL server 2000[PHP/MySQL] Prob de récup du résultat d'une requete
Probléme de refresh depuis un popupProblème de requête SQL dans un prog. en VB
[PostgreSQL] phpPgAdmin, probleme de creation de table o_O 
Plus de sujets relatifs à : Problème de compréhension d' une requête SQL


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