[Opgelost] Een datasource aanpassen.

Bespreek het databaseprogramma
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

[Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Dit kan helpen met het instellen van een DataSource en pad voor database.
Dit is gemaakt voor het geval je een database heb en die met anderen wilt delen. Soms lukt het niet altijd voor de nieuwe gebruiker om het een en ander goed te installeren. Dit probeert hiervoor een macro te maken. De macro zit in een onafhankelijk document zodat de feitelijke database geen macro hoeft te bevatten. Indien er geen DataSource is op de Nieuwe computer dan wordt een DataSource gemaakt die gelijk is aan somminge onderdelen van de bijgeleverde files. Ik gebruik nu het voorbeeld voor VoorForum in een spreadsheet.

Als ik het een en ander goed begrepen heb wil dit werken voor verschillende databases:
HSQLDB met losse files
De embedded HSQLDB
DB files
Spreadsheet

De bedoeling van deze macro is dat het ook maar een keer gebruikt wordt. Je krijgt geen boodschap maar kunt de nieuwe naam wel in de datasource zien.

Het is mogelijk dat er nog kleine foutjes in zitten

Romke
Bijlagen
VoorForum.ods
Spreadsheet voor database
(16.02 KiB) 242 keer gedownload
VoorForum.odb
Databasedoucment
(3.11 KiB) 203 keer gedownload
ReInitpathDatasource07.odt
Document met macro
(13 KiB) 361 keer gedownload
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Johan
Berichten: 496
Lid geworden op: di jun 02, 2009 11:53 pm

Re: [Opgelost] Een datasource aanpassen.

Bericht door Johan »

Er zit bij mij alleszins iets fout want ik krijg een foutmelding. Het is geen foutmelding die voorzien is in het macroscript. Maar die macro gaat wel mijn petje ver te boven.
Bijlagen
Schermafdruk-1.png
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hello

Ik had op het laatst de namen wat aan gepast zodat het wat duidelijker zou zijn. Ik werkte eerst met de naam maakdatabase. Die naam heb ik later aan gepast naar ReInitpathDataSource. Ook de naam van de macro heb ik veranderd

Ik zal alles opnieuw opsturen.
Ik heb het mogelijk niet duidelijk vermeld maar de files moeten allemaal in een enkele map staan.

Het is ook niet de bedoeling dat je de macro moet begrijpen. Het mag natuurlijk maar het is mijn bedoeling dat iets gemakkelijker kan. Waarschijnlijk zal ik het ook op het Engelse forum plaatsen maar nu kan ik kijken of het voor jouw werkt. Op het Engelse forum heb ik wel een proef versie geplaatst met alleen de macros.

Groeten
Romke
Bijlagen
ReInitpathDatasource07.odt
Bestand met macros
(13.33 KiB) 262 keer gedownload
VoorForum.odb
(3.11 KiB) 203 keer gedownload
VoorForum.ods
(16.02 KiB) 311 keer gedownload
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Johan
Berichten: 496
Lid geworden op: di jun 02, 2009 11:53 pm

Re: [Opgelost] Een datasource aanpassen.

Bericht door Johan »

Nu krijg ik:
Afbeelding

Er is dus toch nog iets fout?
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Mijn dank voor de reactie. Ik zal zoeken hoe het komt. Ik heb een vraag is het getest met Windows of Linux?

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Ik heb met het testen nog een andere fout gevonden. Aan die fout was je nog niet toegekomen. Ik heb nog geen oplossing van de door jouw aangegeven fout. Ik maak gebruik van iets wat pas ingevoerd is sinds OOo3.3.
http://api.openoffice.org/docs/common/r ... tions.html

Ik zal kijken of ik op dat punt nog iets kan vinden.

Groeten
Romke
Bijlagen
ReInitpathDatasource08.odt
(13.15 KiB) 239 keer gedownload
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Johan
Berichten: 496
Lid geworden op: di jun 02, 2009 11:53 pm

Re: [Opgelost] Een datasource aanpassen.

Bericht door Johan »

Momenteel heb ik enkel getest in Ubuntu 10.04. Onder XP heb ik een verouderde versie van OoO draaien. Xp gebruik ik dan ook enkel maar sporadisch meer.
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Op het ogenblik weet ik niet hoe ik het moet maken onder een oude versie van OOo maar ik heb een complete code gevonden van Drew Jensen en dat is naar ik verwacht werkbare code. Het is code uit het jaar 2005.

http://www.oooforum.org/forum/viewtopic ... object+sub

Als Drew Jensen code maakt dan werkt het meestal goed.

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Na dat ik de code gevonden heb van Drew Jensen duurde het even voordat ik het compleet begreep. Het resultaat is dat het niet veel moeilijker is dan met de oude versie.

Dat de code zelf vrij gecompliceerd is komt doordat er ook nogal aan wat andere dingen gedacht moet worden.

Later toegevoegd. (2-12)
De code van Drew Jensen leerde mij dat het veel korter kon. Iets wat ik eerst met macro's moest oplossen word nu gedaan door OOo zelf. Daarbij blijft het ook nog geschikt voor een oude versie van OOo. De file zelf is langer geworden omdat ik alles er in heb gelaten. Maar als je het wilt gebruiken dat kan ik er alles uit halen.

Romke
Bijlagen
ReInitpathDatasource13.odt
(18.61 KiB) 291 keer gedownload
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Johan
Berichten: 496
Lid geworden op: di jun 02, 2009 11:53 pm

Re: [Opgelost] Een datasource aanpassen.

Bericht door Johan »

De korte formule heeft geen foutmelding gegeven onder Ubuntu en lijkt me naar behoren te werken. Van zodra ik XP opstart, zal ik dit hier melden wat daar de uitslag is. Fantatstisch mooi staaltje dat hier word geleverd? :bravo:
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Johan mijn dank voor de informatie. Ik heb met het maken van die macro ook een beter inzicht gekregen hoe het allemaal werkt en dat is ook goed. Ik hoop ook dat je er wat aan hebt.

Romke
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
RPG
Berichten: 4727
Lid geworden op: wo apr 15, 2009 1:01 am
Locatie: Apeldoorn, Nederland

Re: [Opgelost] Een datasource aanpassen.

Bericht door RPG »

Hallo

Ik heb de code nog wat kunnen vereenvoudigen door dat ik het beter begreep. Nu werkt de code alleen als alles in een enkele map staat. Het is niet noodzakelijk dat de data in het database document zelf staat.

Ik denk dat deze beperking het gemakkelijker maakt om het te gebruiken. Als het gebruikt wordt voor een database waarbij de data staat in aparte files dan moet alles in een enkele map staan.

Voor de duidelijkheid deze macro moet in het databasedocument zelf staan.

Romke

Code: Selecteer alles

Option explicit
' This is for code special for version of OOo 3.3 and higher
' Use this macro in a normal writer document.
' How can I registrate a database from a running database
Sub ConnectDatabaseAgain

compatibilitymode(true)
dim sDatabaseSourceName
' If you give here a name for the sDatabaseSourceName then it will be used 
' It is not a problem to have more then once registrated the same database AFAIK
'sDatabaseSourceName="AARomke"

dim oDatabaseContext ' Here we can find all the registrated databases
' Variables we need point to thing who belong to this document
dim oDatabase
dim sSeparator ' Windows does have an other slash the linux in a path



dim oDatabaseSource


' Do first some initing
' We need this library
GlobalScope.BasicLibraries.loadLibrary("Tools") 'Load a library with subs

'Here we want have elements of the database
sSeparator= Choose(GetGUIType,"\","","","/") ' Make a choice between the slash'

oDatabase= thisdatabasedocument


' A service we need for doing this macro
oDatabaseContext = createunoservice("com.sun.star.sdb.DatabaseContext")

if len(sDatabaseSourceName) =0 then
	' use the name of the database for registrating the name
	sDatabaseSourceName= GetFileNameWithoutExtension(filenameoutofpath(convertfromurl(oDatabase.url)))
end if
if oDatabaseContext.hasRegisteredDatabase(sDatabaseSourceName) then
	oDatabaseContext.changeDatabaseLocation(sDatabaseSourceName,oDatabase.url)
else oDatabaseContext.registerDatabaseLocation(sDatabaseSourceName,oDatabase.url)
end if

End Sub
LibreOffice 24.2.4.2 op openSUSE Leap 15.6
Plaats reactie