Le 07/09/06, Louis Vidonne <[EMAIL PROTECTED]> a écrit :

Bonjour,

J'ai écrit un ensemble de macros pour travailler avec une base de
données. "Presque" tout marche bien (je peux copier des données d'une
table dans une boîte de dialogue, mettre les résultats des interventions
de l'utilisateur dans des tables, exécuter des requêtes pré-enregistrées
ou construites par programme, utiliser des formulaires, etc..
Sauf que je ne peux pas fermer mes boîtes de dialogue !
Lorsque j'exécute la méthode dispose, Base plante et Windows avec (pas
toujours pour Windows).

Après moult essais, j'ai voulu avoir la situation la plus dépouillée
possible. J'ai créé une nouvelle source de données, avec un module de
macros "Module1" et une boîte de dialogue "Dialog1" comportant un seul
bouton "Fin" (de type Standard) au déclenchement duquel j'ai assigné la
procédure "BoutonFin".
Il ne me reste que l'essentiel en ce qui concerne mon problème : une
procédure "Ouvrir" qui ouvre la boîte de dialogue et la procédure
"BoutonFin" censée la fermer. Les autres procédures (Dialogue,
ConnecterSource et DeconnecterSource) sont recopiées sans vergogne (mais
avec reconnaissance) du livre de Bernard Marcelly et Laurent Godard.

Difficile de faire plus basic. Pourtant ça plante toujours quand je
presse le bouton. J'obtiens le message :
"Crashrep a provoqué une erreur dans KERNEL32.DLL" (sur la ligne indiquée)

Je ne comprends pas où je me trompe ! Pourtant l'erreur doit être grosse
comme ça.
Quelqu'un pourrait-il m'aider ?

Voici l'ensemble de mon code (sauf ce que j'ai recopié du livre) :

REM *******************************************************
REM  *****  BASIC  *****

Option Explicit

Public oDlg As Object, maConnexion As Object

Sub Ouvrir
   Dim sNomBiblio As String, sNomDialog As String
   Dim iExitOK As Integer
   ConnecterSource
   sNomBiblio = "Standard"
   sNomDialog = "Dialog1"
   oDlg = Dialogue(sNomBiblio, sNomDialog)
   oDlg.Execute
End Sub

Sub BoutonFin
   ' Xray oDlg   ' => je vérifie que l'objet oDlg expose bien la
méthode Dispose
   oDlg.Dispose   ' PLANTAGE
   DeconnecterSource
End Sub



REM***************************************
REM
REM Adapté du livre Marcelly et Godard
Rem Code16-01.sxw  bibli : DialDial Module1
REM
REM***************************************


Function Dialogue(nomBibli As String, nomDialogue As String) _
                                                 As Object
Dim conteneur As Object, bibli as Object
Dim boiteDialogue as Object

if DialogLibraries.hasByName(nomBibli) then
conteneur = DialogLibraries
else
if GlobalScope.DialogLibraries.hasByName(nomBibli) then
   conteneur = GlobalScope.DialogLibraries
else
   Exit Function ' bibliothèque pas trouvée
end if
end if
conteneur.LoadLibrary(nomBibli)
bibli = conteneur.GetByName(nomBibli)
if not bibli.hasByName(nomDialogue) then Exit Function
boiteDialogue = bibli.GetByName(nomDialogue)
Dialogue = CreateUnoDialog(boiteDialogue)
End Function




REM***************************************
REM
REM Adapté du livre Marcelly et Godard
Rem Code17-02.sxw  bibli : Standard Module1
REM
REM***************************************

Sub ConnecterSource()
Dim NomSource As String, login As String, password As String
Dim maSource As Object, monDbContext As Object
'Création du contexte
NomSource = "EssaiBase"
monDbContext = CreateUnoService( _
                 "com.sun.star.sdb.DatabaseContext")
maSource=monDbContext.getByName(NomSource)

'Les paramètres de connexion
login = ""
password = ""
maConnexion = maSource.getConnection(login, password)
if IsNull(maConnexion) then
MsgBox("Connexion impossible", 16)
Stop
end if
End Sub


Sub DeconnecterSource()
maConnexion.close
maConnexion.dispose
End Sub

REM *******************************************************

J'ai vérifié mon fichier OOo avec la somme MD5, et je l'ai ré-installé
après désinstallation, sans changement.
Je travaille avec Ooo 2.0.3 sous Windows Me


D'avance merci pour votre aide, encore une fois.

Cordialement,
Louis

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


et si tu deconnecte la source avant le dispose() ?

Répondre à