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

 Delphi Discussion :

comment créer paramétre par le composant adoquery directement


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Points : 77
    Points
    77
    Par défaut comment créer paramétre par le composant adoquery directement
    salam

    d'habitude j'utilise le code pour créer des paramètres sur mes SQL comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    with ado do
      begin
        sql.Clear  ;
        sql.Add('SELECT tempsdefaults.Date1,tempsdefaults.num_post');
        sql.Add('FROM tempsdefaults');
        sql.Add('WHERE (tempsdefaults.Date1=:lll )AND(tempsdefaults.num_post=:333 );');
        with Parameters.ParamByName('lll') do
    begin
      DataType := ftDate;
      Direction := pdInput;
      Value := StrToDate(date1.Caption);
    end;
    with Parameters.ParamByName('333') do
    begin
      DataType := ftstring;
      Direction := pdInput;
      Value :=P.EditValue;
    end;
        Open;
    ça marche très bien, mais dernièrement j'ai remarquer une propriété qui s’appelle paramètre comme par hasard sur mon composant adoquery .
    Nom : Capture2.JPG
Affichages : 762
Taille : 36,6 Ko

    alors j'ai essayer d'ajouter un paramètre comme suite :
    Nom : Capture.JPG
Affichages : 700
Taille : 22,1 Ko

    et voici mon sql :
    Nom : Capture3.JPG
Affichages : 685
Taille : 39,1 Ko

    mais malheureusement ça n'a pas marcher j'aimerai bien apprendre cette méthode .merci d'avance.
    Delphi XE8 Architect - Win 10

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 455
    Points : 24 867
    Points
    24 867
    Par défaut
    attention !!

    :NomParam c'est un paramètre
    ':NomParam' c'est juste une chaine contenant ":NomParam"
    Il ne trouve pas NomParam car il est mal écrit dans le SQL

    Dans ton cas il va comparer le champ CleProduit à la chaine ":CleProduit" et non utiliser un paramètre nommé CleProduit


    les '' ne doivent pas être mis dans le SQL, les paramètres sont justement conçu pour gérer au mieux le type des données passés à la requête (on parle de "Bind")

    A lire : Fourniture des paramètres pendant la conception



    Suffit de lire l'aide de Data.Win.ADODB.TParameters et sa méthode AddParameter ou CreateParameter

    ne pas oublier de lire aussi ParamCheck qui explique pourquoi l'affectation du SQL.Text avec des paramètres de la forme :NomParam ajoute automatiquement les paramètres dans la collection Parameters
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Points : 77
    Points
    77
    Par défaut
    merci pour les réponse.

    j'ai bien lu les aides mais ça ma échappé d'enlever les ' ' c’était un réflex parce-que dans le code je les mit sans problème .

    pour passé la valeur du paramètre en conception ça marche je lé mit dans la propriété value.le problème c'est que c'est pas dynamique et je crois que je peut pas maitre une valeur dynamique avec le concepteur du genre edit.text, alors j'ai essayer de le faire par code comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    with FData,produit_recette do
      begin
      Parameters[0].Value:='BP 0016';
      Open;
      showmessage(IntToStr(ParamCount))
      end;
    le ParamCount c'est pour compter les paramètre et ça me met 0

    et ça na pas marcher , j'aimerai bien savoir comment faire pour passer la valeur du paramètre par code ou dynamiquement par concepteur et bien-sur je vous remercie.
    Delphi XE8 Architect - Win 10

  4. #4
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    il est conseillé lorsqu'on créer dynamiquement une query d'utiliser ParamCheck pour qu'il mette à jour ca liste de paramètres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    with ado do
      begin
        sql.Clear  ;
        sql.Add('SELECT tempsdefaults.Date1,tempsdefaults.num_post');
        sql.Add('FROM tempsdefaults');
        sql.Add('WHERE (tempsdefaults.Date1=:lll )AND(tempsdefaults.num_post=:333 );');
        Paramcheck := True;
        with Parameters.ParamByName('lll') do
    begin
      DataType := ftDate;
      Direction := pdInput;
      Value := StrToDate(date1.Caption);
    end;
    with Parameters.ParamByName('333') do
    begin
      DataType := ftstring;
      Direction := pdInput;
      Value :=P.EditValue;
    end;
        Open;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Points : 77
    Points
    77
    Par défaut
    merci ,ça m'aidera forcément quant j'aurai un sql plein de paramètres .

    sinon :
    - pour modifier le paramètre dynamiquement par concepteur je crois que c'est pas possible (sauf si ça existe et je serai très )
    - pour modifier le paramètre par code (juste le paramètre) j'ai remplacé le paramètre nommé par un paramètre inconnu comme suite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT designation_recette, etape, Num_post, designation_momunclature, cleproduit, production, clerecette_momunclature
    FROM produit_recette 
    WHERE(cleproduit = ?)
    et dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with FData,produit_recette do
      begin
      Parameters[0].Value:=FData.Requête_op_dispo.FieldByName('cleproduit').AsString;
      Open;
      end;
    je ne sais pas pourquoi ça n'a pas marché avec les paramètre nommé mais bon ça n'a pas marcher d'une manière mais ça a marcher d'une autre . je vous remercie énormément .
    Delphi XE8 Architect - Win 10

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2010, 14h25
  2. Comment créer un composant orienté objet par héritage ?
    Par Amenofis dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2007, 10h21
  3. Réponses: 5
    Dernier message: 17/07/2006, 18h34

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