[opgelost] Hoe macro bibliotheek BaseTools 'activeren'.

[opgelost] Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » do sep 02, 2010 3:37 pm

De macro's uit deze tool gebruiken lukt mij niet.
Via menu Extra -> Extensiebeheer heb ik BaseTools-0.0.3.oxt toegevoegd.
In mijn database kan ik dus in het basic venster de macro's van deze tool bekijken.
Maar deze macro's aanroepen vanuit de basic code van de database lukt niet.

RunCMD.OpenFormDocument("INGAVE") slaagt er niet in het bestaande formulier INGAVE te openen,
ook OpenFormDocument("INGAVE") slaagt daar niet in.

Foutmelding: "Basic-runtime-fout. Onjuiste waarde voor eigenschap."
Poging met 'stap voor stap' uitvoering geeft foutmelding "Error. Unable to open form document. Active connection not found."

Na dagen googelen, forumslezen, rooie ogen en vele probeersels annex foutmeldingen sta ik nog even ver maar ben nu het noorden helemaal kwijt.
Wie helpt mij (geboren in de eerste helft van vorige eeuw) met duidelijke code op weg?
Nu al dank!
Laatst bijgewerkt door floris v op ma okt 04, 2010 8:54 am, in totaal 2 keer bewerkt.
Reden: opgelost van gemaakt
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » do sep 02, 2010 7:23 pm

Hallo

Dat kan alleen maar bij een formulier wat deel uit maakt van een databasedocument. Het kan ook alleen maar als het databasedocument reeds geopend is. Van dit laatste ben ik iets minder zeker.

Vanwege gebrek aan details kan ik verder niet zoveel zeggen.

Romke
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » do sep 02, 2010 9:50 pm

Hallo

Ik heb nog even wat gekeken en mogelijk kan dit je ook nog helpen

Romke

Code: Selecteer alles   UitklappenInklappen
sub OpenFormForConnection
' You can use this routine for opening a form before there is a connection
' Most line in this must be used only one time
' This library must be loaded
if not globalscope.BasicLibraries.islibraryloaded("BaseTools") then
   ' Load now the library
   globalscope.BasicLibraries.loadlibrary("BaseTools")
end if
Basetools.utils.BaseLoader
runcmd.openformdocument("Form2")
end sub
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » vr sep 03, 2010 11:38 am

Romke,
Heel erg bedankt voor uw snelle reacties.

Met uw voorgestelde code krijg ik nog steeds de "Basic-runtime-fout. Onjuiste waarde voor eigenschap".

Als ik echter OpenFormDocument("INGAVE") gebruik ipv RunCmd.OpenFormDo.... geraak ik wel een eind verder! De form komt nog steeds niet op het scherm maar er komt ook geen foutmelding.

Met stap voor stap merk ik echter dat (denk ik toch) 3 aangeroepen functies (uit de tools) ontijdig afgebroken worden. Hieronder deze 3 functies met de codelijn die het voortijdig 'exiten' veroorzaakt.
Code: Selecteer alles   UitklappenInklappen
Function getDatabaseFromActiveFrame() As Object
   If Controller.ImplementationName<>"org.openoffice.comp.dbu.OApplicationController" Then Exit Function

Function getFormController(FormModel As Object) As Object
   If FormModel.ImplementationName<>"com.sun.star.comp.forms.ODatabaseForm" Then Exit Function 'not a data form model, get out


Function getConnectionFromThisComponent() As Object
   If Doc.ImplementationName<>"SwXTextDocument" Then REM not a writer form
      Exit Function
   End If


Ik vermoed dat het probleem met deze isues te maken heeft, maar mijn kennis is te beperkt om een oplossing te bedenken. Dus verdere hulp is zeker welkom.

Straks maak ik een klein principieel databaseje aan om dit probleem beter te illustreren. U zegt maar hoe ik dat eventueel kan doorgeven.

Willy.
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » vr sep 03, 2010 1:17 pm

Hallo

Mijns inziens zoek je het probleem op de verkeerde plaats.
Maak eens duidelijk:
a) welk soort database hebt je? Zijn de formulieren in je database?
b) Waar is je macro code? Het moet in ieder geval vanuit het databasedocument opgestart worden.
c) Op welke manier init je de BaseTools?


De functies zijn mijns inziens goed maar ik heb ze niet speciaal nagekeken. Ik heb het idee dat je niet begrijpt hoe je het doen moet en ik heb geen informatie wat je doet. Voorzover ik weet zijn de BaseTools alleen geschikt voor DatabaseDocuments waarin de formulieren zijn opgeslagen. Voor queries kan het misschien iets anders zijn

Romke
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » vr sep 03, 2010 5:46 pm

Dag Romke,
Hierbij de gevraagde gegevens.

database "vb2forum"
Tabellen: "LEDEN" velden(ID integer, NAAM string, OK boolean)
Query's : nihil
Form's: StartForm, bezit 2 knoppen
sturen resp "Sub MaakBoodeschap","Sub Ingave" aan
INGAVE = tabelformulier voor input voor "LEDEN"
Rapporten:nihil

Code: Selecteer alles   UitklappenInklappen
REM  *****  BASIC  *****
'
' De database "vb2forum" dient enkel als demonstratie van het probleem '
'                                   
Option Compare Database
Option Explicit
dim databestand as String

Sub Main

End Sub

Sub MaakBoodeschap() REM om aan te tonen dat database "vb2forum" incl basic werkt
   Dim DatabaseContext As Object
   Dim DataSource As Object
   Dim Connection As Object
   Dim InteractionHandler as Object
   Dim Statement As Object
   Dim ResultSet As Object
   databestand = "vb2forum"  ''''dit bestand''''
   REM  verbinding met "vb2forum" maken
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   DataSource = DatabaseContext.getByName (databestand)
   InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
   Connection = DataSource.ConnectWithCompletion(InteractionHandler)
   Statement = Connection.createStatement()
   Statement.SetPropertyValue("ResultSetType", 1005)
   ' 1003 = FORWARD, 1004 = SCROLL_INSENSITIVE, 1005 = SCROLL_SENSITIVE )
   Statement.SetPropertyValue("ResultSetConcurrency", 1008) 
   ' 1008 = UPDATABLE, 1007 = not updatable)
   REM records met OK=true selecteren
   ResultSet = Statement.executeQuery("select NAAM from LEDEN where OK=-1")
   REM neem de laatste record uit deze selectie
   ResultSet.last()
   REM formuleer boodschap
   MsgBox "Dag " & ResultSet.getString(1) & ", alles OK. Proficiat! "
   REM verbinding sluiten ==> eventuele wijzigingen consolideren
   Statement.close()
   Connection.commit()
   Connection.close()   

End Sub

Sub GeefIn() REM moet formulier INGAVE openen
   ' You can use this routine for opening a form before there is a connection
   ' Most line in this must be used only one time
   ' This library must be loaded
   if not globalscope.BasicLibraries.islibraryloaded("BaseTools") then
      ' Load now the library
         globalscope.BasicLibraries.loadlibrary("BaseTools")
   end if
   Basetools.utils.BaseLoader
   'RunCMD.OpenFormDocument("INGAVE") REM geeft Basic runtime fout   
   OpenFormDocument("INGAVE")
End Sub


de database is geregistreerd, de macro is "embedded"
Ik open BASE, en kies bestaande database om ze te openen
Dan links op het Base-venster klikken op Formulieren
Dan dubbelklikken op StartForm
Klikken op de knop1: boodschap wordt afgeprint
maw het zaakje werkt
Klikken op knop2 (om form INGAVE op het scherm te krijgen:
met RunCmd.OpenFormDocument in de sub:
foutmelding Basic runtime fout
onjuiste waarde voor eigenschap
met OpenFormDocument in de sub:
Writer opent een leeg blad "Geen titel"
ipv de base form INGAVE

De BaseTools zijn dus blijkbaar goed geladen maar het gewenste formulier is nog niet "bereikbaar".

Nog bedankt voor uw snelle reacties,
en een aangenaam weekend.
Willy
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » vr sep 03, 2010 7:52 pm

Hallo

Mijns inziens is er niets mis met de sub MaakBoodeschap() dat blijkt ook uit het feit dat je een boodschap krijg. Het feit dat deze sub de verbinding sluit zou wel eens de oorzaak van de problemen zijn. Ik zou beginnen met de laatste drie opdrachten te veranderen to een commentaar. Doe dit stuk voor stuk te beginnen met de laatste. Als het werkt is het voldoende.

Ik zelf zou het herschrijven tot iets anders en hierbij gebruik maken van de basetools.

Romke

Code: Selecteer alles   UitklappenInklappen
sub MaakBoodeschap()
' This macro must be stored in the database document.
' I try to understand what is the best method of using the BaseTools of Benitez.
' This sub is called when a formdocument is activate.

' First make sure the library is loaded
if not globalscope.BasicLibraries.islibraryloaded("BaseTools") then
   ' Load now the library
   globalscope.BasicLibraries.loadlibrary("BaseTools")
end if
'   Basetools.utils.BaseLoader ' Het kan zijn dat deze ook nog nodig is
' Init variables with calling a sub in the library
Basetools.DataBases.InitFromDocument(thisdatabasedocument)
' Benitez has made global variables who can be used through whole OOo.
' I believe the purpose of this variables is that you can call subs in the library without giving
' Parameters. There you have  called the init sub in that document.
'ActiveDatabaseDocument
'ActiveConnection
'ActiveDataSource

dim ResultSet
ResultSet = BaseTools.RunCmd.RunSQL("select NAAM from LEDEN where OK=-1")
REM neem de laatste record uit deze selectie
ResultSet.last()
REM formuleer boodschap
MsgBox "Dag " & ResultSet.getString(1) & ", alles OK. Proficiat! "
REM verbinding sluiten ==> eventuele wijzigingen consolideren
'Statement.close()
'Connection.commit()
'Connection.close()   
end sub

sub GeefIn()
' This macro must be stored in the database document.
' I try to understand what is the best method of using the BaseTools of Benitez.
' This sub is called when a formdocument is activate.

' First make sure the library is loaded
if not globalscope.BasicLibraries.islibraryloaded("BaseTools") then
   ' Load now the library
   globalscope.BasicLibraries.loadlibrary("BaseTools")
end if
' Init variables with calling a sub in the library
Basetools.DataBases.InitFromDocument(thisdatabasedocument)
BaseTools.runcmd.OpenFormDocument("Form2")
end sub
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » za sep 04, 2010 10:14 am

Hallo,
Heb het voorgestelde stapsgewijs uitgeprobeerd, zonder succes.
Heb ook "uw" code aan 2 nieuwe knoppen gekoppeld : 2 x dezelfde ouwe runtime fout.

Met een macro een bestaand formulier openen moet toch kunnen, zeker met gerenomeerde tools?
Het beste wat ik nu nog kan verzinnen is het databaseje als bijlage bij deze post voegen.



tot wederhoren
Willy

vb2forum.odb
Dubbelklikken op StartForm brengt de macro's onder de knoppen...
(20.06 KiB) 149 keer gedownload
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » za sep 04, 2010 12:43 pm

Hallo

Ik heb er naar gekeken en niet gevonden waar het probleem zit.
Voor zover ik weet werken de macro's van Benitez goed. Het kan zijn dat je de opzet iets moet veranderen. Hoe dat weet ik op dit moment ook niet

Romke
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » za sep 04, 2010 7:44 pm

Hallo

Deze code werkte voor mij. Ik denk dat je moet kiezen tussen wat mogelijk is. Wat ik zie is dat je dingen wilt doen die wel kunnen maar wat niet zo voor de hand ligt. In zulk soort gevallen moet je je echt in de API verdiepen.
Overigens zou kan ik het niet aanraden om je te verdiepen in de API daar dat een geruime tijd vergt om dat onder controle te krijgen. Je maakt een fout die veel beginners maken: denken dat OOo-base er is voor mooie formulieren voor onwetende gebruikers. OOo-base is voor wetende gebruikers die met data om kunnen gaan.

Romke




Code: Selecteer alles   UitklappenInklappen
REM  *****  BASIC  *****
'
' De database "vb2forum" dient enkel als demonstratie van het probleem '
'                                   
Option Compare Database
Option Explicit
dim databestand as String


Sub MaakBoodeschap() REM om aan te tonen dat database "vb2forum" incl basic werkt
   Dim DatabaseContext As Object
   Dim DataSource As Object
   Dim Connection As Object
   Dim InteractionHandler as Object
   Dim Statement As Object
   Dim ResultSet As Object
   databestand = "vb2forum"  ''''dit bestand''''
   REM  verbinding met "vb2forum" maken
   DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   DataSource = DatabaseContext.getByName (databestand)
   InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
   Connection = DataSource.ConnectWithCompletion(InteractionHandler)
   Statement = Connection.createStatement()
   Statement.SetPropertyValue("ResultSetType", 1005)
   ' 1003 = FORWARD, 1004 = SCROLL_INSENSITIVE, 1005 = SCROLL_SENSITIVE )
   Statement.SetPropertyValue("ResultSetConcurrency", 1008) 
   ' 1008 = UPDATABLE, 1007 = not updatable)
   REM records met OK=true selecteren
   ResultSet = Statement.executeQuery("select NAAM from LEDEN where OK=-1")
   REM neem de laatste record uit deze selectie
   ResultSet.last()
   REM formuleer boodschap
   MsgBox "Dag " & ResultSet.getString(1) & ", alles OK. Proficiat! "
   REM verbinding sluiten ==> eventuele wijzigingen consolideren
   Statement.close()
   Connection.commit()
   Connection.close()   

End Sub



Sub GeefInRPG() REM voorstel ROMKE
   ' This macro must be stored in the database document.
   ' I try to understand what is the best method of using the BaseTools of Benitez.
   ' This sub is called when a formdocument is activate.

   ' First make sure the library is loaded
   if not globalscope.BasicLibraries.islibraryloaded("BaseTools") then
      ' Load now the library
         globalscope.BasicLibraries.loadlibrary("BaseTools")
   end if
   ' Init variables with calling a sub in the library

   Basetools.DataBases.InitFromDocument(thisdatabasedocument)
   BaseTools.runcmd.OpenFormDocument("INGAVE")
End Sub
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » ma sep 06, 2010 10:51 am

Beste Romke,
Bij deze bedankt voor uw snelle en vele bijdragen.

De voorlopige conclusie is echter dat:
1) uw voorgestelde code met Bernitez macros bij mij niet werkt
2) voor zover jij weet de codes goed werken
3) je mij eigenlijk afraadt me in de API te verdiepen

Het enige wat ik zoek is basic code om een eenvoudige base form te openen.
Juist om te vermijden dat mijn onwetende gebruikers dit "manueel" moeten doen.

Ik zoek nu rustig verder en zodra ik een oplossing onder de knie (knop) heb
publiceer ik ze hier en geef ik dit item de stempel SOLVED.

met vriendelijke groeten
Willy
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » ma sep 06, 2010 8:52 pm

Hallo

Als je geen of weinig macros gebruik dan kan elk writer document een formulier zijn wat van de desktop op te starten is.

Ook kun je formulieren maken in een spreadsheet, het teken programma en impress. De hulp middelen zijn iets beperkter

Romke
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » do sep 30, 2010 7:49 am

Beste,

In bijlage "vb2form2.odb" als oplossing ZONDER BaseTools.

We negeren voorlopig de foutmelding bij het openen van de database en starten manueel door in het "Base-venster" te dubbelklikken op het formulier "StartForm"
Dit formulier bevat 2 knoppen:
de knop "Ingave" opent nu een formulier die toelaat in de tabel "Leden" records te wijzigen, toe te voegen en te verwijderen,
de knop "Bericht" toont een bericht aan het laatste lid waarvan het veld "OK" aangevinkt is, kwestie van enige code op de tabel los te laten en de uitgevoerde
ingaves te illustreren. Er kan naar believen verder gewerkt worden tot het formulier "StartForm" gesloten wordt.

De doelstelling geformuleerd in mijn vorige post
"Het enige wat ik zoek is basic code om een eenvoudige base form te openen. Juist om te vermijden dat mijn onwetende gebruikers dit "manueel" moeten doen."
is dus bijna bereikt. :super:

Enig overblijvend probleem is "StartForm" automatisch te openen bij het opstarten van de database.
Nu reeds wordt bij het opstarten/openen van de database "Sub Autostart()" automatisch gestart, wat de message "Sub Proef() aangeroepen! " ook toont.
De daarna aangeroepen sub "OpenStartForm()" geeft een runtime fout: " ... er bestaat geen verbinding met de database ..."
Code: Selecteer alles   UitklappenInklappen
REM  *****  BASIC  *****
'
' De database "vb2forum" dient als demonstratie van:
'        formulier met knoppen
'                 waarmee andere formulieren kunnen geopend worden
'                    waarin data kan aangepast, toegevoegd en verwijderd worden
'       

Option Compare Database
Option Explicit
dim databestand as String
'dim oEvent

Sub Main
' Main Sub niet nodig ...
End Sub



Sub OpenStartForm(oEv As Object)     REM bedoeling is deze sub dmv een 'autoexecute' bij openen database uit te voeren
    '                                  code voor deze autoexec nog op te stellen
    Dim GetFormName As String
    Dim GetForm as Object
    GetFormName = "StartForm"
    GetForm = ThisDatabaseDocument.FormDocuments.GetByName(GetFormName)
    GetForm.Open
End Sub

Sub OpenAForm(oEv As Object)         REM sub wordt gestart met knop "Ingave" op form "StartForm", code OK
    Dim GetFormName As String
    Dim GetForm as Object
    GetFormName = "INGAVE"
    GetForm = ThisDatabaseDocument.FormDocuments.GetByName(GetFormName)
    GetForm.Open
End Sub

Sub BwaarSluitIngave(oEv As Object)    REM sub wordt gestart met knop "Bewaar & Sluit" op form "INGAVE", code OK
    Dim GetFormName As String
    Dim GetForm as Object
    GetFormName = "INGAVE"
    GetForm = ThisDatabaseDocument.FormDocuments.GetByName(GetFormName)
    GetForm.Close
End Sub

Sub MaakBoodeschap()                 REM sub wordt gestart met knop "Bericht" op form "StartForm", code OK
    Dim DatabaseContext As Object
    Dim DataSource As Object
    Dim Connection As Object
    Dim InteractionHandler as Object
    Dim Statement As Object
    Dim ResultSet As Object
    databestand = "vb2forum2"  ''''dit bestand''''
        REM  verbinding met "vb2forum2" maken
    DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
    DataSource = DatabaseContext.getByName (databestand)
    InteractionHandler = createUnoService("com.sun.star.sdb.InteractionHandler")
    Connection = DataSource.ConnectWithCompletion(InteractionHandler)
    Statement = Connection.createStatement()
    Statement.SetPropertyValue("ResultSetType", 1005)
    ' 1003 = FORWARD, 1004 = SCROLL_INSENSITIVE, 1005 = SCROLL_SENSITIVE )
    Statement.SetPropertyValue("ResultSetConcurrency", 1008) 
    ' 1008 = UPDATABLE, 1007 = not updatable)
        REM records met OK=true selecteren
    ResultSet = Statement.executeQuery("select NAAM from LEDEN where OK=-1")
        REM neem de laatste record uit deze selectie
    ResultSet.last()
        REM formuleer boodschap
    MsgBox "Dag " & ResultSet.getString(1) & ", alles OK. Proficiat! "
        REM verbinding sluiten ==> eventuele wijzigingen consolideren
    Statement.close()
    Connection.commit()
    Connection.close()   

End Sub

Sub Proef()
    MsgBox  "Sub Proef() aangeroepen! "
    OpenStartForm   
End Sub

Zodra ik, eventueel met de hulp van dit forum, ook dit kan oplossen zal ik met veel plezier dit item als SOLVED kunnen afmelden.

groeten,
Willy
Bijlagen
vb2forum2.odb
(21.49 KiB) 114 keer gedownload
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » do sep 30, 2010 11:49 am

Hallo

Zoals eerder vermeld maak alleen staande formulieren. Je komt van het ene probleem in het andere.

Zie de links die wel in de het Engels zijn.

http://www.oooforum.org/forum/viewtopic ... be1ebf571a

http://www.oooforum.org/forum/viewtopic ... ight=flush

http://user.services.openoffice.org/en/ ... 13&t=32823

Romke
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland

Re: Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor BoySue » do sep 30, 2010 6:49 pm

Beste lezer,

Ik beschouw het probleem als volledig *** opgelost
, zij het zonder gebruik te maken van BaseTools.
In bijlage vindt u de database "vb2forumOK.odb" als elementair code voorbeeld.

1) plaats het ergens op uw PC,
2) open Base en voeg er de database als volgt aan toe:
Extra > Opties > OpenOffice.orgBase > Databases > Nieuw
Bladeren > bestand 'vb2forumOK.odb'aanduiden > OK

3) de database is nu klaar voor gebruik,
ze kan opgestart worden door er in de 'verkenner' op te dubbelklikken
en Base moet daarbij niet geopend zijn.

4) de gebruiker ziet dan een formulier met knoppen
wat hem toelaat de verschillende 'programmaonderdelen'
te gebruiken zonder in Base zelf te moeten werken.

5) eventuele wijzigingen in de database ( tabel Leden) worden wel degelijk gesaved.



De sleutel tot de oplossing is:


1) de 'Sub OpenStartForm(oEv As Object)' welke het formulier 'StartForm' opent
en tijdens de ontwikkeling als volgt als 'autoexecute' werd ingesteld:
Extra > Aanpassen > Gebeurtenissen > Document openen > Macro > Bladeren
'Sub OpenStartForm' kiezen
Opslaan in 'vb2forumOK' kiezen
OK


2) te zorgen voor een verbinding met de database vooraleer StartForm wordt geopend met:

Code: Selecteer alles   UitklappenInklappen
  If not ThisDatabaseDocument.CurrentController.IsConnected then
    ThisDatabaseDocument.CurrentController.Connect
  End if



*** natuurlijk is er nog veel ruimte voor toeters en bellen...


met tevreden groeten, :D
Willy
Bijlagen
vb2forumOK.odb
(23.02 KiB) 143 keer gedownload
genietend van:
LinuxMint 9 kernel 2.6.32-21
OpenOffice.org 3.2.0 000320m12 (build:9483)
BoySue
 
Berichten: 18
Geregistreerd: do sep 02, 2010 2:47 pm

Re: SOLVED Hoe macro bibliotheek BaseTools 'activeren'.

Berichtdoor RPG » vr okt 01, 2010 7:14 pm

Hallo

Het is een mooi idee om de test van de connectie ver naar voren te trekken.

Romke
LibreOffice 6.1.5.2 op openSUSE Leap 15
RPG
 
Berichten: 3925
Geregistreerd: wo apr 15, 2009 1:01 am
Woonplaats: Apeldoorn, Nederland


Keer terug naar Macro's

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast