IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

utiliser une variable déclaré en delphi dans un sql


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut utiliser une variable déclaré en delphi dans un sql
    Bonjour, je voudrais utiliser une variable X:string pour une comparaison avec un champ de la table de type alphabétique dans une requete SQL et aussi je voudrais affecter l'age dans une variable aussi sachant que j:integer et age:entier court, voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query1.SQL.ADD('select age as j from table where nom=x');
    mais cette requête ne fonctionne pas, avez vous une idée u probleme ?
    merci d'avance
    amine
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Il faut utiliser les requètes paramétrées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Query.sql.add('select age as j from table where nom=:Param0');
    Query.ParamByName('Param0').asString:=x;
    Et le tour est joué

    Il faut utiliser AsInteger pour les entiers; il existe aussi asFloat, asDate, etc...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    merci QI130, mais enfait, je n'est pas bien compris la deuxieme ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query.ParamByName('Param0').asString:=x;
    , si tu peu m'expliquer un peu plus ?
    merci encore
    Amine
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Cette ligne "remplit" Param0 (dans la requète) avec la valeur chaine de x
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    excuse mais l'application ne s'execute pas, au démarrage y a un message d'erreur qui dis que projet1.exe a provoqué une exeption .....etc, c'est tu ou poura etre l'erreur a peu pret ?
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  6. #6
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Je ne peux te répondre sans plus de détails
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  7. #7
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Query.sql.add('select age as j from table where nom=:Param0'); 
    Query.ParamByName('Param0').asString:=x; 
    query1.active:=true;
    a:=1980;
    repeat
    a:=a+1;
    if (a mod(4))<>0 then
    j:=j+1
    else
    j:=j+2;
    until a=strtoint(label2.Caption);
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  8. #8
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Oui, hum, tu ne récupères pas le "j" de ta requète....

    Il n'est donc pas initialisé, et quand tu fais +1 ou +2 dessus, bah....

    d'ailleurs, utiliser as j est bien pour un count, sinon, tu peux accéder directement au résultat par la colonne:



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Query.sql.add('select age from table where nom=:Param0'); 
    Query.ParamByName('Param0').asString:=x; 
    query1.active:=true;
    j:=query1.fieldByName['age'].asinteger;
    devrait marcher ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  9. #9
    Membre du Club
    Inscrit en
    Août 2002
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 65
    Points : 64
    Points
    64
    Par défaut
    Salut, je crois que la valeur du champ est celui de l'alias
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j:=query1.fieldByName('j').asinteger;
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j:=query1.fieldByName['age'].asinteger;
    Les vrais informaticiens n'ont pas d'attaché-case ; leur tête suffit à transporter leurs connaissances.

  10. #10
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    si ca peut t'aider va voir dans ce thread

    [Résolu] requete sql avec variable :)

  11. #11
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    merci les gars, la solution est maronte car il falais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j:=query1.fieldByName('jour').asinteger;
    donc la bonne solution etait entre Qi130 etTsimplice
    merci encors, mais pour acceder a la table je n'est pas mis d'alias, j'ai utiliser le chemein directement,
    mais est ce que quelqu'un pouras m'expliquer ce que j'ai fait, car ca m'ennerve d'ecrire un code sans comprendre .
    encore une fois, Merci les gars
    amine
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  12. #12
    Membre régulier Avatar de jamdinhe
    Inscrit en
    Avril 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 165
    Points : 83
    Points
    83
    Par défaut
    le code etait comme ca pardon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    j:=query1.fieldByName('age').asinteger;
    Plusieurs processeurs pour une machine;
    Plusieurs Machines pour un calcul;
    Plusieurs calculs pour un résultat;
    Plusieurs Résultats pour un diagnostique;
    Plusieurs Diagnostiques pour une décision.

    ...........................................................

    la Décision est un acte de Management,
    le Management est un Acte d'informatique

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2018
    Messages : 1
    Points : 2
    Points
    2
    Par défaut
    Quand je pense que votre discussion m'aide plus de 10 ans après ahah, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 12/11/2008, 10h04
  2. utiliser une variable d'environement Windows dans un script
    Par pierre.zelb dans le forum VBScript
    Réponses: 2
    Dernier message: 29/11/2006, 15h50
  3. Réponses: 2
    Dernier message: 22/08/2006, 11h28
  4. [PHP-JS] utiliser une variable php dans du javascript
    Par kcizth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 06/02/2006, 11h53
  5. [FLASH MX2004] Utiliser une variable dans le code
    Par arnolem dans le forum Flash
    Réponses: 25
    Dernier message: 02/12/2005, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo