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]

Répondre à