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 :

Message d'erreur que je ne comprends pas


Sujet :

Delphi

  1. #1
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut Message d'erreur que je ne comprends pas
    bonjour à tous et à toute,

    voila dans mon programme j'ai une recherche à faire j'affiche le ou les résultat dans un dbgrid je veux que quand je clik sur un enregistrement je récupére chaque colonne dans un edit

    j'ai utilisé un code qui me permet de récupérer les champs mais j'ai un message d'erreur qui sort

    tout d'abord le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var i:integer;
    begin
    for i:=0 to dbgrid1.Columns.Count do
    begin
     (Form17.FindComponent('Edit' + IntToStr(i+1)) as TEdit).Text:= dbgrid1.Fields[i].AsString;
    end;
    quand au message d'erreur c'est le suivant:
    project monprojet2.exe raised exception class EAccess Violation with message "Access violation at adresse 0050B112 in module "monprojet2.exe" .Read of adress 00000000"

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Est ce que tu as des composant Edit0, Edit1, Edit2, Edit3,..., EditX sur ta fiche Form17?

    L'erreur que tu obtient signifie certainement que tu essai d'accéder a un objet qui n'existe pas ou qui n'est pas alloué en mémoire.

    Pour récupérer les élements de ton DBGrid, utilise plutot le TDataset associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1.Text := MonQuery.FieldByName( 'NOM_DU_CHAMP' ).AsString ;

  3. #3
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    ben j'ai de edit1 juska edit6 sur ma fiche

  4. #4
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 310
    Points
    2 310
    Par défaut
    Salut;

    pourquoi se compliquer la tâche, les DBEDit récupèrent, automatiquement, les données alors autant les utiliser à la place des EDit et annuler catégoriquement le code associé.

    Recette : DBGrid + DBEDit = affichage escompté

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 457
    Points
    28 457
    Par défaut
    "Read of adress 00000000" c'est l'usage d'un pointeur null

    je te propose ceci
    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
     
    var 
      i: Integer;
      s: string;
      e: TEdit;
    begin
      Assert(Form17 <> nil, 'Form17 n''existe pas !');
      for i:=0 to dbgrid1.Columns.Count do
      begin
       s := 'Edit' + IntToStr(i+1);
       e :=  Form17.FindComponent(s) as TEdit;
       Assert(e <> nil, s + 'n''existe pas !');
       e.Text:= dbgrid1.Fields[i].AsString;
      end;
    end;

  6. #6
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    bon ben je vais me répondre toute seule le message d'erreur que j'avais était parske je ne fesait pas correspondre l'indice correctement il fallait que je mette un deuxiéme compteur comme ceci:

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var i,j:integer;
    begin
    j:=0;
    for i:=1 to 6 do
    begin
    (Form17.FindComponent('Edit' + IntToStr(i)) as TEdit).Text:= dbgrid1.DataSource.DataSet.Fields.Fields[j].Text;
    j:=j+1;
    end;
    comme ca on peut récupérer le résultat affiché dans un dbgrid dans des edits j'espére que ca aidera quelqu'un

    merci bcp a vous tous

  7. #7
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 292
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 292
    Points : 1 944
    Points
    1 944
    Par défaut
    L'erreur n'était pas le for i:=0 to dbgrid1.Columns.Count do?

    Il manque le -1 non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     for i:=0 to dbgrid1.Columns.Count-1 do

  8. #8
    Débutant Avatar de lila23
    Inscrit en
    Janvier 2009
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 354
    Points : 54
    Points
    54
    Par défaut
    aprés qu'on m'ai fait une bonne remarque je me suis apercu qu'il n'y vait pas besoin de deux compteur un seul suffit alors le code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var i:integer;
    begin
    for i:=1 to 6 do
    begin
    (Form17.FindComponent('Edit' + IntToStr(i)) as TEdit).Text:= dbgrid1.DataSource.DataSet.Fields.Fields[i-1].Text;
    end;

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

Discussions similaires

  1. message d'erreur que je ne comprend pas
    Par lila23 dans le forum Bases de données
    Réponses: 16
    Dernier message: 17/02/2009, 09h34
  2. Un message d'erreur que je ne comprends pas
    Par KOUTO dans le forum Bases de données
    Réponses: 7
    Dernier message: 22/01/2009, 17h25
  3. Message d'erreur que je ne comprends pas
    Par yvkoe dans le forum Langage
    Réponses: 4
    Dernier message: 24/11/2007, 10h27
  4. J'ai un message d'erreur que je ne comprend pas
    Par Jonathan Raucy dans le forum IHM
    Réponses: 2
    Dernier message: 24/09/2007, 17h14
  5. [Débutant] Message d'erreur que je ne comprends pas
    Par Le Furet dans le forum Langage
    Réponses: 2
    Dernier message: 25/02/2006, 17h37

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