Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Jörg Schmidt
Hallo,

Andreas schrieb:
> kann man Calc und Writer von MSAccess fernsteuern ?
> Also so wie das mit Access und Excel geht, wenn das ganze 
> MS-Office zu 
> Verfügung steht.

ja, ist alles problemlos mit VBA möglich.

Einige Links für die (Makro-)Programmierung von OOo:
http://www.calc-info.de/links.htm#makroprogrammierung

> Ich möchte gern aus Access Daten an Calc übertragen, also einerseits 
> direkt Zellen einzeln füllen 

z.B.:

'Achtung VBA
Private Sub CommandButton1_Click()
 Call wert_nach_Calc(1.234)
End Sub

Sub wert_nach_Calc(Wert)
 Set oServiceManager = CreateObject("com.sun.star.ServiceManager")
 Set oDesktop = oServiceManager.createInstance("com.sun.star.frame.Desktop")
 Dim aNoArgs()
 URL = "private:factory/scalc"
 Set Doc = oDesktop.loadComponentFromURL(URL, "_blank", 0, aNoArgs())
 Doc.Sheets().getByName("Tabelle1").getCellRangeByName("A1").Value = Wert
End Sub


> und andererseits auch ganze Recordsets 
> überschaufeln für Reports.

Ist genau das Gleiche, nur das man vorzugsweise die Daten in ein Array packt 
und dieses mit SetDataArray():
http://api.openoffice.org/docs/common/ref/com/sun/star/sheet/XCellRangeData.html#setDataArray

schreibt, damit es schneller geht.
Das Array muß dabei einen speziellen Aufbau haben, denn man wohl am Leichtesten 
durch ein Beispiel mit getDataArray() versteht:

'...
x = oSheet.getCellRangeByName("B14:E20")

'Daten aus Bereich x in Array:
xDataArray() = x.getDataArray()

'Daten aus erster Spalte (B14 bis B20) in Array:
Redim Preserve xSource(UBound(xDataArray()))
For i = LBound(xSource()) To UBound(xSource())
 xRow() = x(i)
 xSource(i) = xRow(0)
Next I

'xSource() enthält nun die Werte aus B14:B20

abgeleitet von:
http://prdownloads.sourceforge.net/ooodocs/ComboBox_in_a_Sheet_En.sxc

(Link nicht mehr erreichbar)



Gruß
Jörg


-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Stefan Weigel

Hallo Andreas,

Am 03.07.2010 11:40, schrieb Andreas:


Weißt noch was konkret zu Datenaustausch mit Calc.
Ich muß zT große Datendumps als Spreadsheet erzeugen. Excel kennt da
eine Funktion, der man ein Recordset übergeben kann und die zieht dann
die Daten weit schneller, als wenn man es Zelle für Zelle schreibt.


Hm. Da fürchte ich, wirst Du schon die Zellen durchlaufen müssen und 
die Werte dort einzeln reinschreiben müssen.


Oder Du untersuchst einen anderen genialen Ansatz, der durch ODF 
möglich wird und auf den man nicht so ohne weiteres kommt, wenn man 
einen XLS-geprägten Kopf hat. ;-)


Dieser Ansatz wäre, dass man die Daten nicht per 
Objektprogrammierung an Calc übergibt, sondern dass man die Werte 
direkt in ein Calc-Dokument hineinschreibt. Eine ODT-Datei ist ja 
nichts Anderes, als ein ZIP-Archiv mit XML-Dateien. Speichere mal 
eine Calc-Datei, in der Du in Zelle A1 HALLO hinein geschrieben 
hast. Entpacke die Calc-Datei mit einem ZIP-Programm und schau in 
die content.xml. Dort findest Du im Klartext das Wort HALLO wieder. 
Du könntest mit Deinem Access-Makro die XML-Datei mit Deinen Daten 
füllen und das Paket wieder einpacken und so Deinen Export von 
Access nach Calc machen.


Das dürfte der performantere Weg sein. Das erfordert auch nicht, 
dass man sich mit UNO-Objekten vertraut machen und mit diesen 
hantieren muss.


Gruß

Stefan

--
www.datenpilot.org

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Jan
Hallo Andreas,

Zelle für Zelle schreiben, dauert bei OOo wirklich sehr lange. Besser
kommst du da wenn du die Sache in einem Array abhandelts und dann dieses
Array in die Calctabelle schreibst. Das Array hat aber bestimmte
Anforderungen. Es ist Beispielsweise ein Array von Arrays. Das erste
Array enthält glaube ich die Zeilen und darin liegt dann ein Array
welches die einzelnen Zellen der Zeile hat. Diese Struktur ist aus
meiner Sicht etwas unglücklich gewählt, aber leider nunmal so implementiert.

Viele Grüße

Jan

Am 03.07.2010 11:40, schrieb Andreas:
>  Am 03.07.2010 11:22, schrieb Stefan Weigel:
>> Am 03.07.2010 10:10, schrieb Andreas:
>>> kann man Calc und Writer von MSAccess fernsteuern ?
>>
>> Ja. Du willst OOo mit VBA steuern.
>>
>> Ein Beispiel der Automation von OOo Writer mit VBA findest du hier.
>> Dort sind auch Links angegeben mit weiteren Informationen zum Thema:
>>
>> http://wiki.services.openoffice.org/wiki/User:Stefanw/Tipps/Allgemein/OOo_mit_VBA_steuern
>>
>>
>> Für Menschen, die bislang MS Office automatisiert haben, dürfte das
>> größte Problem der gesitige Umstieg auf das Objektmodell von OOo sein,
>> das generell eine andere Logik und und ungewohnte Strukturen aufweist.
>>
>> Bei Michael Dannenhöfer findest Du Beispiele und Tipps, wie man OOo
>> mit StarBasic bzw. OOo Basic steuert. Die so vorgeführten Objekte,
>> Eigenschaften und Methoden kannst Du auch mit VBA nutzen.
> 
> Hi Stefan,
> das ist immerhin ein Anfang  :)
> Hoffentlich hält das niemand davon ab, weitere Hinweise zu geben.  ;)
> 
> Weißt noch was konkret zu Datenaustausch mit Calc.
> Ich muß zT große Datendumps als Spreadsheet erzeugen. Excel kennt da
> eine Funktion, der man ein Recordset übergeben kann und die zieht dann
> die Daten weit schneller, als wenn man es Zelle für Zelle schreibt.
> 
> Gruß
> :)
> 
> -
> To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
> For additional commands, e-mail: users-h...@de.openoffice.org
> 
> 
> 

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Andreas

 Am 03.07.2010 11:22, schrieb Stefan Weigel:

Am 03.07.2010 10:10, schrieb Andreas:

kann man Calc und Writer von MSAccess fernsteuern ?


Ja. Du willst OOo mit VBA steuern.

Ein Beispiel der Automation von OOo Writer mit VBA findest du hier. 
Dort sind auch Links angegeben mit weiteren Informationen zum Thema:


http://wiki.services.openoffice.org/wiki/User:Stefanw/Tipps/Allgemein/OOo_mit_VBA_steuern 



Für Menschen, die bislang MS Office automatisiert haben, dürfte das 
größte Problem der gesitige Umstieg auf das Objektmodell von OOo sein, 
das generell eine andere Logik und und ungewohnte Strukturen aufweist.


Bei Michael Dannenhöfer findest Du Beispiele und Tipps, wie man OOo 
mit StarBasic bzw. OOo Basic steuert. Die so vorgeführten Objekte, 
Eigenschaften und Methoden kannst Du auch mit VBA nutzen.


Hi Stefan,
das ist immerhin ein Anfang  :)
Hoffentlich hält das niemand davon ab, weitere Hinweise zu geben.  ;)

Weißt noch was konkret zu Datenaustausch mit Calc.
Ich muß zT große Datendumps als Spreadsheet erzeugen. Excel kennt da 
eine Funktion, der man ein Recordset übergeben kann und die zieht dann 
die Daten weit schneller, als wenn man es Zelle für Zelle schreibt.


Gruß
:)

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Stefan Weigel

Hallo Andreas,

Am 03.07.2010 11:24, schrieb Andreas:


Das Ziel ist jetzt, MSOffice weitgehend zu ersetzen und mittelfristig
ganz davon abzunabeln.
Hierzu ist einstweilen nötig, dass die Anwender nur die Access Runtime
Version verwenden und kein MS-Office. Die Runtime beherrscht wirklich
nur die Access Funktionalität und sonst nichts.
Ganz hervorragend wäre jetzt, wenn ich Word und Excel durch OOo ersetzen
könnte soweit das die Dokumenterstellung betrifft.


Das sollte klappen.


Wie gesagt, für Excel kann man in Access Objekte erzeugen, die dann
nahezu alles als Methode bereit stellen, was man auch in Makros direkt
in Excel machen kann.


Wenn OOo instaliert ist, kannst Du mit VBA über die 
CreateObject-Funktion die erforderlichen UNO-Objekte erzeugen...


Set someUnoObject = CreateObject("com.sun.star.BlaBlaBla")

...die dann Eigenschaften und Methoden bereitstellen.


Die eigentliche Access-Anwendung kann ich wegen des hohen Zeitaufwandes
noch nicht auf OOo migrieren.


...womit Du auch an Grenzen stoßen könntest, je nachdem, welche 
Funktionalitäten von MS Access Du in der bisherigen Anwendung benutzt.


Gruß

Stefan

--
www.datenpilot.org

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Andreas

 Am 03.07.2010 10:34, schrieb Jan:

dann wäre auch ein Makro in Access denkbar, welches diese Aufgabe übernimmt.

Hi Jan,
genau darum gehts.




Am 03.07.2010 10:10, schrieb Andreas:

  Hi,

kann man Calc und Writer von MSAccess fernsteuern ?
Also so wie das mit Access und Excel geht, wenn das ganze MS-Office zu
Verfügung steht.

Ich möchte gern aus Access Daten an Calc übertragen, also einerseits
direkt Zellen einzeln füllen und andererseits auch ganze Recordsets
überschaufeln für Reports.



-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Andreas

 Am 03.07.2010 10:49, schrieb Regina Henschel:

Also so wie das mit Access und Excel geht, wenn das ganze MS-Office zu
Verfügung steht.

Ich möchte gern aus Access Daten an Calc übertragen, also einerseits
direkt Zellen einzeln füllen und andererseits auch ganze Recordsets
überschaufeln für Reports.

kann man Calc und Writer von MSAccess fernsteuern ?

Mir ist die Situation nicht ganz klar. Unter welchem Betriebssystem 
arbeitest du? Ist MS-Office installiert? Oder hast du nur die von MS 
Access erzeugte Datenbank, wenn ja in welchem Format? Oder benutzt du 
Excel-Tabellen als "Datenbank"? Möchtest du von Calc aus die Tabellen 
nur lesen oder auch Daten zurückschreiben?


Hallo Regina,

ich habe eine Anwendung mit Access auf Windows geschrieben, die zT auf 
Excel und Word zurück greift.
Bei mir ist MSOffice 2000 installiert. Die Anwender sollen das aber 
nicht benötigen.


Das Ziel ist jetzt, MSOffice weitgehend zu ersetzen und mittelfristig 
ganz davon abzunabeln.
Hierzu ist einstweilen nötig, dass die Anwender nur die Access Runtime 
Version verwenden und kein MS-Office. Die Runtime beherrscht wirklich 
nur die Access Funktionalität und sonst nichts.
Ganz hervorragend wäre jetzt, wenn ich Word und Excel durch OOo ersetzen 
könnte soweit das die Dokumenterstellung betrifft.


Wie gesagt, für Excel kann man in Access Objekte erzeugen, die dann 
nahezu alles als Methode bereit stellen, was man auch in Makros direkt 
in Excel machen kann.

Die Daten liegen in einer PostgreSQL-DB und Access liefert nur das Frontend.
Ich möchte also nicht von OOo auf Access zugreifen sondern umgekehrt und 
voll makrogesteuert.


Die eigentliche Access-Anwendung kann ich wegen des hohen Zeitaufwandes 
noch nicht auf OOo migrieren.




-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Stefan Weigel

Hallo Andreas,

Am 03.07.2010 10:10, schrieb Andreas:


kann man Calc und Writer von MSAccess fernsteuern ?


Ja. Du willst OOo mit VBA steuern.

Ein Beispiel der Automation von OOo Writer mit VBA findest du hier. 
Dort sind auch Links angegeben mit weiteren Informationen zum Thema:


http://wiki.services.openoffice.org/wiki/User:Stefanw/Tipps/Allgemein/OOo_mit_VBA_steuern

Für Menschen, die bislang MS Office automatisiert haben, dürfte das 
größte Problem der gesitige Umstieg auf das Objektmodell von OOo 
sein, das generell eine andere Logik und und ungewohnte Strukturen 
aufweist.


Bei Michael Dannenhöfer findest Du Beispiele und Tipps, wie man OOo 
mit StarBasic bzw. OOo Basic steuert. Die so vorgeführten Objekte, 
Eigenschaften und Methoden kannst Du auch mit VBA nutzen.


Gruß

Stefan

--
www.datenpilot.org

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Regina Henschel

Hallo Andreas,

Andreas schrieb:

Hi,

kann man Calc und Writer von MSAccess fernsteuern ?
Also so wie das mit Access und Excel geht, wenn das ganze MS-Office zu
Verfügung steht.

Ich möchte gern aus Access Daten an Calc übertragen, also einerseits
direkt Zellen einzeln füllen und andererseits auch ganze Recordsets
überschaufeln für Reports.


Mir ist die Situation nicht ganz klar. Unter welchem Betriebssystem 
arbeitest du? Ist MS-Office installiert? Oder hast du nur die von MS 
Access erzeugte Datenbank, wenn ja in welchem Format? Oder benutzt du 
Excel-Tabellen als "Datenbank"? Möchtest du von Calc aus die Tabellen 
nur lesen oder auch Daten zurückschreiben?


mfG
Regina

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org



Re: [de-users] Kann man Calc von MSAccess fernsteuern ?

2010-07-03 Diskussionsfäden Jan
Hallo,

natürlich kann man dies machen. Die Frage ist lediglich wie aufwendig
das ganze wird.
Ein möglicher Weg wären Makros. Wahrscheinlich aber in Java oder Phyton
geschrieben. Hierfür bietet OOo ganze Bibliotheken an, mit denen man die
Dokumente manipulieren kann.
Etwas leichter ist es sicher wenn man es in Starbasic macht. dies
erfordert aber, das die Access Datenbank in OOo angemeldet wird und die
Steuerung erfolgt dann aus OOo heraus und nicht wie angesprochen aus Access.
Möglich ist auch dass bereits mit VBA die UNO Modelle ansprechbar sind,
dann wäre auch ein Makro in Access denkbar, welches diese Aufgabe übernimmt.
Welcher Weg für dich der Beste ist, weiß ich nicht.

Viele Grüße

Jan

Am 03.07.2010 10:10, schrieb Andreas:
>  Hi,
> 
> kann man Calc und Writer von MSAccess fernsteuern ?
> Also so wie das mit Access und Excel geht, wenn das ganze MS-Office zu
> Verfügung steht.
> 
> Ich möchte gern aus Access Daten an Calc übertragen, also einerseits
> direkt Zellen einzeln füllen und andererseits auch ganze Recordsets
> überschaufeln für Reports.
> 
> 
> 
> -
> To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
> For additional commands, e-mail: users-h...@de.openoffice.org
> 
> 
> 

-
To unsubscribe, e-mail: users-unsubscr...@de.openoffice.org
For additional commands, e-mail: users-h...@de.openoffice.org