Hallo
Ik ben nog even verder gegaan met het uitzoeken van dit. Het geeft mij ook enig vat op de API van OOo. Ik kan er nu ook enige uitleg bij geven
Waarschuwing
Wanneer je op dit niveau bezig gaat dat is het noodzakelijk om alles goed te begrijpen. Komma's, punten en nog meer zaken krijgen vaak een andere betekenis dan gedacht. Ook waarden zoals een datum worden niet altijd behandeld zoals gedacht. Soms wordt er gewerkt locale instellingen soms wordt er gewerkt met wat voor BASIC normaal is. Het is aan te bevelen om iets af te dwingen.
Cel-waarden
In een cel kan van alles opgeslagen worden
a) Getallen
b) Tekst
c) Formule
d) een vertaalde formule
e) Misschien nog wel wat
Getallen
Een getal wat opgeslagen wordt kan op verschillende manier weergegeven wordt. Dit is afhankelijk van de opmaakt. Hoe de opmaak ook is een getal blijft een getal en is in een cel een getal met een drijvende komma.
DataArray
Een DataArray biedt de mogelijkheid om een tekst of een getal op te slaan in een cel. Dit kan ook een CelRange zijn: dus meer cellen. Getallen moeten aangeboden worden als double. Wanneer het als een tekst zonder aanhalingstekens aangeboden wordt dan moet de punt als decimaal teken gebruikt worden. Het is uiteindelijk BASIC. De aangeboden array moet corresponderen met het aangewezen gebied anders wordt er een foutmelding gedaan. Een dataArray kan ook voor een enkele cel gelden. Zonder vragen wordt alles uitgevoerd maar het is mogelijk dat control-Z wel werkt.
De Opbouw van DataArray
De opbouw van een dataArray kan nog al complex zijn daar het niet een meer- dimensionale array is maar een geneste array van mogelijk meerdere één-dimensinale array's. Ik heb het niet uitgeprobeerd en het is moeilijk omdat uit te leggen. Ik probeer eerst meestal de bron gegevens te analyseren en dan het na te maken. Als voorbeeld:
- Code: Selecteer alles UitklappenInklappen
print genesteArray(1)(3)
Toegankelijkheid en gebruik
Het mag duidelijk zijn dat dit niet zo gemakkelijk te vinden is voor de doorsnee gebruiker. Het is toch wel aan te raden om dit te gaan gebruiken als iemand macro's wil gaan schrijven. De macro's worden wel eenvoudiger als men het eenmaal begrijpt. OpenOffice draagt zorg voor enkele zaken die men anders zelf moet doen.
Romke
- Code: Selecteer alles UitklappenInklappen
sub doinDbaseCell
' Dit is voor een Cel
dim oDbaserange
dim oReferredCells
dim oRangetowork
const sDbaserangeName="Import1" ' Dit is de naam van de database range
dim mDataarray
' Voor namedranges moet het iets aangepast worden
'Regel eerst iets voor de waarden die ingevoegd moeten worden.
dim mWaarden
mWaarden=array(6) ' Hier kan ook een reeks andere waarden gebruikt worden
dim ietsrow
oDbaserange=thiscomponent.DatabaseRanges.getbyname(sDbaserangeName)
oReferredCells= oDbaserange.ReferredCells
ietsrow= oReferredCells.Rows.Count
'oRangetowork wordt voordurend bijgewerkt
oRangetowork= oReferredCells.getCellRangeByName(oReferredCells.AbsoluteName)' Laat nu verwijzen naar een cel
oRangetowork.rows.insertByIndex(ietsrow-1,1) ' Voeg een enkele rij in
'mDataarray=oRangetowork.getCellRangeByName("A2:F2")
'oReferredCells.columns.count geeft aan hoeveel kollmmen er zijn.
' Hou er rekening mee dat het met 1 verminderd moet worden om de dataarray te hebben
mDataarray=oRangetowork.getCellByPosition(2,5)
mDataarray.setDataArray(array(mWaarden())
end sub