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

Lazarus Pascal Discussion :

[PostgreSQL] Erreur : champ non trouvé [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut [PostgreSQL] Erreur : champ non trouvé
    Bonjour à toutes et à tous. Encore et toujours besoin de vous.
    Sur une fiche j'ai déposé :
    • un TZQuery (Requete_Actions),
    • un TDataSource (Source_Actions),
    • un TDBLookupComboBox (DBLCB_Actions),
    • un TEdit (Edition_Nombre).

    L'évènement OnDropDown du DBLCB_Actions contient le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFiche_Modifier_Compte.DBLCB_ActionsDropDown(Sender: TObject);
    begin
      Requete_Actions.Close;
      Requete_Actions.SQL.Text := 'SELECT act_id, act_valeur FROM s_ent.t_e_action_act ';
      Requete_Actions.SQL.Add('ORDER BY act_valeur;');
      Requete_Actions.Open;
      end;
    Le DBLCB_Actions se peuple correctement à l'activation de cet évènement.
    L'évènement OnSelect de ce même DBLCB_Actions contient le code suivant :
    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
    procedure TFiche_Modifier_Compte.DBLCB_ActionsSelect(Sender: TObject);
    var
      V_Action : variant;
      I_Action : integer;
    begin
      V_Action := DBLCB_Actions.KeyValue;
      I_Action := V_Action;
      LNombre.Enabled := true;
      Edition_Nombre.Enabled := true;
      Requete_Actions.Close;
      Requete_Actions.SQL.Text := 'SELECT cma_id FROM s_ent.t_j_compte_action_cma ';
      Requete_Actions.SQL.Add('WHERE act_id = :ACTION AND cpt_id = :COMPTE;');
      Requete_Actions.Params.ParamByName('ACTION').AsInteger := I_Action;
      Requete_Actions.Params.ParamByName('COMPTE').AsInteger := Fiche_Accueil.Compte;
      Requete_Actions.Open;
      //CmaId := Requete_Actions.FieldByName('cma_id').AsInteger;
      CmaId := Requete_Actions.Fields[0].AsInteger;
      Requete_Actions.Close;
    end;
    À l'exécution surgit l'erreur suivante :
    Nom : 2023-08-24 18 14 16.jpg
Affichages : 172
Taille : 33,1 Ko
    J'ai déposé un point d'arrêt en début du code de TFiche_Modifier_Compte.DBLCB_ActionsSelect(Sender: TObject). Tout se déroule correctement jusqu'à l'affectation de CmaId par l'une des deux méthodes, celle commentée ou l'autre. Je ne vois pas pourquoi le champ act_valeur n'est pas trouvé.
    Merci d'avance à celles ou ceux qui me dépanneront.
    Michel.

  2. #2
    Membre chevronné Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 346
    Par défaut
    la colonne en question ne doit pas exister dans s_ent.t_e_action_act, quelles sont les colonnes de cette table?

  3. #3
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut
    À licardentaistor, merci pour ta réponse.
    La table s_ent.t_e_action_act possède les champs suivants :
    • act_id (PK)
    • tax_id (FK)
    • ...
    • elg_id (FK)
    • act_valeur
    • act_isin

    D'ailleurs ce champ, act_valeur, s'affiche correctement dans DBLCB_Actions.

  4. #4
    Membre chevronné Avatar de licardentaistor
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2021
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2021
    Messages : 346
    Par défaut
    je ne vois de connexion à la base....

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    Citation Envoyé par Miflon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure TFiche_Modifier_Compte.DBLCB_ActionsDropDown(Sender: TObject);
    ...
      Requete_Actions.SQL.Text := 'SELECT act_id, act_valeur FROM s_ent.t_e_action_act ';
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TFiche_Modifier_Compte.DBLCB_ActionsSelect(Sender: TObject);
    ...
      Requete_Actions.SQL.Text := 'SELECT cma_id {????????, cma_valeur}   FROM s_ent.t_j_compte_action_cma ';
    ...
    ...
    Dans ta deuxième requête il te manque l'indication du champ.
    Les query doivent avoir les mêmes champs si ceux-ci sont prédéfinis visuellement.

  6. #6
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut
    À licardentaistor : la connexion à la base de données est faite par l'intermédiaire d'un module de données. Cela fonctionne puisque DBLCB_Actions est peuplé correctement.

    À anapurna : Le table s_ent.t_j_compte_actions_cma est une table de jointure dont voici les champs :
    • cma_id (PK),
    • act_id (FK) provenat de s_ent.t_e_action_act
    • cpt_id (FK) provenant de s_ent_t_e_compte_cpt,
    • cma_nombre qui correspond au nombre d'actions (act_id) détenu par le compte cpt_id.

    Dans la seconde requête je n'ai besoin que de act_id et cpt_id afin de récupérer cma_id puis modifier le nombre d'actions détenu par cpt_id à partir de la valeur du TEdit. Je vais m'orienter vers la réécriture du code de cette fiche dans un nouveau projet test.

    Merci à tous les deux, Michel.

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    Salut

    Je ne parle pas de la table, mais de ton TQuery : si celui-ci a défini les champs à l'avance, tu ne peux pas modifier la définition des champs (requête SQL).
    Pour bien faire, il nous faudrait la déclaration de ta requête dans l'en-tête de ta form / Datamodule.

    A priori il cherche à remplir un champ persistant qu'il ne retrouve pas dans la requête sous-jacente.

  8. #8
    Membre confirmé
    Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 126
    Par défaut
    Pour le TDataModule :
    Juste un TZConnection (Connexion_Postgresql) avec les créances pour la base de données et un évènement OnFormCreate.
    Pour Requete_Actions, rien dans SQL et dans évènement Fiche_Module_Donnees.Connexion_Postgresql. Tout est défini par le code fourni dans mes messages précédents.
    Je croyais que les commandes Close et Open vidaient et remplissaient les requêtes à base de SELECT.
    J'espère que c'est cela que tu attendais comme réponse.

  9. #9
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 933
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 933
    Par défaut
    Ton truc ne peut pas marcher.

    Le TDBLookupComboBox est lié à un champ spécifique retourné par le TZQuery (act_valeur) et au rafraichissement (ou à l'ouverture), il se met automatiquement à jour.

    A la sélection d'un élément tu modifies la requête du même composant TZQuery et act_valeur n'y figure pas, c'est le Combobox qui râle puisqu'il ne retrouve pas son champ. L'erreur se produit sur Open et n'a rien à voir avec CmaId (l'erreur est sur la ligne précédent celle en inverse vidéo puisque le pointeur de programme a déjà avancé d'une instruction).

    Mais ça ne sert à rien d'ajouter act_valeur à la deuxième requête puisque Open te fera pointer systématiquement sur le premier enregistrement. Tu dois dédier un TZQuery au Combobox et en utiliser un deuxième pour la suite des opérations.

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

Discussions similaires

  1. Erreur accordionItem non trouve
    Par marquisvincent dans le forum Silverlight
    Réponses: 7
    Dernier message: 02/07/2011, 18h37
  2. Réponses: 1
    Dernier message: 25/08/2010, 12h07
  3. Réponses: 3
    Dernier message: 11/12/2009, 20h55
  4. Erreur ressource non trouvée avec WindowBlinds
    Par jbrg dans le forum Langage
    Réponses: 2
    Dernier message: 25/10/2009, 00h09
  5. [MS-SQL] Champ non trouvé
    Par rdoudou dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/08/2007, 18h05

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