[Delphi/SQL] Inclure le contenu d'un Tedit dans une requete SQL ...

Inclure le contenu d'un Tedit dans une requete SQL ... [Delphi/SQL] - Programmation

Marsh Posté le 02-01-2002 à 14:14:26    

Salamalekum !
 
En ce moment, je galère sur un petit probleme...
 
on doit faire une appli en delphi qui gère un club de plongée, avec une base de données...
 
j'ai modélisé la BDD sous Access, et je la balance via ODBC dans l'appli, ca amrche plutot bien.
 
mais le probleme le voici : Poiur créer une plongée, il faut un bateau.
 
L'utilisateur rentre donc la date de sa plongée, et il doit ensuite sélectionner dans une liste le bateau a utiliser...
 
Or je voudrais que cette liste ne contienne que les bateaux disponibles ... i.e. ceux pas pris ledit matin, ou apres midi (on considère que quand un bateau est pris, C pour toute la matinée ou l'aprem'.
 
Donc en gros, je voudrais faire une requete SQL qui regarde la date et le moment de la journée, et me sort les bateaux dispos...
 
Probleme : j'ai essayé, a titre de test, de récup le contenu d'un Tedit pour faire ma requete...
 
Ca donne ca (dans la propriété SQL de ma requete ... ) :

Code :
  1. Select nom  from bateaux where 'n° Bateau' not in
  2. (select 'n° bateau' from plongee where 'Date plongee' = edit1.text);


 
je remplace le edit1.text par une date quelconque, ca passe ...
 
la ca me lance une erreur...
 
C quoi la syntaxe exacte ?
 
merci d'avance :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 02-01-2002 à 14:14:26   

Reply

Marsh Posté le 02-01-2002 à 14:19:35    

pour les dates c'est assez chiant, j'ai eu pas mal de problèmes... par exemple pour donner une date à Access je devais la mettre entre #, ça donnait un truc du genre:
where ladate = '#05/12/2001#'

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 02-01-2002 à 15:04:24    

non non ca no problem, C juste pour inclure ca dans une requete SQL ...


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 02-01-2002 à 15:25:43    

tu ne pourras pas le faire directement via l'explorateur de propriétés... il va falloir que tu mettes un bout de code:

Code :
  1. qryLeNomDeTonComposantQuery.SQL.Text := 'Select nom  from bateaux where ''n° Bateau'' not in (select ''n° bateau'' from plongee where ''Date plongee'' =' + edit1.text + ')';


dans le code du bouton (ou autre) qui va executer ta query.

 

[edtdd]--Message édité par JWhy--[/edtdd]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 02-01-2002 à 16:26:28    

JWhy a écrit a écrit :

tu ne pourras pas le faire directement via l'explorateur de propriétés... il va falloir que tu mettes un bout de code:

Code :
  1. qryLeNomDeTonComposantQuery.SQL.Text := 'Select nom  from bateaux where ''n° Bateau'' not in (select ''n° bateau'' from plongee where ''Date plongee'' =' + edit1.text + ')';


dans le code du bouton (ou autre) qui va executer ta query.  
 
 




 
http://perso.wanadoo.fr/tetedeiench/sounds/orgasme.wav


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 02-01-2002 à 16:33:32    

Tetedeiench a écrit a écrit :

 
 
http://perso.wanadoo.fr/tetedeiench/sounds/orgasme.wav  




 
:lol:

Reply

Marsh Posté le 03-01-2002 à 16:27:56    

Ouin, finalement on y arrive toujours pas...
 
Voila la requete qu'on fait :
 

Code :
  1. Temp.Active := FALSE ;
  2. Temp.SQL.Clear;
  3. Temp.SQL.Text := 'Select nom from bateaux where  ( bateaux.nom  = ' + dateplongee.Text +')';
  4. Temp.Active := TRUE ;


 
La requete s'apelle bien Temp , et le Tedit s'apelle dateplongee ...
 
C juste un nom a la cong qu'on a mis comme ca, on rentre pas une date dedans, on mets un Striing style le nom d'un bateau...
 
Et ca nous balance une erreur style "Manque un paramètre"...
 
Vous savez pourquoi ?
 
Qu'on enleve les aprenthèses ou non, C la meme chose, d'ailleurs...
 
Merci d'avance ! :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 16:41:48    

Temp.SQL.Text := 'Select nom from bateaux where  ( bateaux.nom  = ''' + dateplongee.Text +''';)';
 
le nom est un champ texte dans la BD, délimité par des '
comme les ' sont dans une chaine, il faut mettre '' pour que dans la chaine finale ca donne '
et y en a 3 pcq y a les fins de chaine / debut de chaine.
 
PS: il n'y a aucun " dans mon post (sauf celui-ci dans le PS :D), ce sont bien 2x '

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 16:53:46    

antp a écrit a écrit :

Temp.SQL.Text := 'Select nom from bateaux where  ( bateaux.nom  = ''' + dateplongee.Text +''';)';
 
le nom est un champ texte dans la BD, délimité par des '
comme les ' sont dans une chaine, il faut mettre '' pour que dans la chaine finale ca donne '
et y en a 3 pcq y a les fins de chaine / debut de chaine.
 
PS: il n'y a aucun " dans mon post (sauf celui-ci dans le PS :D), ce sont bien 2x '  
 
 




 
Ecoute poupoule, C pas qu'on t'aime, mais on t'adore !
 
T un DIEU :love:
 
Mon collègue viens d'ailleurs de dire qu'il accepterai de se faire sodomiser par toi...
 
C pour dire !
 
Merci, Merci, remercie, reremercie, on t'aime, on t'adore  :D
 
http://perso;wanadoo.fr/tetedeiench/sounds/orgasme.wav


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 16:57:11    

'tain, c'est devenu chaud le forum Programmation :D :lol:

Reply

Marsh Posté le 03-01-2002 à 16:57:11   

Reply

Marsh Posté le 03-01-2002 à 17:39:24    

bhen dis donc :ouch:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 17:57:33    

antp a écrit a écrit :

bhen dis donc :ouch:  




 
Le PIRE, C qu'il l'a dit cash, comme ca :D
 
On galérait la dessus depuis 4 heures... T'imagines pas comme C BON ! :love:


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 18:03:10    

Tetedeiench a écrit a écrit :

 
 
Le PIRE, C qu'il l'a dit cash, comme ca :D
 
On galérait la dessus depuis 4 heures... T'imagines pas comme C BON ! :love:  




 
Je pense que l'informatique, et plus particulièrement le dev est une des rares disciplines à procurer autant de frustration et de satisfaction (quand le problème est résolu ;) ) réunies.
En effet qui n'a pas ressenti l'intensité quasi orgasmique de la satisfaction lorsque après avoir galéré pendant des heures sur un problème, la solution apparait enfin ? (et c'est encore meilleur quand on la trouve soit-même :D )

 

[edtdd]--Message édité par irulan--[/edtdd]

Reply

Marsh Posté le 03-01-2002 à 18:54:42    

en informatique, aussi fort qu'on soit, c'est toujours des autres que viennent les solutions aux problèmes les plus bêtes.
Quand c'est son propre code on ne voit pas certaines erreurs que d'autres voient au premier coup d'oeil.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 20:38:53    

Y a un truc que je ne capte pas...
 
Admettons que je veuilles insérer le cotnenu d'un Tedit, mais cette fois ci de type Integer...
 
Forcément, je ne peux plus faire ''' + gnagna + ''' , parce que ca va etre considéré du type string...
 
Quelle est la syntaxe alors ?
 
J'ai essayé ' + gnagna + ' , mais ca a pas l'air d'etre ca... a priori.
 
Et le type Date ... y a pas un blem avec ?
 
Et pour les booléens ?
 
Une fois que j'ai ca, promis, j'ai tout ce qu'il me faut, je vous laisse tranquille ;)

 

[edtdd]--Message édité par Tetedeiench--[/edtdd]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 21:06:50    

pour les integer suffit de mettre  
...where machin = ' + edit1.text + ' ...
ca doit passer.
pour les dates c'est un bordel pas croyable, ça a l'air de dépendre de la base de donnés cible.
pour les booleans, je sais plus, 0 ou 1 j'imagine.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 21:10:17    

Merde, C que niveau date j'en ai 'achement besoin la...
 
C pile poil ce sur quoi je regardais la...
 
C une base Access XP ( 2002), enfin ca doit surement etre pareil que le 2001 ...
 
T'as une antp le maitre du delphi/SQL ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 21:12:34    

pour Access 2000 pour les dates j'avais dû les mettre de la forme:
where ladate = #dd/mm/yyyy#
(ouais ces # c'est bizarre mais y a que comme ça que ca marchait)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 21:13:57    

Okay, donc je suppose que ca doit etre de la gueule :
 
where ladate = ' + # + Edit1.Text + # + '  
 
nan ?

 

[edtdd]--Message édité par Tetedeiench--[/edtdd]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 21:16:41    

heu là ça va foirer :)
 
plutôt:
... where ladate = #' + Edit1.Text + '# ...
 
sinon si t'as bcp de variables c parfois plus clair (plus pratique) de tout mettre dans un format :
 
Sql.Text := format('select * from truc where machin = %d and truc = ''%s'' and ladate = #%s#', [unentier, unechaine, DateToStr(unedate)]);


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 21:19:33    

Putain, on dirai un printf :eek:
 
C génial ca :sol:  
 
Connaissais pas :sol:
 
Marchi :D


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 21:25:21    

Merde, il aime pas ton coup de la date...
 
D'ailleurs, faut  pas  mettre de DateToStr non ?
 
Vu que le contenu d'un Tedit est un Str...
 
ce serai pas plutot StrToDate ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 21:35:56    

si ladate est un string tu dois rien mettre, datetostr c'est pour si la date provient d'un TDateTimePicker par exemple (composant de sélection de date), donc une variable de type TDate ou TDateTime

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-01-2002 à 21:44:15    

antp a écrit a écrit :

si ladate est un string tu dois rien mettre, datetostr c'est pour si la date provient d'un TDateTimePicker par exemple (composant de sélection de date), donc une variable de type TDate ou TDateTime  
 
 




 
Dis, T une bible, je connaissais pas le composant TdateTimePicker...
 
CA RULEZ :love: :love:
 
Pile poil ce qu'il me fallait :D
 
Avec ca, je pense etre paré :)
 
Hésite pas a me contacter si tu as un jour besoin d'aide antp :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 03-01-2002 à 21:49:46    

:)
bhen disons que comme je fais du Delphi au boulot depuis 4 mois, et pendant mon temps libre depuis plus d'un an, je connais évidemment pas mal de trucs... mais bon on en apprend tous les jours...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 17:01:29    

Zai une dernière petite question la, à chaud, sur  le vif...
 

Code :
  1. plongees.FieldValues['Date Plongee']:= format ('#%s#',[DateToStr(CreerPlongee.Dateplongee.Date)]);


 
Pouquoi il em renvoie une erreur ici... t'as une idée ?
 
le but étant de balancer dans la table des plongées une date dans un champ de type date/time ...
 
Sachant que la requete au dessus passe nickel, la il hurle...


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 19:39:09    

plop ?


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 20:22:08    

il met qui comme erreur plus précisément ?  
la chaine renvoyée par le format donne quoi ?
c'est peut-être un problème de formatage, genre mm/jj/aaaa au lieu de jj/mm/aaaa ou un brol du genre.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 20:28:21    

Il me renvoie une erreur "invalid variant type conversion" sur la ligne d'apres :??:
 

Code :
  1. plongees.FieldValues['Date Plongee']:= format ('#%s#',[DateToStr(CreerPlongee.Dateplongee.Date)]);
  2.         plongees.FieldValues['Nature Plongee']:= Creerplongee.Naturepl.text;


 
je vire la ligne sur la date plongee, no problem... (naturepl est un bete Tedit).
 
la chaine renvoyée par le format ...
 
#11/01/2002#
 
Récupérée dans un Tedit sans prob.

 

[edtdd]--Message édité par Tetedeiench--[/edtdd]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 20:42:17    

D'ailleurs, quoique je foute apres, ca merde :??:
 
meme erreur ...
 
si C la dernière, ca passe :??:

 

[edtdd]--Message édité par Tetedeiench--[/edtdd]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 21:45:25    

et date plongée c un champ date je suppose ? y a peut etre un format special à utiliser... moi je faisais des requete SQL avec des update/insert, j'utilisais pas ce système de fields pour modifier la BD.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 21:49:46    

dateplongee C un champ date en effet ...
 
je comprends pas cette erreur... puisque le format renvoie bien une chaine, et que l'instruction est terminée... :/


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 22:09:34    

arf, sans dièse, ca marche nickel :D
 
Va comprendre :D


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 22:19:19    

Par contre, si tu sais comment changer l'ordre des pages dans un tabsheet, je suis preneur... je cherche et je trouve pas :(
 
Et comment on passe dans une requete SQL un champ avec un espace... Ca aussi ca reste mystérieux :(
 
En gros : ca ca amrche jamais, meme quand je rentre la date qui devrait :
 

Code :
  1. Requete1.SQL.Text := format ('Select * from bateaux where ''N° bateau'' not in (select ''N° Bateau'' from plongees where ( ''plongees.Date plongee'' = %s ) ) ',[ DateToStr(Dateplongee.Date)]);


 
T'as une idée ?
 
Elle passe mais ne renvoie aps le résultat désiré (en gros, les bateaux pris dans une plongee a la date saisie... )
 
PS : je sais qu'elle est zarbie présentée comme ca, mais je l'ai simplifiée pour que ce soit + évident de montrer mon blem, et a des fins de test)

 

[edtdd]--Message édité par Tetedeiench--[/edtdd]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 23:03:40    

pour les champs SQL avec espace je sais pas, c'est le genre de complication que j'évite :D
 
pour les tabsheet, bhen suffit de modifier le numéro d'index d'une page (pageindex je crois) et elle bouge par rapport aux autres


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 23:08:58    

oky, je viens de voir :)
 
Mais pour comparer un date récupérée via SQL et une date de type Date...
 
Avec tes #, tu faisais comment toi ?
 
Suffit que je fasse pareil mais sans les # :D

 

[edtdd]--Message édité par Tetedeiench--[/edtdd]


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le 04-01-2002 à 23:23:03    

je sais pas, pour la lecture il me les renvoyait sans les #
c'est juste à l'écriture je crois que je devais les mettre... c'est très bizarre, mais c'était de toute façon temporaire, pcq Access devait être remplacé par Oracle :)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 23:35:42    

ok :/
 
je comprends toujours pas pourquoi ca merde...
 
je vais essayer de virer TOUS les espaces que j'aie pu mettre, et basta :)


---------------
L'ingénieur chipset nortiaux : Une iFricandelle svp ! "Spa du pâté, hin!" ©®Janfynette | "La plus grosse collec vivante de bans abusifs sur pattes" | OCCT v12 OUT !
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed