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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  code SQL dans une requete ....[pu d'erreur inside !!!]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

code SQL dans une requete ....[pu d'erreur inside !!!]

n°446060
le duke
ça vous dérange si je fume ?
Posté le 02-07-2003 à 11:01:36  profilanswer
 

Salut,  
voilà je voudrais tester l'accessibilité d'une base en essayant d'insérer un enregistrement et tout de suit après de l'effacer (pour pas pourir la base !!)  
Or le  
INSERT INTO TABLE_NAME
VALUES ('Blabla1', 'Blabla2')
 
ne pose pas de pb.
Ce qui en pose plus c que j'aimerais juste en dessous écrire
 
DELETE FROM table_Name
WHERE rows = : blabla1
 
 
Mais il me dit que c pas bon !!!
Alors qu'est-ce que je fais ?  
Vue que ces valeurs ne correspondent à rien je le code en dur, et ensuite, et merde : où est-ce que je me suis gouré ?


Message édité par le duke le 03-07-2003 à 17:54:41
mood
Publicité
Posté le 02-07-2003 à 11:01:36  profilanswer
 

n°446085
KrzAramis
Help Me
Posté le 02-07-2003 à 11:13:01  profilanswer
 

as tu verifie la syntaxe ?
 
ce ne serai pas qqc du style

Code :
  1. cs := 'DELETE FROM ta_table (champ1, champ2)'+
  2. 'WHERE VALUES (:value1, :value2)';
  3. ADOCommandText := cs;
  4. ADOCommandText.Parameters.ParamByName('value1').Value := value1;
  5. ADOCommandText.Parameters.ParamByName('value2').Value := value2;
  6. Execute;


 
@->--


Message édité par KrzAramis le 02-07-2003 à 11:13:39
n°446103
le duke
ça vous dérange si je fume ?
Posté le 02-07-2003 à 11:28:24  profilanswer
 

Non, je sais pas si ma syntaxe est bonne mais latienne n'a pas l'air plus fructueuse !!!
Et je mets le code directement dans la requête (j'utilise D5 au fait)
Mais j'ai peur qu'on ne puisse pas faire 2 fonctions à la suite dans la requête (le composant TQuery j'entends)

n°446112
KrzAramis
Help Me
Posté le 02-07-2003 à 11:39:33  profilanswer
 

C est vrai que le code si dessus n a pas ete utlise pour un TQuery. Je pense c est de plus en plus dut a la syntaxe. J y pense le code si dessus est pour un base de type access donc si tu utilises interbase ca "pourrait" etre different (I am guessing here).
 
Fais un tour sur www.delphi.about.com je pense que tu trouveras des info la bas.
 
 [:ddr555]  
@->--

n°446121
KrzAramis
Help Me
Posté le 02-07-2003 à 11:46:34  profilanswer
 

une piste (je pense)  ici[:ddr555]  
 
Mais bon c est surtout base sur le composant query alors aue moi je prefere les bonnes veille comandes SQL. Chacun ses gouts  :whistle:  
 
J espere que ca t aide
 
@->--

n°446124
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-07-2003 à 11:47:23  profilanswer
 

le duke a écrit :


DELETE FROM table_Name
WHERE rows = : blabla1


 
: blabla1 c'est quoi ? un param ? faut pas d'espace il me semble
mais ça serait plus simple de mettre la variable directement dans la requête, non ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°446127
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-07-2003 à 11:48:23  profilanswer
 

krzAramis a écrit :


Mais bon c est surtout base sur le composant query alors aue moi je prefere les bonnes veille comandes SQL. Chacun ses gouts  :whistle:  


 
:??: j'utilise des requêtes avec le composant Query moi
 
Query1.SQL.Text := Format('DELETE FROM BIDULE WHERE Truc = %s AND i = %d', [QuotedStr(chaine), Entier]);
Query1.Execute;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°446142
KrzAramis
Help Me
Posté le 02-07-2003 à 12:05:02  profilanswer
 

antp a écrit :


 
:??: j'utilise des requêtes avec le composant Query moi
 
Query1.SQL.Text := Format('DELETE FROM BIDULE WHERE Truc = %s AND i = %d', [QuotedStr(chaine), Entier]);
Query1.Execute;
 


Serieux antp t as une dent voire 2 contre moi ou quoi ? je me suis mal exprimer sur le post precedent. D habitude j utilise pas de TQuery mais directement des TADOCommand, TADOConnection, TTAble comme un gros boeuf. Or avec ces element il est possible d effacer d ajouter etc avec des commandes du style delete, post, insert etc. Au fur a mesure de mon projet de fin d annee je me suis rendu compte que ces commandes ADO disons sont bien moins efficace que un coup de SQL. Donc mon code a commence a contenir de plus en plus de truck du style:

Citation :

cs := 'qqc';
CommandText := cs;
Execute;
//and so on


Mais je dois reconnaitre que finalement le TQuery aurai pu de ce point vue correspondre a mes attentes. donc 'so much' pour avoir lu la page en diagonale et mettre fait cruxifier par sieur antp ;)  
 
Maintenant sommes nous tous d accord sur le fait que son probleme vient surement d un probleme de syntaxe ?
 
@->--

n°446143
antp
Super Administrateur
Champion des excuses bidons
Posté le 02-07-2003 à 12:07:14  profilanswer
 

probablement, oui, mais l'exemple que tu lui donnais ressemble à un mix entre un delete et un insert :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°446153
KrzAramis
Help Me
Posté le 02-07-2003 à 12:15:01  profilanswer
 

antp a écrit :

probablement, oui, mais l'exemple que tu lui donnais ressemble à un mix entre un delete et un insert :D


 
En effet a force de faire des commandes SQL je me suis appercu que la 'logique syntaxique'  :??: pour les base de donnees access se ressemblait. il est vrai que la version INSERT de l exemple ci dessus marche tres bien. J en avais deduit que le delete marcherai de la meme facon 'my bad' donc.
 
Pour en revenir a ce que je disais precedent. si tu fais un insert avec un TTable (ou bien un compo equivalent) si un ou plusieur de tes champs sont vides ben cacahouete super plantage pour non integrite de la base  :( !! alors qu avec SQL il le fait et il se tait  [:kamool] ! ca c est cool car ca ma permis de faire en sorte que l utilisateur n est pas tous (trop) de champs a remplir a la main  [:tozwarrior] . voila mon experience perso.
 
@->--

mood
Publicité
Posté le 02-07-2003 à 12:15:01  profilanswer
 

n°446326
le duke
ça vous dérange si je fume ?
Posté le 02-07-2003 à 14:17:34  profilanswer
 

Alors qqs précision et la solution en fin de post !!!
TTable, c à eviter .... mais moi ce que j'en dit ...
J'utilise de la base SQL 7/2000.
 
Et le pb venait du fait que je ne peux pas faire 2 "actions" sur le cofde d'1 query donc 2 solutions se posaient à moi :  
mettre 2 query : c pas la fête non plus !!!!!
Executer dynamiquement les 2 actions dans un TQuery vierge :  
du style  
 
Query1.SQL.Text := 'INSERT INTO ma_table %13%16 (si je raconte pas de connerie ...)VALUES ('VALUE 1', 'VALUE 2');
Query1.execute;
 
Query1.SQL.Text := 'DELETE FROM ma_table' + %13%16 + 'WHERE ROWS1 =: VALUE 1';
Query1.execute;
 
 
Et pis voilou !!!
 
Merci bien les gars !!

n°447795
le duke
ça vous dérange si je fume ?
Posté le 03-07-2003 à 17:00:02  profilanswer
 

Bon ben j'ai voulu faire mon malin et au final ça marche pas mieux !!!!
Enfin ça marche pas trop mal mais lors de la 2nd requête (le DELETE), il me sort une erreur de derrière les fagots disant :  
"Qryblabla : champ non trouvé"
 
Le pb c que cette query n'a rien à voir avec ce que je veux faire hormis qu'elle tape sur la même table que la requête dont je vous parlais precedemment (celle où je fais mon INSERT et ensuite mon DELETE)
 
Donc j'ai regardé pk cette query (qryblabla) faisait chier et elle était ouverte (active si vous préférez) dès le début de mon appli .
 
Donc qd je faisait mon DELETE, elle ne voyais plus un champ donc elle disait : OLà !!!!!
 
Alors je l'ai fermé juste avant mon code et réouverte juste après : mais rien 'y fait !!!
 
J'ai toujours la même erreur : qryblabla :  
"champ non trouvé" !!!!
Vous savez d'où ça pourrait venir ?

n°447865
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-07-2003 à 17:30:11  profilanswer
 

comme je l'ai déjà dit, la syntaxe de "WHERE ROWS1 =: VALUE 1" me semble hyper louche.
Puis si "Value 1" est un paramètre (avec un espace dans le nom ça passera jamais) il faut quand même que tu assignes ce paramètre quelque part...
laisse donc tomber ce paramètre et met directement la valeur dans la requête comme montré dans mon exemple avec des Format ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°447874
le duke
ça vous dérange si je fume ?
Posté le 03-07-2003 à 17:33:03  profilanswer
 

ben ouais c ce que je fais !!
VALUE 1 : ct pour dire : si tu préfère  
VALUE 1 = 'value'
 
alors que faïre ?

n°447884
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-07-2003 à 17:35:54  profilanswer
 

poste ton code exact parce que c'est pas clair là :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°447900
le duke
ça vous dérange si je fume ?
Posté le 03-07-2003 à 17:42:46  profilanswer
 

ben c chaud !!!
Je peux poster ça :  
 
QryTest.SQL.Clear;
QryTest.SQL.Add('INSERT INTO ATELIER');
QryTest.SQL.Add('VALUES (''ATE99'', ''ATELIER99'')');
QryTest.ExecSQL;
QryTest.SQL.Clear;
 
QryTest.SQL.Add('DELETE FROM ATELIER');
QryTest.SQL.Add('WHERE CATELIER =: ''ATE99''');
QryTest.ExecSQL;
QryTest.SQL.Clear;      
 
Ensuite : qrytest tape sur la table denommée ATELIER.
une autre query tape aussi sur cette base : qryAtelier.
QryAtelier est directement rattachée à un tDBLookupComboBox.
 
Ce lookup est dans un forme (autre que celle où j'ai tiré le code ci-dessus : celle-là c le login) qui n'est créer qu'après dans l'utilisation de l'appli.
 
La qryatelier n'est donc active que dans une TForm créer plus tard .
Pourtant, lors du 2nd QryTest.ExecSQL (celui du code que j'ai posté), une erreur apparait :  
QryAtelier : Champ non trouvé !!!!!!
 
 
ALors d'où c ty qu'ça pourait v'nir ?  

n°447910
antp
Super Administrateur
Champion des excuses bidons
Posté le 03-07-2003 à 17:47:53  profilanswer
 

WHERE CATELIER =: ''ATE99''
 
c'est pas du SQL ça, pourquoi tu fous un ":", je capte pas


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°447928
le duke
ça vous dérange si je fume ?
Posté le 03-07-2003 à 17:52:37  profilanswer
 

hummm .....
Bon : serais-je con à vie ou penses-tu que j'ai une chance de m'en sortir ?  
Parce que ça marche ..............
 
 
 
 :cry:  
 
 
 
[Degout d'avoir perdu une AM à ça inside ]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  code SQL dans une requete ....[pu d'erreur inside !!!]

 

Sujets relatifs
Conversion de scripts SQL SERVER -> My SQL[SQL] tester si une suppression est possible
[MySQL ] c'est quoi la requete complète pour un dump d'une table ?jointure ou requete imbriquée ?
Tri de valeur [resolu. solution inside][PHP] probleme refresh cause de requete
Récupérer le code source d'une page[Oracle] Requete conditionnelle
[PHP] SUBSTR dans une requête SQL? 
Plus de sujets relatifs à : code SQL dans une requete ....[pu d'erreur inside !!!]


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