Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD12] [Php4WD]

6 réponses
Avatar
Cyrille
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases
Firebird différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de mettre
un objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc
else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base à
laquelle je me suis connectée.

Merci de votre aide.

6 réponses

Avatar
Firetox
Bonjour,

cela vient du fait que la dll fb4wd a un seul contexte
(je me rapelle plus si cela fonctionne ) mais dans le constructeur on peut
specifier une autre connexion qui duplique la dll fb4wd pour qu'elle est un
autre nom et donc un autre contexte par contre a verifier si cela fonctionne
car je ne sais plus comment réagi fbClient.dll

mais dans votre code au moment de l'allocation il faut changer le parametre
du type de connexion
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

le parametre du constructeur sert a differencier les dll FB4WD.dll qui sont
créées et supprimées (dans le destructeur) pour gerer des instances
différentes de la dll


a tester tout de meme pour voir la reaction de FBCLIENT.DLL

Bon dev
@+

"Cyrille" a écrit dans le message de news:
492134d8$0$937$
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases Firebird
différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de mettre un
objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base à
laquelle je me suis connectée.

Merci de votre aide.


Avatar
Cyrille
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.

Je vais regarder ca de près.

Firetox a écrit :
Bonjour,

cela vient du fait que la dll fb4wd a un seul contexte
(je me rapelle plus si cela fonctionne ) mais dans le constructeur on peut
specifier une autre connexion qui duplique la dll fb4wd pour qu'elle est un
autre nom et donc un autre contexte par contre a verifier si cela fonctionne
car je ne sais plus comment réagi fbClient.dll

mais dans votre code au moment de l'allocation il faut changer le parametre
du type de connexion
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

le parametre du constructeur sert a differencier les dll FB4WD.dll qui sont
créées et supprimées (dans le destructeur) pour gerer des instances
différentes de la dll


a tester tout de meme pour voir la reaction de FBCLIENT.DLL

Bon dev
@+

"Cyrille" a écrit dans le message de news:
492134d8$0$937$
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases Firebird
différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de mettre un
objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base à
laquelle je me suis connectée.

Merci de votre aide.






Avatar
Firetox
Bonjour,

[cut]
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.


[/cut]

simplement par le nom de l'instance de l'objet
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

ensuite

pclConnexion:mySQLconnect(.....)
pclConnexion:MySQLExec( .....)

et pour l'autre
pclConnexion2:mySQLconnect(.....)
pclConnexion2:MySQLExec( .....)

Bon dev
@+


"Cyrille" a écrit dans le message de news:
492165c7$0$969$
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.

Je vais regarder ca de près.

Firetox a écrit :
Bonjour,

cela vient du fait que la dll fb4wd a un seul contexte
(je me rapelle plus si cela fonctionne ) mais dans le constructeur on
peut specifier une autre connexion qui duplique la dll fb4wd pour qu'elle
est un autre nom et donc un autre contexte par contre a verifier si cela
fonctionne car je ne sais plus comment réagi fbClient.dll

mais dans votre code au moment de l'allocation il faut changer le
parametre du type de connexion
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

le parametre du constructeur sert a differencier les dll FB4WD.dll qui
sont créées et supprimées (dans le destructeur) pour gerer des instances
différentes de la dll


a tester tout de meme pour voir la reaction de FBCLIENT.DLL

Bon dev
@+

"Cyrille" a écrit dans le message de
news: 492134d8$0$937$
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases
Firebird différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de mettre
un objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base à
laquelle je me suis connectée.

Merci de votre aide.







Avatar
Cyrille
J'ai un message d'erreur qui me dit :
fb4wd2.dll est introuvable ou problème d'initialisation de cette
librairie ...

Si je vais voir dans mon répertoire exe du projet j'ai pourtant bien la
dll fb4wd2.dll.

Firetox a écrit :
Bonjour,

[cut]
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.


[/cut]

simplement par le nom de l'instance de l'objet
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

ensuite

pclConnexion:mySQLconnect(.....)
pclConnexion:MySQLExec( .....)

et pour l'autre
pclConnexion2:mySQLconnect(.....)
pclConnexion2:MySQLExec( .....)

Bon dev
@+


"Cyrille" a écrit dans le message de news:
492165c7$0$969$
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.

Je vais regarder ca de près.

Firetox a écrit :
Bonjour,

cela vient du fait que la dll fb4wd a un seul contexte
(je me rapelle plus si cela fonctionne ) mais dans le constructeur on
peut specifier une autre connexion qui duplique la dll fb4wd pour qu'elle
est un autre nom et donc un autre contexte par contre a verifier si cela
fonctionne car je ne sais plus comment réagi fbClient.dll

mais dans votre code au moment de l'allocation il faut changer le
parametre du type de connexion
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

le parametre du constructeur sert a differencier les dll FB4WD.dll qui
sont créées et supprimées (dans le destructeur) pour gerer des instances
différentes de la dll


a tester tout de meme pour voir la reaction de FBCLIENT.DLL

Bon dev
@+

"Cyrille" a écrit dans le message de
news: 492134d8$0$937$
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases
Firebird différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de mettre
un objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base à
laquelle je me suis connectée.

Merci de votre aide.









Avatar
Firetox
cela veut dire que la dll fbClient.dll n'accepte pas d'être chargée
plusieurs fois ou d'avoir plusiseurs contexte
en C++ ce serait facile car on pourrait dupliquer le contexte mais dans le
cas de windev la dll represente le contexte et comme sous mySQL elle
n'accepte pas plusieurs instance (sous mySQL c'est la libMySQL.dll qui gere
les connexions sur plusieurs bases simultanement, sinon on auvait le meme
probleme avant la libmySQL en version 5)

donc il faut deconnecter et reconnecter pour avoir acces a plusieurs bases
en simultané

Bon dev
@+


"Cyrille" a écrit dans le message de news:
49216a5d$0$872$
J'ai un message d'erreur qui me dit :
fb4wd2.dll est introuvable ou problème d'initialisation de cette librairie
...

Si je vais voir dans mon répertoire exe du projet j'ai pourtant bien la
dll fb4wd2.dll.

Firetox a écrit :
Bonjour,

[cut]
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.


[/cut]

simplement par le nom de l'instance de l'objet
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

ensuite

pclConnexion:mySQLconnect(.....)
pclConnexion:MySQLExec( .....)

et pour l'autre
pclConnexion2:mySQLconnect(.....)
pclConnexion2:MySQLExec( .....)

Bon dev
@+


"Cyrille" a écrit dans le message de
news: 492165c7$0$969$
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.

Je vais regarder ca de près.

Firetox a écrit :
Bonjour,

cela vient du fait que la dll fb4wd a un seul contexte
(je me rapelle plus si cela fonctionne ) mais dans le constructeur on
peut specifier une autre connexion qui duplique la dll fb4wd pour
qu'elle est un autre nom et donc un autre contexte par contre a
verifier si cela fonctionne car je ne sais plus comment réagi
fbClient.dll

mais dans votre code au moment de l'allocation il faut changer le
parametre du type de connexion
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

le parametre du constructeur sert a differencier les dll FB4WD.dll qui
sont créées et supprimées (dans le destructeur) pour gerer des
instances différentes de la dll


a tester tout de meme pour voir la reaction de FBCLIENT.DLL

Bon dev
@+

"Cyrille" a écrit dans le message de
news: 492134d8$0$937$
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases
Firebird différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de
mettre un objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base
à laquelle je me suis connectée.

Merci de votre aide.











Avatar
Cyrille
Ok c'est un peu plus pénible que ce que je voulais faire mais je suis
bien obligé...

Firetox a écrit :
cela veut dire que la dll fbClient.dll n'accepte pas d'être chargée
plusieurs fois ou d'avoir plusiseurs contexte
en C++ ce serait facile car on pourrait dupliquer le contexte mais dans le
cas de windev la dll represente le contexte et comme sous mySQL elle
n'accepte pas plusieurs instance (sous mySQL c'est la libMySQL.dll qui gere
les connexions sur plusieurs bases simultanement, sinon on auvait le meme
probleme avant la libmySQL en version 5)

donc il faut deconnecter et reconnecter pour avoir acces a plusieurs bases
en simultané

Bon dev
@+


"Cyrille" a écrit dans le message de news:
49216a5d$0$872$
J'ai un message d'erreur qui me dit :
fb4wd2.dll est introuvable ou problème d'initialisation de cette librairie
...

Si je vais voir dans mon répertoire exe du projet j'ai pourtant bien la
dll fb4wd2.dll.

Firetox a écrit :
Bonjour,

[cut]
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.


[/cut]

simplement par le nom de l'instance de l'objet
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

ensuite

pclConnexion:mySQLconnect(.....)
pclConnexion:MySQLExec( .....)

et pour l'autre
pclConnexion2:mySQLconnect(.....)
pclConnexion2:MySQLExec( .....)

Bon dev
@+


"Cyrille" a écrit dans le message de
news: 492165c7$0$969$
Oui j'avais vu ce paramètre dans le constructeur mais je ne savais pas
comment rappeler tel ou tel connexion ensuite.

Je vais regarder ca de près.

Firetox a écrit :
Bonjour,

cela vient du fait que la dll fb4wd a un seul contexte
(je me rapelle plus si cela fonctionne ) mais dans le constructeur on
peut specifier une autre connexion qui duplique la dll fb4wd pour
qu'elle est un autre nom et donc un autre contexte par contre a
verifier si cela fonctionne car je ne sais plus comment réagi
fbClient.dll

mais dans votre code au moment de l'allocation il faut changer le
parametre du type de connexion
pclConnexion = allouer un c_FB4WD(1)
pclConnexion2 = allouer un c_FB4WD(2)

le parametre du constructeur sert a differencier les dll FB4WD.dll qui
sont créées et supprimées (dans le destructeur) pour gerer des
instances différentes de la dll


a tester tout de meme pour voir la reaction de FBCLIENT.DLL

Bon dev
@+

"Cyrille" a écrit dans le message de
news: 492134d8$0$937$
Bonjour,

Je voudrais créer une collection de connexions à plusieurs bases
Firebird différentes à l'aide d'un objet php4wd.
J'ai donc instancié un tableau dynamique de php4wd et essayer de
mettre un objet php4wd pour chaque connexion que j'utilise.

Mon problème vient que j'ai beaucoup de mal à réutiliser ce tableau
(l'objet a été libéré) et apparemment quand je veux accéder à un objet
quelconque de mon tableau il n'a enregistré que la dernière base.

Voila le code que j'ai pondu :
TABLE_BaseDeDonnees est une table sur laquelle j'écris les différentes
connexions que j'utilise.
tabConnexion est le tableau dynamique où je stocke mes objets php4wd.


i est un entier = 0
pclConnexion est un c_FB4WD dynamique

TableauSupprimeTout(tabConnexion)
pour toute ligne de TABLE_BaseDeDonnees
i ++
pclConnexion = allouer un c_FB4WD
TableauAjoute(tabConnexion, pclConnexion)
if tabConnexion[i]:mySQLConnecte(COL_Chemin, COL_Nom, COL_Utilisateur,
COL_MotDePasse) then
SAI_Resultat += "Base " + col_nom + " connectée" + rc else
Erreur(tabConnexion[i]:mySQLErreur + RC +
tabConnexion[i]:mySQLGetErrorMessage())
end
liberer pclConnexion
FIN


Pour réutiliser mon tableau je fais par exemple :
POUR TOUT ELEMENT pclConnexion DE tabConnexion
pclConnexion:MySQLListeTables(sListeTable)
Trace(sListeTable)
FIN
Ca me renvoie bien quelque chose mais uniquement sur la dernière base
à laquelle je me suis connectée.

Merci de votre aide.