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() ?