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 :

Plantage sur un post (avec TADOQuery)


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Points : 11
    Points
    11
    Par défaut Plantage sur un post (avec TADOQuery)
    Bonjour,

    Voici un problème que je ne sais par quel bout prendre, d'autant plus que je n'ai aucun message d'erreur mais juste un plantage.
    Si quelqu'un pouvait m'éclairer, ça me rendrait grand service.

    Extrait de code :
    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
     
        dmParam.qryPlanningCapa.Parameters.ParamByName('usine').Value := 'test1';
        dmParam.qryPlanningCapa.Parameters.ParamByName('sem_min').Value := DteDebut[0];
        dmParam.qryPlanningCapa.Parameters.ParamByName('annee_min').Value := DteDebut[1];
        dmParam.qryPlanningCapa.Parameters.ParamByName('sem_max').Value := DteFin[0];
        dmParam.qryPlanningCapa.Parameters.ParamByName('annee_max').Value := DteFin[1];
        OuvrirTable(DTS_Gestion.DataSet); // Fonction conteanant Open
        DTS_Gestion_Charges.DataSet.DisableControls;
        while not(DTS_Gestion.DataSet.Eof) do
        begin
          DTS_Gestion.DataSet.Edit;
          DTS_Gestion.DataSet.FieldByName('charge').AsInteger :=
            DTS_Gestion_Charges.DataSet.FieldByName('id').AsInteger;
          DTS_Gestion.DataSet.Next;  // PLANTAGE ICI
        end;
        DTS_Gestion.DataSet.Edit; 
        DTS_Gestion.DataSet.Post;
    DTS_gestion et DTS_Gestion_Charges sont des datasets pointant vers des TADOQuery
    Le SQL de la query du DTS_gestion est de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * FROM planning_capa
    WHERE annee >= :annee_min AND semaine >= :sem_min
        AND annee <= :annee_max AND semaine <= :sem_max
        AND usine = :usine
    On plante sur le next qui appelle post (en fait toute méthode appelant post placé à cet endroit fait planter)

    Merci.

  2. #2
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par nguema
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        while not(DTS_Gestion.DataSet.Eof) do
        begin
          DTS_Gestion.DataSet.Edit;
          DTS_Gestion.DataSet.FieldByName('charge').AsInteger :=
            DTS_Gestion_Charges.DataSet.FieldByName('id').AsInteger;
          DTS_Gestion.DataSet.Next;  // PLANTAGE ICI
        end;
        DTS_Gestion.DataSet.Edit; 
        DTS_Gestion.DataSet.Post;
    Merci.


    qu'est ce que je pense il faut changer la place de post et pourquoi la 2em Edit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        while not(DTS_Gestion.DataSet.Eof) do
        begin
          DTS_Gestion.DataSet.Edit;
          DTS_Gestion.DataSet.FieldByName('charge').AsInteger :=
            DTS_Gestion_Charges.DataSet.FieldByName('id').AsInteger;
          DTS_Gestion.DataSet.Post;
          DTS_Gestion.DataSet.Next;  // PLANTAGE ICI
        end;

  3. #3
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    @ aliwassem

    Citation Envoyé par aliwassem
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        while not(DTS_Gestion.DataSet.Eof) do
        begin
          DTS_Gestion.DataSet.Edit;
          DTS_Gestion.DataSet.FieldByName('charge').AsInteger :=
            DTS_Gestion_Charges.DataSet.FieldByName('id').AsInteger;
          DTS_Gestion.DataSet.Post;
          DTS_Gestion.DataSet.Next;  // PLANTAGE ICI
        end;
    détrompe moi mais la méthode Next appelle implicitement si besoin est la méthode Post non ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 18
    Points : 11
    Points
    11
    Par défaut
    Merci de vos réponses

    En effet next appelle post, et le plantage en question se produit avec n'importe quelle fonction appelant post, y compris bien sûr post lui-même.

    @ aliwassem: tu as raison, les deux dernières lignes semblent bien inutiles

    Le problème est toujours d'actualité

  5. #5
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    as-tu un code dans les évènements OnBeforePost et/ou OnAfterPost ?

  6. #6
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut
    Citation Envoyé par nguema
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        while not(DTS_Gestion.DataSet.Eof) do
        begin
          DTS_Gestion.DataSet.Edit;
          DTS_Gestion.DataSet.FieldByName('charge').AsInteger :=
            DTS_Gestion_Charges.DataSet.FieldByName('id').AsInteger;
          DTS_Gestion.DataSet.Next;  // PLANTAGE ICI
        end;

    je sais s'il faut aussi met le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DTS_Gestion_Charges.DataSet.Next
    ou non

  7. #7
    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
    Ca ne serait pas plus simple d'utiliser une requete Update ??
    Modérateur Delphi

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

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

Discussions similaires

  1. Plantage sur macro VBA avec listbox
    Par rlapt dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/12/2011, 07h06
  2. Réponses: 7
    Dernier message: 07/10/2011, 11h23
  3. [XML] Créer un fichier sur le serveur avec le contenu d'une requête POST
    Par kingmandrax dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 27/10/2006, 00h18
  4. Réponses: 2
    Dernier message: 10/07/2006, 11h08
  5. Appeler un programme sur le poste client avec <object>
    Par ouioui2000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 22/08/2005, 14h40

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