Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour Cher tous,
J'ai une préoccupation, J'ai déjà écris une application PB en Client-Serveur, le serveur de base de données en SQL Server tout est déjà déployé et fonctionne correctement, mais par la suite nous avons pris la décision de rebooter le serveur à une heure précise. Si on reboot le serveur, les clients (PB) doivent être d'abord fermés parce qu'ils perdent la connexion au serveur de données même si il est déjà fonctionnel.
Je pensait avoir un événement timer qui chaque 5 minutes par exemple vérifie la connexion au serveur, si il n'y a pas de connexion il reconnecte le client au serveur de donnée.
Comment peut ton vérifier la connexion au serveur ?
D'avance je vous dis merci
Dernière modification par b2oba (14-04-2008 06:05:36)
Hors ligne
un truc du genre :
Connect Using SQLCA ; If SQLCA.SQLCode <> 0 Then MessageBox( 'Connexion à la base de données impossible', & SQLCA.SQLErrText ) End If
Hors ligne
ou encore plus simple :
SELECT 1 INTO :li_ok FROM DUAL Using SQLCA ; If SQLCA.SQLCode <> 0 Then MessageBox( 'Connexion à la base de données impossible', & SQLCA.SQLErrText ) End If
Hors ligne
il m'affiche cette boite de dialogue à tout moment même si je suis connecté au serveur même si je ne suis pas connecté.
Hors ligne
c'est bien SQLCA ta transaction ?
quelle est l'erreur (SQLCode, SQLErrText) ?
Hors ligne
Que représente la variable li_ok?
Hors ligne
Oui c'est SQLCA qui à la transaction, il n'y a pas d'erreur, mais il me dis que Transaction already connected, même si je suis déconnecté ou pas du serveur de données.
Dernière modification par b2oba (10-04-2008 09:14:15)
Hors ligne
b2oba a écrit:
Que représente la variable li_ok?
rien de spécial, juste une petite variable "bindée" qui récupère 1 si tout va bien
Hors ligne
b2oba a écrit:
Oui c'est SQLCA qui à la transaction, il n'y a pas d'erreur, mais il me dis que Transaction already connected, même si je ne suis déconnecté du serveur de données.
avec le code suivant ? (d'ailleurs pas de DUAL en SQL Server, oops)
Integer li_ok SELECT 1 INTO :li_ok Using SQLCA ; If SQLCA.SQLCode <> 0 Then MessageBox( String( SQLCA.SQLCode ), SQLCA.SQLErrText ) End If
Hors ligne
Il me donne une erreur de syntaxe à la 2ème ligne
Integer li_ok SELECT 1 INTO :li_ok Using SQLCA ; If SQLCA.SQLCode <> 0 Then MessageBox( 'Connexion à la base de données impossible', SQLCA.SQLErrText ) End If
Hors ligne
possible, je n'ai pas utilisé SQLServer avec PB, il n'y a pas de DUAL, en principe SELECT 1 fonctionne (?), mais peut-être que PB n'accepte pas cette syntaxe... (?)
bah mets une requête bidon sur une table existante :
SELECT MIN(1) INTO :li_ok FROM ta_table Using SQLCA ;
Hors ligne
b2oba a écrit:
Oui c'est SQLCA qui à la transaction, il n'y a pas d'erreur, mais il me dis que Transaction already connected, même si je suis déconnecté ou pas du serveur de données.
Si c'est le serveur qui t'as déconnecté, tu dois effectuer un DISCONNECT avant d'essayer de te reconnecter
Hors ligne
J'arrive à intercepter la perte de connexion, mais quand je vais me reconnecter il me dis que la transaction est déjà connecté
Hors ligne
comme le suggère Shahin, ça donne quoi quand tu essayes de déconnecter :
Disconnect Using SQLCA ; If SQLCA.SQLCode <> 0 Then
Hors ligne