Inclure le contenu d'un Tedit dans une requete SQL ... [Delphi/SQL] - Programmation
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]
Marsh Posté le 02-01-2002 à 15:04:24
non non ca no problem, C juste pour inclure ca dans une requete SQL ...
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 :
|
dans le code du bouton (ou autre) qui va executer ta query.
[edtdd]--Message édité par JWhy--[/edtdd]
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:
|
http://perso.wanadoo.fr/tetedeiench/sounds/orgasme.wav
Marsh Posté le 02-01-2002 à 16:33:32
ReplyMarsh Posté le 03-01-2002 à 16:27:56
Ouin, finalement on y arrive toujours pas...
Voila la requete qu'on fait :
Code :
|
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 !
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 ), ce sont bien 2x '
[edtdd]--Message édité par antp--[/edtdd]
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 ), ce sont bien 2x ' |
Ecoute poupoule, C pas qu'on t'aime, mais on t'adore !
T un DIEU
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
http://perso;wanadoo.fr/tetedeiench/sounds/orgasme.wav
Marsh Posté le 03-01-2002 à 17:39:24
ReplyMarsh Posté le 03-01-2002 à 17:57:33
antp a écrit a écrit : bhen dis donc |
Le PIRE, C qu'il l'a dit cash, comme ca
On galérait la dessus depuis 4 heures... T'imagines pas comme C BON !
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 On galérait la dessus depuis 4 heures... T'imagines pas comme C BON ! |
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 )
[edtdd]--Message édité par irulan--[/edtdd]
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.
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]
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.
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 ?
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)
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]
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)]);
Marsh Posté le 03-01-2002 à 21:19:33
Putain, on dirai un printf
C génial ca
Connaissais pas
Marchi
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 ?
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]
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
Pile poil ce qu'il me fallait
Avec ca, je pense etre paré
Hésite pas a me contacter si tu as un jour besoin d'aide antp
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...
Marsh Posté le 04-01-2002 à 17:01:29
Zai une dernière petite question la, à chaud, sur le vif...
Code :
|
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...
Marsh Posté le 04-01-2002 à 19:39:09
plop ?
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.
Marsh Posté le 04-01-2002 à 20:28:21
Il me renvoie une erreur "invalid variant type conversion" sur la ligne d'apres
Code :
|
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]
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]
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.
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...
Marsh Posté le 04-01-2002 à 22:09:34
arf, sans dièse, ca marche nickel
Va comprendre
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 :
|
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]
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
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
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 #
[edtdd]--Message édité par Tetedeiench--[/edtdd]
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
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
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 ... ) :
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 !