[Base] Déconnecter la session active à un serveur distant
Modérateur : Vilains modOOs
Règles du forum
Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
-
- Fraîchement OOthentifié
- Messages : 7
- Inscription : 06 janv. 2015 10:20
[Base] Déconnecter la session active à un serveur distant
Bonjour,
Je travaille sur une application sur LibO Base attaquant une base de données PostGreSQL hébergé sur un serveur. Je souhaitais masquer l'interface LibO sous les formulaires de l'application afin que les utilisateurs ne puissent pas accéder aux dessous de la base en fermant ceux-ci.
Grâce au forum, j'ai découvert comment faire et comment gérer la fermeture de LibO après la fermeture du formulaire faisant office de Menu de l'application.
Cependant, je me retrouve avec un nouveau problème. En effet, LibO se ferme correctement, mais à la ré-ouverture de la base de données, l'authentification à la base PostGreSQL ne m'est plus demandée.
Donc la connexion à la base restant active malgré la fermeture de LibO, à l'ouverture suivante et si l'utilisateur n'active pas les macros, il a à nouveau accès aux dessous de la base, et je reviens à mon problème de départ.
https://forum.openoffice.org/fr/forum/v ... =9&t=45987
Est-ce que l'un d'entre-vous aurait déjà eu à gérer ce type problème ?
Je travaille sur une application sur LibO Base attaquant une base de données PostGreSQL hébergé sur un serveur. Je souhaitais masquer l'interface LibO sous les formulaires de l'application afin que les utilisateurs ne puissent pas accéder aux dessous de la base en fermant ceux-ci.
Grâce au forum, j'ai découvert comment faire et comment gérer la fermeture de LibO après la fermeture du formulaire faisant office de Menu de l'application.
Cependant, je me retrouve avec un nouveau problème. En effet, LibO se ferme correctement, mais à la ré-ouverture de la base de données, l'authentification à la base PostGreSQL ne m'est plus demandée.
Donc la connexion à la base restant active malgré la fermeture de LibO, à l'ouverture suivante et si l'utilisateur n'active pas les macros, il a à nouveau accès aux dessous de la base, et je reviens à mon problème de départ.
https://forum.openoffice.org/fr/forum/v ... =9&t=45987
Est-ce que l'un d'entre-vous aurait déjà eu à gérer ce type problème ?
Dernière modification par nc1862 le 13 janv. 2015 15:06, modifié 2 fois.
Microsoft Windows sept Professional 64 bits
Libre Office 4.1.6.2
Libre Office 4.1.6.2
-
- GourOOu
- Messages : 5622
- Inscription : 25 nov. 2011 18:07
- Localisation : Guyane
Re: [Base] Déconnecter la session active à un serveur distan
Bonjour
Comment est déclarée ta connexion ?
as tu essayé ?A+
Comment est déclarée ta connexion ?
as tu essayé ?
Code : Tout sélectionner
Sub RA_Fermer_Base(oEv as Object)
Dim oDatabase as Object,oMenu as Object
oDatabase = oEv.source
oMenu = oDatabase.getFormDocuments.getByName("accueil")
If isNull(oMenu.getComponent() ) Then
REM maConnexion.close
REM maConnexion.dispose
ThisDatabaseDocument.close(True)
End If
End Sub
Libre Office Version: 6.1.6 et Apache OpenOffice 4.1.6 Sur Xubuntu 18.04 AMD64
-
- Fraîchement OOthentifié
- Messages : 7
- Inscription : 06 janv. 2015 10:20
Re: [Base] Déconnecter la session active à un serveur distan
Bonjour Piaf,
En fait, je ne sais pas comment déclarer la connexion à ma base dans une macro.
Dans LibO, elle est déclarée de cette manière :
Edition/Base de données/Type de connexion/Type de base de données : PostgreSQL
Edition/Base de données/Propriétés/URL de la source de données : host=rlr-app2 dbname=rce
Comment puis-je couper cette connexion (client/serveur) avant de fermer mon document Base ?
En fait, je ne sais pas comment déclarer la connexion à ma base dans une macro.
Dans LibO, elle est déclarée de cette manière :
Edition/Base de données/Type de connexion/Type de base de données : PostgreSQL
Edition/Base de données/Propriétés/URL de la source de données : host=rlr-app2 dbname=rce
Comment puis-je couper cette connexion (client/serveur) avant de fermer mon document Base ?
Microsoft Windows sept Professional 64 bits
Libre Office 4.1.6.2
Libre Office 4.1.6.2
-
- IdOOle de la suite
- Messages : 26009
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Base] Déconnecter la session active à un serveur distan
Salut,
A modifier pour [Base] Connexion et authentification PostGreSQL
Suivant le pilote déclaré (JDBC, ODBC), il faut partir d'un contexte et déclarer une source.
Le passage de l'identifiant et du mot de passe se fait par la propriété GetConnection.
Lire la documentation concernée : http://www.openoffice.org/api/docs/comm ... ource.html
Donc le titre ne reflète pas le problème exprimé.nc1862 a écrit :En fait, je ne sais pas comment déclarer la connexion à ma base dans une macro.
A modifier pour [Base] Connexion et authentification PostGreSQL
Suivant le pilote déclaré (JDBC, ODBC), il faut partir d'un contexte et déclarer une source.
Le passage de l'identifiant et du mot de passe se fait par la propriété GetConnection.
Lire la documentation concernée : http://www.openoffice.org/api/docs/comm ... ource.html
-
- Fraîchement OOthentifié
- Messages : 7
- Inscription : 06 janv. 2015 10:20
Re: [Base] Déconnecter la session active à un serveur distan
Bonjour,
Je reprends l'explication de mon problème en le reformulant.
Mon application utilise l'interface Base de Libre Office avec une base (PostGres SQL) hébergée sur un serveur distant. La base est déclarée dans LibO de la façon suivante :
Edition/Base de données/Type de connexion/Type de base de données : PostgreSQL
Edition/Base de données/Propriétés/URL de la source de données : host=rlr-app2 dbname=rce
L'application s'ouvre après entrée d'un mot de passe, sur un menu général lancé par la macro suivante :
Jusque là tout va bien. Sur ce menu, un bouton Fermer permet de fermer l'application après emploi. La macro liée à ce bouton est la suivante :
Lorsque l'on appuie sur le bouton, l'application se ferme ainsi que Libre Office.
Mon problème se situe ensuite. Si l'on décide de relancer l'application, le mot de passe n'est plus demandé, ce qui laisse à supposer que la connexion à la base n'a pas été correctement fermé. Par ailleurs, on peut constater dans le gestionnaire des tâches (Windows 7 Pro 64 bits) qu'un processus soffice est encore actif après la fermeture de la base de la manière indiquée ci-dessus.
Pouvez-vous me dire ce qui cloche dans ma façon de procéder ?
Merci par avance.
Je reprends l'explication de mon problème en le reformulant.
Mon application utilise l'interface Base de Libre Office avec une base (PostGres SQL) hébergée sur un serveur distant. La base est déclarée dans LibO de la façon suivante :
Edition/Base de données/Type de connexion/Type de base de données : PostgreSQL
Edition/Base de données/Propriétés/URL de la source de données : host=rlr-app2 dbname=rce
L'application s'ouvre après entrée d'un mot de passe, sur un menu général lancé par la macro suivante :
Code : Tout sélectionner
Sub DemarragePleinEcranAccueil
dim document as object
dim dispatcher as object
dim LibOForm as object
dim args1(0) as new com.sun.star.beans.PropertyValue
ThisDatabaseDocument.CurrentController.connect("","")
LibOForm =ThisDatabaseDocument.FormDocuments.getByName("accueil").open
document = LibOForm.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "FullScreen"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:FullScreen", "", 0, args1())
End Sub
Code : Tout sélectionner
Sub QuitterMaBase
Dim MaBase As Object
MaBase = ThisDataBaseDocument
If MaBase.ismodified Then
MaBase.store
End If
MaBase.close(True)
MaBase.dispose
End sub
Mon problème se situe ensuite. Si l'on décide de relancer l'application, le mot de passe n'est plus demandé, ce qui laisse à supposer que la connexion à la base n'a pas été correctement fermé. Par ailleurs, on peut constater dans le gestionnaire des tâches (Windows 7 Pro 64 bits) qu'un processus soffice est encore actif après la fermeture de la base de la manière indiquée ci-dessus.
Pouvez-vous me dire ce qui cloche dans ma façon de procéder ?
Merci par avance.
Microsoft Windows sept Professional 64 bits
Libre Office 4.1.6.2
Libre Office 4.1.6.2
-
- IdOOle de la suite
- Messages : 26009
- Inscription : 03 mars 2006 07:45
- Localisation : 127.0.0.1
Re: [Base] Déconnecter la session active à un serveur distan
Ce qui cloche ? Mise à part que tu ne tiens pas compte des réponses que l'on te donne ?nc1862 a écrit :Pouvez-vous me dire ce qui cloche dans ma façon de procéder ?
Dans tes scripts DemarragePleinEcranAccueil et QuitterMaBase, où se trouve la procédure de connexion et de déconnexion ?
Relis ce que te donne Piaf et moi-même.
Eventuellement, regarde notre grand classique du suprême de code qui montre ce procédé.
-
- Fraîchement OOthentifié
- Messages : 7
- Inscription : 06 janv. 2015 10:20
Re: [Base] Déconnecter la session active à un serveur distan
Bonjour,
J'ai essayé de m'inspirer du message de Piaf. Dans ma procédure d'ouverture, la connexion est réalisé avec la ligne ' ThisDatabaseDocument.CurrentController.connect("","") '
A la fermeture, j'utilise .close et .dispose pour fermer cette connexion. En utilisant l'outil XRay, on s'aperçoit que la connexion disparaît après avoir utilisé .close (ça semble logique). Cependant en ré-ouvrant mon application, le mot de passe à la base PostGres ne m'est plus demandé.
Est-ce que je dois déclarer une source et un contexte comme le suggère Dude, alors que l'application fonctionne correctement (hormis ce problème de fermeture) ?
J'ai essayé de m'inspirer du message de Piaf. Dans ma procédure d'ouverture, la connexion est réalisé avec la ligne ' ThisDatabaseDocument.CurrentController.connect("","") '
Code : Tout sélectionner
Sub DemarragePleinEcranAccueil
dim MaConnexion as object
dim document as object
dim dispatcher as object
dim LibOForm as object
dim args1(0) as new com.sun.star.beans.PropertyValue
ThisDatabaseDocument.CurrentController.connect("","")
MaConnexion = ThisDatabasedocument.CurrentController.ActiveConnection
LibOForm =ThisDatabaseDocument.FormDocuments.getByName("accueil").open
document = LibOForm.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
args1(0).Name = "FullScreen"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:FullScreen", "", 0, args1())
End Sub
Code : Tout sélectionner
Sub QuitterMaBase
MaBase = ThisDataBaseDocument
MaConnexion = MaBase.CurrentController.ActiveConnection
If MaBase.ismodified Then
MaBase.store
End If
xray(MaConnexion)
MaConnexion.close
xray(MaConnexion)
MaConnexion.dispose
xray(MaConnexion)
MaBase.close(True)
MaBase.dispose
End sub
Microsoft Windows sept Professional 64 bits
Libre Office 4.1.6.2
Libre Office 4.1.6.2