Problème source de données et thread

Le
free
Bonjour

J'ai un problème avec des threads qui utilisent des sources de données

HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)


Tantque j'avais des threads différents, je m'en sortait en créant un objet
source de donnees par thread :
source_thread1 est une source de donnes
source_thread2 est une source de donnes


Maintenant , j'ai un nombre variable de thread identique
(même code)
et du coup la technique ci-dessus ne marche pas

si quelqu'un à une astuce , je suis preneur
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daireaux Jean-Baptiste
Le #23614111
Le 28/07/2011 15:47, free a écrit :
Bonjour

J'ai un problème avec des threads qui utilisent des sources de données

HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)
...

Tantque j'avais des threads différents, je m'en sortait en créant un objet
source de donnees par thread :
source_thread1 est une source de donnes
source_thread2 est une source de donnes
...

Maintenant , j'ai un nombre variable de thread identique
(même code)
et du coup la technique ci-dessus ne marche pas

si quelqu'un à une astuce , je suis preneur





Bonjour,

Je crois qu'il faut changer le nom de la source avec la propriété
'..nom' pour une utilisation simultané de plusieurs source de données
nommé avec la même variable.

exemple :
//thread 1
source_donnees..nom="D1"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

//thread 2
source_donnees..nom="D2"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

J.B.D.
free
Le #23614541
Merci pour la réponse, mais ce ne fonctionne pas
..nom est en lecture seule
J'ai regardé l'aide et essayé les autres propriétés nomphysique et nomdécrit
mais c'est de la lecture seule


"Daireaux Jean-Baptiste" message news:4e329249$0$30795$
Le 28/07/2011 15:47, free a écrit :
Bonjour

J'ai un problème avec des threads qui utilisent des sources de données

HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)
...

Tantque j'avais des threads différents, je m'en sortait en créant un
objet
source de donnees par thread :
source_thread1 est une source de donnes
source_thread2 est une source de donnes
...

Maintenant , j'ai un nombre variable de thread identique
(même code)
et du coup la technique ci-dessus ne marche pas

si quelqu'un à une astuce , je suis preneur





Bonjour,

Je crois qu'il faut changer le nom de la source avec la propriété '..nom'
pour une utilisation simultané de plusieurs source de données nommé avec
la même variable.

exemple :
//thread 1
source_donnees..nom="D1"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

//thread 2
source_donnees..nom="D2"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

J.B.D.
patrice
Le #23616651
Bon, après plusieurs essais, pb résolu (avec limitation) de la facon
suivante :

sdSource1 est une source de données
sdSource2 est une source de données
...
sdSource<vmax> est une source de données

faut les déclarer absolument en globales projet, sinon la suite ne
marche pas :

s="sdSource"+ <numero unique / thread>

hlitpremier(s)
....


acces au variables : { s+".MONCHAMP",indvariable}

ca impose d'avoir un nombre max de thread à controler pour allouer les
numéros uniques et à récupérer les numéros quand plus utilisé




Le 28/07/2011 15:47, free a écrit :
Bonjour

J'ai un problème avec des threads qui utilisent des sources de données

HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)
...

Tantque j'avais des threads différents, je m'en sortait en créant un objet
source de donnees par thread :
source_thread1 est une source de donnes
source_thread2 est une source de donnes
...

Maintenant , j'ai un nombre variable de thread identique
(même code)
et du coup la technique ci-dessus ne marche pas

si quelqu'un à une astuce , je suis preneur


Daireaux Jean-Baptiste
Le #23673081
Le 29/07/2011 15:29, free a écrit :
Merci pour la réponse, mais ce ne fonctionne pas
..nom est en lecture seule
J'ai regardé l'aide et essayé les autres propriétés nomphysique et nomdécrit
mais c'est de la lecture seule


"Daireaux Jean-Baptiste" message news:4e329249$0$30795$
Le 28/07/2011 15:47, free a écrit :
Bonjour

J'ai un problème avec des threads qui utilisent des sources de données

HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)
...

Tantque j'avais des threads différents, je m'en sortait en créant un
objet
source de donnees par thread :
source_thread1 est une source de donnes
source_thread2 est une source de donnes
...

Maintenant , j'ai un nombre variable de thread identique
(même code)
et du coup la technique ci-dessus ne marche pas

si quelqu'un à une astuce , je suis preneur





Bonjour,

Je crois qu'il faut changer le nom de la source avec la propriété '..nom'
pour une utilisation simultané de plusieurs source de données nommé avec
la même variable.

exemple :
//thread 1
source_donnees..nom="D1"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

//thread 2
source_donnees..nom="D2"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

J.B.D.







Oui en effet, j'ai répondu un peu vite.
essai ceci :
//thread 1
source_donnees="D1"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

//thread 2
source_donnees="D2"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

extrait de la documentation :

"Une source de données possède un nom interne qui est égal par défaut au
nom de la variable. Pour un même contexte de fichier, il ne peut exister
qu'une seule source de données avec le même nom. Si vous utilisez des
variables de type source de données dans une boucle, un code récursif ou
une classe, il est donc nécessaire de modifier le nom interne de la
source de données pour assurer son unicité."

J.B.D.
j-louis Hors ligne
Le #23912911
Daireaux Jean-Baptiste a écrit le 22/08/2011 à 12h41 :
Le 29/07/2011 15:29, free a écrit :
Merci pour la réponse, mais ce ne fonctionne pas
..nom est en lecture seule
J'ai regardé l'aide et essayé les autres
propriétés nomphysique et nomdécrit
mais c'est de la lecture seule


"Daireaux
Jean-Baptiste" wrote in
message news:4e329249$0$30795$
Le 28/07/2011 15:47, free a écrit :
Bonjour

J'ai un problème avec des threads qui utilisent des sources de
données

HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)
...

Tantque j'avais des threads différents, je m'en sortait en
créant un
objet
source de donnees par thread :
source_thread1 est une source de donnes
source_thread2 est une source de donnes
...

Maintenant , j'ai un nombre variable de thread identique
(même code)
et du coup la technique ci-dessus ne marche pas

si quelqu'un à une astuce , je suis preneur






Bonjour,

Je crois qu'il faut changer le nom de la source avec la
propriété '..nom'
pour une utilisation simultané de plusieurs source de données
nommé avec
la même variable.

exemple :
//thread 1
source_donnees..nom="D1"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

//thread 2
source_donnees..nom="D2"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

J.B.D.









Oui en effet, j'ai répondu un peu vite.
essai ceci :
//thread 1
source_donnees="D1"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

//thread 2
source_donnees="D2"
HExecuteRequeteSql(source_donnees, reqSql)
HlitPremier(source_donnees)

extrait de la documentation :

"Une source de données possède un nom interne qui est
égal par défaut au
nom de la variable. Pour un même contexte de fichier, il ne peut exister
qu'une seule source de données avec le même nom. Si vous utilisez
des
variables de type source de données dans une boucle, un code
récursif ou
une classe, il est donc nécessaire de modifier le nom interne de la
source de données pour assurer son unicité."

J.B.D.


Bonjour,

Je fais appel à une procédure stockée, qui fait un traitement long (entre 1mn et 10mn).
Afin de ne pas bloquer l'utilisateur, je voulais utiliser un thread pour exécuter ce traitement, avec sa propre connexion à la base de données.
Lorsque j'exécute le code, la connexion du thread bloque la connexion du programme principal.

J'utilise des connexions ODBC :
gcnx..InfosEtendues="WD Command Timeout=0;"
gcnx..OptionsCurseur = hCurseurClient+hCurseurForwardOnly

Avez-vous une idée
Jérôme
Publicité
Poster une réponse
Anonyme