begin process at 2010 03 19 08:33:03
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

Bases de données

 > 

MySQL Erreur


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

MySQL Erreur

samedi 8 mars 2003 à 16:25:28 | MySQL Erreur

davix123

Bonjour,
j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.

Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.

Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.

Je ne comprend pas pourquoi ?

Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :

procedure TForm1.Loadtree;
begin
...
end;

Merci de votre aide.

Davix
samedi 8 mars 2003 à 17:13:18 | Re : MySQL Erreur

Bestiol

Pourrais-tu nous donner le code de ta procédure LoadTree ?

Ca aiderait peut-être à voir où se situe le problème...

@+
Bestiol.


-------------------------------
Réponse au message :
-------------------------------

> Bonjour,
> j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
>
> Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
>
> Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
>
> Je ne comprend pas pourquoi ?
>
> Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
>
> procedure TForm1.Loadtree;
> begin
> ...
> end;
>
> Merci de votre aide.
>
> Davix
samedi 8 mars 2003 à 19:53:13 | Re : MySQL Erreur

davix123

Voici le code de LoadTree :

procedure TPremier.loadtree;
var Res : PMYSQL_RES;
Row : PMYSQL_ROW;
noeux : TTreenode;

begin
res:=MySQL.Query('select * FROM ENTITE;');
if res<>nil then
begin
try
Row := Mysql.mysql_fetch_row(Res);
if row=nil then
begin
noeux:=TreeView1.Items.AddChild(nil,'Aucune entité');
noeux.ImageIndex:=-1;
noeux.SelectedIndex:=-1;
end;
while Row <> nil do
begin
noeux:=TreeView1.Items.AddChild(nil,row[1]);
with noeux do
begin
ImageIndex:=0;
SelectedIndex:=0;
data:=pointer(0);
StateIndex:=strtoint(row[0]);
end;
Row := mysql.mysql_fetch_row(Res);
end;
finally
Mysql.mysql_free_result(Res);
end;
end;
end;


Davix

-------------------------------
Réponse au message :
-------------------------------

> Pourrais-tu nous donner le code de ta procédure LoadTree ?
>
> Ca aiderait peut-être à voir où se situe le problème...
>
> @+
> Bestiol.
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> > j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
> >
> > Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
> >
> > Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
> >
> > Je ne comprend pas pourquoi ?
> >
> > Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
> >
> > procedure TForm1.Loadtree;
> > begin
> > ...
> > end;
> >
> > Merci de votre aide.
> >
> > Davix
>
samedi 8 mars 2003 à 20:03:40 | Re : MySQL Erreur

Bestiol

Euh... Pour l'instant, je ne vois pas pourquoi ça planterait !!

Peux-tu donner le code correspondant à l'appel qui fait planter le programme ? (utilise le mode pas-à-pas...)

Merci ;o)

Bestiol.


-------------------------------
Réponse au message :
-------------------------------

> Voici le code de LoadTree :
>
> procedure TPremier.loadtree;
> var Res : PMYSQL_RES;
> Row : PMYSQL_ROW;
> noeux : TTreenode;
>
> begin
> res:=MySQL.Query('select * FROM ENTITE;');
> if res<>nil then
> begin
> try
> Row := Mysql.mysql_fetch_row(Res);
> if row=nil then
> begin
> noeux:=TreeView1.Items.AddChild(nil,'Aucune entité');
> noeux.ImageIndex:=-1;
> noeux.SelectedIndex:=-1;
> end;
> while Row <> nil do
> begin
> noeux:=TreeView1.Items.AddChild(nil,row[1]);
> with noeux do
> begin
> ImageIndex:=0;
> SelectedIndex:=0;
> data:=pointer(0);
> StateIndex:=strtoint(row[0]);
> end;
> Row := mysql.mysql_fetch_row(Res);
> end;
> finally
> Mysql.mysql_free_result(Res);
> end;
> end;
> end;
>
>
> Davix
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Pourrais-tu nous donner le code de ta procédure LoadTree ?
> >
> > Ca aiderait peut-être à voir où se situe le problème...
> >
> > @+
> > Bestiol.
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjour,
> > > j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
> > >
> > > Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
> > >
> > > Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
> > >
> > > Je ne comprend pas pourquoi ?
> > >
> > > Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
> > >
> > > procedure TForm1.Loadtree;
> > > begin
> > > ...
> > > end;
> > >
> > > Merci de votre aide.
> > >
> > > Davix
> >
>
samedi 8 mars 2003 à 20:36:54 | Re : MySQL Erreur

davix123

La procedure est lancé simple par un LoadTree. Voici la partie du code qui en fait l'appel

MySQL.Host:=host;
MySQL.login:=user;
MySQL.Password:=pass;
MySQL.Database:=base;
if MySQL.Connect<0 then
begin
showmessage('PB de connexion à la base de données');
application.terminate;
end;
res:=MySQL.Query('select * FROM UTILISATEUR where IDUSER='+lid+';');
if res<>nil then
begin
try
Row := Mysql.mysql_fetch_row(Res);
while Row <> nil do
begin
llogin:=row[1];
lprenom:=row[3];
lnom:=row[4];
Row := mysql.mysql_fetch_row(Res);
end;
finally
Mysql.mysql_free_result(Res);
end;
end;
Premier.Caption:=premier.Caption+' - Utilisateur : '+lprenom+' '+lnom;
Loadtree;

Jusqu'à la fin de LoadTree, tout se passe bien.

Il y a une procedure pour faire un popupmenu sur Click, en voici le code :
procedure TPremier.TreeView1Click(Sender: TObject);
var NewItem: TMenuItem;
Res : PMYSQL_RES;
Row : PMYSQL_ROW;

begin
popupmenu1.Items.Clear;
if treeview1.Selected.Level=0 then
begin
NewItem := TMenuItem.Create(PopupMenu1);
PopupMenu1.Items.Add(NewItem);
NewItem.Caption := 'Ajouter Entité ';
NewItem.Tag := 0;
NewItem.OnClick := PopupMenuItemsClick;
NewItem := TMenuItem.Create(PopupMenu1);
PopupMenu1.Items.Add(NewItem);
NewItem.Caption := 'Supprimer Entité ';
NewItem.Tag := 1;
NewItem.OnClick := PopupMenuItemsClick;
NewItem := TMenuItem.Create(PopupMenu1);
PopupMenu1.Items.Add(NewItem);
NewItem.Caption := 'Ajouter Site ';
NewItem.Tag := 2;
NewItem.OnClick := PopupMenuItemsClick;
treeview1.Selected.DeleteChildren;
if not MySQL.Connected then showmessage('Pas Connecter au serveur MySQL')
else
begin
res:=MySQL.Query('select * from SITE where IDENTITE='+inttostr(treeview1.Selected.StateIndex)+';');
treeview1.Items.AddChild(treeview1.Selected,'Coucou');
treeview1.Selected.Expand(true);
end;
end;
end;

A l'appel de Mysql.query, l'appli plante. Si j'efface ce bout de code, pour mettre juste un Mysql.Query, ça plante. Si je met de MySQL.Query à la fin de LoadTree, ça fonctionne. Par contre, ça ne me sert à rien de le mettre là.

Merci

-------------------------------
Réponse au message :
-------------------------------

> Euh... Pour l'instant, je ne vois pas pourquoi ça planterait !!
>
> Peux-tu donner le code correspondant à l'appel qui fait planter le programme ? (utilise le mode pas-à-pas...)
>
> Merci ;o)
>
> Bestiol.
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Voici le code de LoadTree :
> >
> > procedure TPremier.loadtree;
> > var Res : PMYSQL_RES;
> > Row : PMYSQL_ROW;
> > noeux : TTreenode;
> >
> > begin
> > res:=MySQL.Query('select * FROM ENTITE;');
> > if res<>nil then
> > begin
> > try
> > Row := Mysql.mysql_fetch_row(Res);
> > if row=nil then
> > begin
> > noeux:=TreeView1.Items.AddChild(nil,'Aucune entité');
> > noeux.ImageIndex:=-1;
> > noeux.SelectedIndex:=-1;
> > end;
> > while Row <> nil do
> > begin
> > noeux:=TreeView1.Items.AddChild(nil,row[1]);
> > with noeux do
> > begin
> > ImageIndex:=0;
> > SelectedIndex:=0;
> > data:=pointer(0);
> > StateIndex:=strtoint(row[0]);
> > end;
> > Row := mysql.mysql_fetch_row(Res);
> > end;
> > finally
> > Mysql.mysql_free_result(Res);
> > end;
> > end;
> > end;
> >
> >
> > Davix
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Pourrais-tu nous donner le code de ta procédure LoadTree ?
> > >
> > > Ca aiderait peut-être à voir où se situe le problème...
> > >
> > > @+
> > > Bestiol.
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Bonjour,
> > > > j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
> > > >
> > > > Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
> > > >
> > > > Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
> > > >
> > > > Je ne comprend pas pourquoi ?
> > > >
> > > > Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
> > > >
> > > > procedure TForm1.Loadtree;
> > > > begin
> > > > ...
> > > > end;
> > > >
> > > > Merci de votre aide.
> > > >
> > > > Davix
> > >
> >
>
samedi 8 mars 2003 à 22:21:54 | [A résoudre !] MySQL Erreur

Bestiol

Je suis désolé, je ne vois pas... N'importe qu'elle requête fait planter le prog ? Pasque sinon ça aurait pu être à cause du treeview...

Je n'ai pas vraiment d'iddées, là !

Essaye de mettre un truc genre "i := i + 1" après ton TreeView.Selected.DeleteChildren... Une instruction bidon... Ca m'est arrivé que l'erreur soit donnée une instruction après
qu'elle soit vraiment apparue ! Si c'est le cas ici, ton instruction bidon fera planter le prog avant le MySQL.Query...



Bonne continuation !
Bestiol.


-------------------------------
Réponse au message :
-------------------------------

> La procedure est lancé simple par un LoadTree. Voici la partie du code qui en fait l'appel
>
> MySQL.Host:=host;
> MySQL.login:=user;
> MySQL.Password:=pass;
> MySQL.Database:=base;
> if MySQL.Connect<0 then
> begin
> showmessage('PB de connexion à la base de données');
> application.terminate;
> end;
> res:=MySQL.Query('select * FROM UTILISATEUR where IDUSER='+lid+';');
> if res<>nil then
> begin
> try
> Row := Mysql.mysql_fetch_row(Res);
> while Row <> nil do
> begin
> llogin:=row[1];
> lprenom:=row[3];
> lnom:=row[4];
> Row := mysql.mysql_fetch_row(Res);
> end;
> finally
> Mysql.mysql_free_result(Res);
> end;
> end;
> Premier.Caption:=premier.Caption+' - Utilisateur : '+lprenom+' '+lnom;
> Loadtree;
>
> Jusqu'à la fin de LoadTree, tout se passe bien.
>
> Il y a une procedure pour faire un popupmenu sur Click, en voici le code :
> procedure TPremier.TreeView1Click(Sender: TObject);
> var NewItem: TMenuItem;
> Res : PMYSQL_RES;
> Row : PMYSQL_ROW;
>
> begin
> popupmenu1.Items.Clear;
> if treeview1.Selected.Level=0 then
> begin
> NewItem := TMenuItem.Create(PopupMenu1);
> PopupMenu1.Items.Add(NewItem);
> NewItem.Caption := 'Ajouter Entité ';
> NewItem.Tag := 0;
> NewItem.OnClick := PopupMenuItemsClick;
> NewItem := TMenuItem.Create(PopupMenu1);
> PopupMenu1.Items.Add(NewItem);
> NewItem.Caption := 'Supprimer Entité ';
> NewItem.Tag := 1;
> NewItem.OnClick := PopupMenuItemsClick;
> NewItem := TMenuItem.Create(PopupMenu1);
> PopupMenu1.Items.Add(NewItem);
> NewItem.Caption := 'Ajouter Site ';
> NewItem.Tag := 2;
> NewItem.OnClick := PopupMenuItemsClick;
> treeview1.Selected.DeleteChildren;
> if not MySQL.Connected then showmessage('Pas Connecter au serveur MySQL')
> else
> begin
> res:=MySQL.Query('select * from SITE where IDENTITE='+inttostr(treeview1.Selected.StateIndex)+';');
> treeview1.Items.AddChild(treeview1.Selected,'Coucou');
> treeview1.Selected.Expand(true);
> end;
> end;
> end;
>
> A l'appel de Mysql.query, l'appli plante. Si j'efface ce bout de code, pour mettre juste un Mysql.Query, ça plante. Si je met de MySQL.Query à la fin de LoadTree, ça fonctionne. Par contre, ça ne me sert à rien de le mettre là.
>
> Merci
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Euh... Pour l'instant, je ne vois pas pourquoi ça planterait !!
> >
> > Peux-tu donner le code correspondant à l'appel qui fait planter le programme ? (utilise le mode pas-à-pas...)
> >
> > Merci ;o)
> >
> > Bestiol.
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Voici le code de LoadTree :
> > >
> > > procedure TPremier.loadtree;
> > > var Res : PMYSQL_RES;
> > > Row : PMYSQL_ROW;
> > > noeux : TTreenode;
> > >
> > > begin
> > > res:=MySQL.Query('select * FROM ENTITE;');
> > > if res<>nil then
> > > begin
> > > try
> > > Row := Mysql.mysql_fetch_row(Res);
> > > if row=nil then
> > > begin
> > > noeux:=TreeView1.Items.AddChild(nil,'Aucune entité');
> > > noeux.ImageIndex:=-1;
> > > noeux.SelectedIndex:=-1;
> > > end;
> > > while Row <> nil do
> > > begin
> > > noeux:=TreeView1.Items.AddChild(nil,row[1]);
> > > with noeux do
> > > begin
> > > ImageIndex:=0;
> > > SelectedIndex:=0;
> > > data:=pointer(0);
> > > StateIndex:=strtoint(row[0]);
> > > end;
> > > Row := mysql.mysql_fetch_row(Res);
> > > end;
> > > finally
> > > Mysql.mysql_free_result(Res);
> > > end;
> > > end;
> > > end;
> > >
> > >
> > > Davix
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Pourrais-tu nous donner le code de ta procédure LoadTree ?
> > > >
> > > > Ca aiderait peut-être à voir où se situe le problème...
> > > >
> > > > @+
> > > > Bestiol.
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Bonjour,
> > > > > j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
> > > > >
> > > > > Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
> > > > >
> > > > > Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
> > > > >
> > > > > Je ne comprend pas pourquoi ?
> > > > >
> > > > > Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
> > > > >
> > > > > procedure TForm1.Loadtree;
> > > > > begin
> > > > > ...
> > > > > end;
> > > > >
> > > > > Merci de votre aide.
> > > > >
> > > > > Davix
> > > >
> > >
> >
>
dimanche 9 mars 2003 à 11:54:46 | Re : [A résoudre !] MySQL Erreur

alexanderpopov

Fallait m envoyer un tit message usr ma boiboite delphifr, comme ca j aurais pu vous aide de suite car comme j ai un peu de travail par ci par la je ne pense pas tout le temps a regarder le forum, je vais te faire un exemple pour ton treeview voir un peu et je te l envoie.

PoP
------------------
ViVe Les ChatS


-------------------------------
Réponse au message :
-------------------------------

> Je suis désolé, je ne vois pas... N'importe qu'elle requête fait planter le prog ? Pasque sinon ça aurait pu être à cause du treeview...
>
> Je n'ai pas vraiment d'iddées, là !
>
> Essaye de mettre un truc genre "i := i + 1" après ton TreeView.Selected.DeleteChildren... Une instruction bidon... Ca m'est arrivé que l'erreur soit donnée une instruction après
> qu'elle soit vraiment apparue ! Si c'est le cas ici, ton instruction bidon fera planter le prog avant le MySQL.Query...
>
>
>
> Bonne continuation !
> Bestiol.
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > La procedure est lancé simple par un LoadTree. Voici la partie du code qui en fait l'appel
> >
> > MySQL.Host:=host;
> > MySQL.login:=user;
> > MySQL.Password:=pass;
> > MySQL.Database:=base;
> > if MySQL.Connect<0 then
> > begin
> > showmessage('PB de connexion à la base de données');
> > application.terminate;
> > end;
> > res:=MySQL.Query('select * FROM UTILISATEUR where IDUSER='+lid+';');
> > if res<>nil then
> > begin
> > try
> > Row := Mysql.mysql_fetch_row(Res);
> > while Row <> nil do
> > begin
> > llogin:=row[1];
> > lprenom:=row[3];
> > lnom:=row[4];
> > Row := mysql.mysql_fetch_row(Res);
> > end;
> > finally
> > Mysql.mysql_free_result(Res);
> > end;
> > end;
> > Premier.Caption:=premier.Caption+' - Utilisateur : '+lprenom+' '+lnom;
> > Loadtree;
> >
> > Jusqu'à la fin de LoadTree, tout se passe bien.
> >
> > Il y a une procedure pour faire un popupmenu sur Click, en voici le code :
> > procedure TPremier.TreeView1Click(Sender: TObject);
> > var NewItem: TMenuItem;
> > Res : PMYSQL_RES;
> > Row : PMYSQL_ROW;
> >
> > begin
> > popupmenu1.Items.Clear;
> > if treeview1.Selected.Level=0 then
> > begin
> > NewItem := TMenuItem.Create(PopupMenu1);
> > PopupMenu1.Items.Add(NewItem);
> > NewItem.Caption := 'Ajouter Entité ';
> > NewItem.Tag := 0;
> > NewItem.OnClick := PopupMenuItemsClick;
> > NewItem := TMenuItem.Create(PopupMenu1);
> > PopupMenu1.Items.Add(NewItem);
> > NewItem.Caption := 'Supprimer Entité ';
> > NewItem.Tag := 1;
> > NewItem.OnClick := PopupMenuItemsClick;
> > NewItem := TMenuItem.Create(PopupMenu1);
> > PopupMenu1.Items.Add(NewItem);
> > NewItem.Caption := 'Ajouter Site ';
> > NewItem.Tag := 2;
> > NewItem.OnClick := PopupMenuItemsClick;
> > treeview1.Selected.DeleteChildren;
> > if not MySQL.Connected then showmessage('Pas Connecter au serveur MySQL')
> > else
> > begin
> > res:=MySQL.Query('select * from SITE where IDENTITE='+inttostr(treeview1.Selected.StateIndex)+';');
> > treeview1.Items.AddChild(treeview1.Selected,'Coucou');
> > treeview1.Selected.Expand(true);
> > end;
> > end;
> > end;
> >
> > A l'appel de Mysql.query, l'appli plante. Si j'efface ce bout de code, pour mettre juste un Mysql.Query, ça plante. Si je met de MySQL.Query à la fin de LoadTree, ça fonctionne. Par contre, ça ne me sert à rien de le mettre là.
> >
> > Merci
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Euh... Pour l'instant, je ne vois pas pourquoi ça planterait !!
> > >
> > > Peux-tu donner le code correspondant à l'appel qui fait planter le programme ? (utilise le mode pas-à-pas...)
> > >
> > > Merci ;o)
> > >
> > > Bestiol.
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Voici le code de LoadTree :
> > > >
> > > > procedure TPremier.loadtree;
> > > > var Res : PMYSQL_RES;
> > > > Row : PMYSQL_ROW;
> > > > noeux : TTreenode;
> > > >
> > > > begin
> > > > res:=MySQL.Query('select * FROM ENTITE;');
> > > > if res<>nil then
> > > > begin
> > > > try
> > > > Row := Mysql.mysql_fetch_row(Res);
> > > > if row=nil then
> > > > begin
> > > > noeux:=TreeView1.Items.AddChild(nil,'Aucune entité');
> > > > noeux.ImageIndex:=-1;
> > > > noeux.SelectedIndex:=-1;
> > > > end;
> > > > while Row <> nil do
> > > > begin
> > > > noeux:=TreeView1.Items.AddChild(nil,row[1]);
> > > > with noeux do
> > > > begin
> > > > ImageIndex:=0;
> > > > SelectedIndex:=0;
> > > > data:=pointer(0);
> > > > StateIndex:=strtoint(row[0]);
> > > > end;
> > > > Row := mysql.mysql_fetch_row(Res);
> > > > end;
> > > > finally
> > > > Mysql.mysql_free_result(Res);
> > > > end;
> > > > end;
> > > > end;
> > > >
> > > >
> > > > Davix
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Pourrais-tu nous donner le code de ta procédure LoadTree ?
> > > > >
> > > > > Ca aiderait peut-être à voir où se situe le problème...
> > > > >
> > > > > @+
> > > > > Bestiol.
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Bonjour,
> > > > > > j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
> > > > > >
> > > > > > Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
> > > > > >
> > > > > > Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
> > > > > >
> > > > > > Je ne comprend pas pourquoi ?
> > > > > >
> > > > > > Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
> > > > > >
> > > > > > procedure TForm1.Loadtree;
> > > > > > begin
> > > > > > ...
> > > > > > end;
> > > > > >
> > > > > > Merci de votre aide.
> > > > > >
> > > > > > Davix
> > > > >
> > > >
> > >
> >
>
dimanche 9 mars 2003 à 12:54:17 | Exemple mis en ligne

alexanderpopov

Je viens de mettre un exemple pour ton cas, j ai supposé une base de données avec deux table : utilisateur et entite.
Pour ce qui est de la popup je ne l ai pas mis, mais je pense que tu devrais mettre ta procedure dans le 'OnPopup' du PopupMenu.


http://www.delphifr.com/article.aspx?Val=2340


PoP.

------------------
ViVe Les ChatS

lundi 10 mars 2003 à 19:44:25 | Solution MySQL Erreur

davix123

Bonjour,

je vous remercie tous pour votre aide.
J'ai trouvé l'erreur, mais je ne comprend pas pourquoi.
Cette erreur est générée qu'avec des instructions MySQL, et pas par des instructions Delphi standard.

En fait, au démarrage de mon appli, je charge un SplashScreen. Dans le unit principal, avant l'instruction Application.run, je déchargeai le SplashScreen avec un TPlashScreen.close, puis entre un Try Finally, je vidais la Form par un TPlashScreen.release. En supprimant cette dernière instruction, je n'ai plus l'erreur.

Merci à Tous

Davix



-------------------------------
Réponse au message :
-------------------------------

> Fallait m envoyer un tit message usr ma boiboite delphifr, comme ca j aurais pu vous aide de suite car comme j ai un peu de travail par ci par la je ne pense pas tout le temps a regarder le forum, je vais te faire un exemple pour ton treeview voir un peu et je te l envoie.
>
> PoP
> ------------------
> ViVe Les ChatS
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Je suis désolé, je ne vois pas... N'importe qu'elle requête fait planter le prog ? Pasque sinon ça aurait pu être à cause du treeview...
> >
> > Je n'ai pas vraiment d'iddées, là !
> >
> > Essaye de mettre un truc genre "i := i + 1" après ton TreeView.Selected.DeleteChildren... Une instruction bidon... Ca m'est arrivé que l'erreur soit donnée une instruction après
> > qu'elle soit vraiment apparue ! Si c'est le cas ici, ton instruction bidon fera planter le prog avant le MySQL.Query...
> >
> >
> >
> > Bonne continuation !
> > Bestiol.
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > La procedure est lancé simple par un LoadTree. Voici la partie du code qui en fait l'appel
> > >
> > > MySQL.Host:=host;
> > > MySQL.login:=user;
> > > MySQL.Password:=pass;
> > > MySQL.Database:=base;
> > > if MySQL.Connect<0 then
> > > begin
> > > showmessage('PB de connexion à la base de données');
> > > application.terminate;
> > > end;
> > > res:=MySQL.Query('select * FROM UTILISATEUR where IDUSER='+lid+';');
> > > if res<>nil then
> > > begin
> > > try
> > > Row := Mysql.mysql_fetch_row(Res);
> > > while Row <> nil do
> > > begin
> > > llogin:=row[1];
> > > lprenom:=row[3];
> > > lnom:=row[4];
> > > Row := mysql.mysql_fetch_row(Res);
> > > end;
> > > finally
> > > Mysql.mysql_free_result(Res);
> > > end;
> > > end;
> > > Premier.Caption:=premier.Caption+' - Utilisateur : '+lprenom+' '+lnom;
> > > Loadtree;
> > >
> > > Jusqu'à la fin de LoadTree, tout se passe bien.
> > >
> > > Il y a une procedure pour faire un popupmenu sur Click, en voici le code :
> > > procedure TPremier.TreeView1Click(Sender: TObject);
> > > var NewItem: TMenuItem;
> > > Res : PMYSQL_RES;
> > > Row : PMYSQL_ROW;
> > >
> > > begin
> > > popupmenu1.Items.Clear;
> > > if treeview1.Selected.Level=0 then
> > > begin
> > > NewItem := TMenuItem.Create(PopupMenu1);
> > > PopupMenu1.Items.Add(NewItem);
> > > NewItem.Caption := 'Ajouter Entité ';
> > > NewItem.Tag := 0;
> > > NewItem.OnClick := PopupMenuItemsClick;
> > > NewItem := TMenuItem.Create(PopupMenu1);
> > > PopupMenu1.Items.Add(NewItem);
> > > NewItem.Caption := 'Supprimer Entité ';
> > > NewItem.Tag := 1;
> > > NewItem.OnClick := PopupMenuItemsClick;
> > > NewItem := TMenuItem.Create(PopupMenu1);
> > > PopupMenu1.Items.Add(NewItem);
> > > NewItem.Caption := 'Ajouter Site ';
> > > NewItem.Tag := 2;
> > > NewItem.OnClick := PopupMenuItemsClick;
> > > treeview1.Selected.DeleteChildren;
> > > if not MySQL.Connected then showmessage('Pas Connecter au serveur MySQL')
> > > else
> > > begin
> > > res:=MySQL.Query('select * from SITE where IDENTITE='+inttostr(treeview1.Selected.StateIndex)+';');
> > > treeview1.Items.AddChild(treeview1.Selected,'Coucou');
> > > treeview1.Selected.Expand(true);
> > > end;
> > > end;
> > > end;
> > >
> > > A l'appel de Mysql.query, l'appli plante. Si j'efface ce bout de code, pour mettre juste un Mysql.Query, ça plante. Si je met de MySQL.Query à la fin de LoadTree, ça fonctionne. Par contre, ça ne me sert à rien de le mettre là.
> > >
> > > Merci
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Euh... Pour l'instant, je ne vois pas pourquoi ça planterait !!
> > > >
> > > > Peux-tu donner le code correspondant à l'appel qui fait planter le programme ? (utilise le mode pas-à-pas...)
> > > >
> > > > Merci ;o)
> > > >
> > > > Bestiol.
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > > Voici le code de LoadTree :
> > > > >
> > > > > procedure TPremier.loadtree;
> > > > > var Res : PMYSQL_RES;
> > > > > Row : PMYSQL_ROW;
> > > > > noeux : TTreenode;
> > > > >
> > > > > begin
> > > > > res:=MySQL.Query('select * FROM ENTITE;');
> > > > > if res<>nil then
> > > > > begin
> > > > > try
> > > > > Row := Mysql.mysql_fetch_row(Res);
> > > > > if row=nil then
> > > > > begin
> > > > > noeux:=TreeView1.Items.AddChild(nil,'Aucune entité');
> > > > > noeux.ImageIndex:=-1;
> > > > > noeux.SelectedIndex:=-1;
> > > > > end;
> > > > > while Row <> nil do
> > > > > begin
> > > > > noeux:=TreeView1.Items.AddChild(nil,row[1]);
> > > > > with noeux do
> > > > > begin
> > > > > ImageIndex:=0;
> > > > > SelectedIndex:=0;
> > > > > data:=pointer(0);
> > > > > StateIndex:=strtoint(row[0]);
> > > > > end;
> > > > > Row := mysql.mysql_fetch_row(Res);
> > > > > end;
> > > > > finally
> > > > > Mysql.mysql_free_result(Res);
> > > > > end;
> > > > > end;
> > > > > end;
> > > > >
> > > > >
> > > > > Davix
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > -------------------------------
> > > > >
> > > > > > Pourrais-tu nous donner le code de ta procédure LoadTree ?
> > > > > >
> > > > > > Ca aiderait peut-être à voir où se situe le problème...
> > > > > >
> > > > > > @+
> > > > > > Bestiol.
> > > > > >
> > > > > >
> > > > > > -------------------------------
> > > > > > Réponse au message :
> > > > > > -------------------------------
> > > > > >
> > > > > > > Bonjour,
> > > > > > > j'utilise le composant d'alexanderpopov présent sur ce site pour faire des connexions MySQL.
> > > > > > >
> > > > > > > Mon programme fonctionne avec une TreeView. Pour la remplir avec les données du serveur Mysql, j'ai écris une procedure LoadTree; Celle-ci rempli correctement la TreeView. Par contre, tout appel à MySQL après cette procedure fait systématiquement planté l'application.
> > > > > > >
> > > > > > > Le Message d'erreur est : Access Violation at adresse 100060C0. Read of adresse 100060C0.
> > > > > > >
> > > > > > > Je ne comprend pas pourquoi ?
> > > > > > >
> > > > > > > Ma procedure est déclarée avec toutes les procedures, et dans le programme, elle est écrite de la manière suivante :
> > > > > > >
> > > > > > > procedure TForm1.Loadtree;
> > > > > > > begin
> > > > > > > ...
> > > > > > > end;
> > > > > > >
> > > > > > > Merci de votre aide.
> > > > > > >
> > > > > > > Davix
> > > > > >
> > > > >
> > > >
> > >
> >
>
lundi 10 mars 2003 à 22:16:59 | possible probleme

alexanderpopov


Le composant MySql initialise et retire le lien au dll automatiquement [cf le code source du composant tout en bas dans la section INITIALIZE et FINALI...] ayant mis le composant sur une form qui est le spalsh ou par la suite fesant un release la connection au dll se plante.

Si tu peux envoie moi ton prog a la fin avec un commenaire sur le Release que je puisse voir si cela interfere ou non avec le composant.

Merci

PoP.

------------------
ViVe Les ChatS


Cette discussion est classée dans : programme, mysql, erreur, treeview, procedure


Répondre à ce message

Sujets en rapport avec ce message

THREADS ERREUR [ par w38 ] Bonjour,Étant donné que j'ai une application qui met un temps fou, j'ai décidéd'utiliser des threads.Toutefois, le bouquin que j'ai stipule une formul Reconnexion a oracle [ par amidamaru ] Bonjour,Mon programme pousse des données dans une base Oracle 9 et j'aimerais pouvoir gérer les coupures réseaux et autre problème qui pourrais surven probleme avec ajout d'1 2eme form [ par dk ] depuis qq temps je me confectionne un petit programme qui tient sur un seul formulaire (form1) mais maintenant j'aimerais ajouter qq options supplemen composant mysql !! ERREUR !! [ par svan1812 ] Bonjour a tous ,Lors de l'installation du composant mysql nous avons une erreur (mysql1.dcu introvable),pour présision nous travaiilon s avec la vers problème d'execution ds un programme de BDD [ par Rankin ] Salut, alors voilà j'ai posté il y a quelques jours pour faire part d'un problème d'éxecution de l'appli que je viens de finir, à savoir qu'elle ne se Interception de l'erreur de connection [ par eXeco ] Je suis assez désabuser de ne pas pouvoir intercepter une simple erreur de connection.Il s'agit d'un TSQLConnection paramétré pour MysqlQuand le serve delphi/Mysql erreur faut ajouter une colonne non blob a la table [ par haouestarik ] bonjour,je developpe une application delphi/Mysqlj'ai crée dans ma table un champs appelé 'photo' type BLOBsur ma fiche j'ai utilisé un DBIMAGE mais a Connection à une base MYSQL??? [ par Gokuan ] Hello,  je voudrai savoir si à partir d'un programme Delphi, je px me connecté à une base de donnée mysql et la modifié a partir du programme delphi e Erreur vraiment anormale..... aidez moi, mon diplome en dépent... [ par Gokuan ] Bonjour,  voilà, j'ai créé un programme de mise à jour de prix dans une base donnée. Le programme fonctionne très bien, il y a beaucoup de requête, ma Une commande ou action sans procedure dès le lancement du programme ? [ par Val08000 ] Bonjour !Voila je voudrais savoir si il est possible de faire qu'une action s'exerce dès le lancement du programme ? En fait réaliser une action mais


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales