Seite 1 von 1

import von dbf

Verfasst: Mi, 28.12.2005 17:18
von kannenklaus
hallo ng,

mit folgendem makro möchte ich in starcalc ein die datei am3.dbf importieren:

Sub ImpDbf
Dim arg(0) as new com.sun.star.beans.PropertyValue
Dim sURL as String

arg(0).name = "Filtername"
arg(0).value = "dbf (StarCalc)"

'hier soll der Zeichensatz xx ausgewählt werden Westeuropa ISO-8859-15/EURO
arg(1).name = Filteroptions
arg(1).value = ?
sURL = "file:///k:/gis/shp_üb/am3.dbf"
StarDesktop.loadComponentFromURL(sURL, "_blank", 0, arg())

End Sub

der import klappt nicht, weil ich den filter und die auswahl des zeichensatzes (hier westeuropa iso-8850-15/euro) wahrscheinlich nicht richtig anspreche. wie wird der

dbf-filter und
der zeichensatz Westeuropa ISO-8859-15/EURO

richtig angesteuert?

danke

mfg

klaus

Verfasst: Do, 29.12.2005 09:34
von Toxitom
Hey Klaus,
die datei am3.dbf importieren:
Also eine dBase Datei?

OK, da musst du zunächst den richtigen Filter anwenden ("dBase") und dann erwartet - wie du s hon richtig erkannt hast - dieser auch noch Optionen.

Der einfachste Fall wäre:

Code: Alles auswählen

arg(0).name = "Filtername"
arg(0).value = "dBase"
arg(1).name = "FilterOptions"
arg(1).value = 0   'System Character Set 
Den Code (immer numerisch! als Integer) für deinen speziellen Zeichencode weiss ich nicht, ich würde es aber erst einmal mit der 0 für System-Zeichensatz versuchen. Ansosnten findest du die Codes irgendwo in der API.

Viele Grüße
Thomas

Verfasst: Do, 29.12.2005 10:52
von kannenklaus
hallo thomas
arg(1).name = "FilterOptions"
hier bekomme ich die fehlermeldung unzulässiger wert oder datentyp/index außerhalb des gültigen bereichs.

wo liegt der fehler?

p.s. ohne deine buch wäre der einstieg ganz schön schwierig.

beste grüße klaus

Verfasst: Do, 29.12.2005 13:13
von Toxitom
Hey Klaus,

wo liegt der fehler?
Na, in deiner Definition:

Code: Alles auswählen

Dim arg(0) as new com.sun.star.beans.PropertyValue 
Damit hast du einen Array mit genau einem Element erstellt - Index 0.
Wenn du jetzt auf den zweiten Eintrag zugreifen willst - Index 1 - ist der natürlich nicht mehr vorhanden - und es gibt einen Fehler...
Also:

Code: Alles auswählen

Dim arg(1) as new com.sun.star.beans.PropertyValue 
sollte die Zeile heissen - dann sollte es funktionierern.
p.s. ohne deine buch wäre der einstieg ganz schön schwierig.
Danke :D Und genau dafür hab ich es mal eschrieben...

Gruss
Thomas

Verfasst: Do, 29.12.2005 14:12
von kannenklaus
Toxitom hat geschrieben:Hey Klaus,

wo liegt der fehler?
Na, in deiner Definition:

Code: Alles auswählen

Dim arg(0) as new com.sun.star.beans.PropertyValue 
Damit hast du einen Array mit genau einem Element erstellt - Index 0.
Wenn du jetzt auf den zweiten Eintrag zugreifen willst - Index 1 - ist der natürlich nicht mehr vorhanden - und es gibt einen Fehler...
Also:

Code: Alles auswählen

Dim arg(1) as new com.sun.star.beans.PropertyValue 
sollte die Zeile heissen - dann sollte es funktionierern.
kannenklaus hat geschrieben:es geht noch nicht, trotz des zusätzlichen arguments. der kpl. code lt.

Sub ImpDbf
Dim arg(0) as new com.sun.star.beans.PropertyValue
Dim arg(1) as new com.sun.star.beans.PropertyValue

Dim sURL as String
sURL = "file:///k:/gis/shp_üb/am3.dbf"
arg(0).name = "Filtername"
arg(0).value = "dBase"
arg(1).name = "FilterOptions"
arg(1).value = 0 'System Character Set

StarDesktop.loadComponentFromURL(sURL, "_blank", 0, arg())

End Sub
p.s. ohne deine buch wäre der einstieg ganz schön schwierig.
Danke :D Und genau dafür hab ich es mal eschrieben...

Gruss
Thomas

Verfasst: Do, 29.12.2005 14:36
von Toxitom
Hey Klaus,
es geht noch nicht, trotz des zusätzlichen arguments. der kpl. code lt.

Sub ImpDbf
Dim arg(0) as new com.sun.star.beans.PropertyValue
Dim arg(1) as new com.sun.star.beans.PropertyValue
Doch auch nicht so :!:
Jetzt hast du zwei Arrays mit gleichen Namen erzeugt! Das kann nicht gut gehen!
Nein: die Zeile

Code: Alles auswählen

Dim arg(1) as new com.sun.star.beans.PropertyValue
ist die einzige :!: Definitionszeile. Hiermit erzeugst du ein PropertyValue Array mit zwei Elementen, Index 0 und Index 1. Die kannst du dann später im Code auch "füllen".

Gruss
Thomas

Verfasst: Do, 29.12.2005 16:08
von kannenklaus
Toxitom hat geschrieben:Hey Klaus,
es geht noch nicht, trotz des zusätzlichen arguments. der kpl. code lt.

Sub ImpDbf
Dim arg(0) as new com.sun.star.beans.PropertyValue
Dim arg(1) as new com.sun.star.beans.PropertyValue
Doch auch nicht so :!:
Jetzt hast du zwei Arrays mit gleichen Namen erzeugt! Das kann nicht gut gehen!
Nein: die Zeile

Code: Alles auswählen

Dim arg(1) as new com.sun.star.beans.PropertyValue
ist die einzige :!: Definitionszeile. Hiermit erzeugst du ein PropertyValue Array mit zwei Elementen, Index 0 und Index 1. Die kannst du dann später im Code auch "füllen".

Gruss
Thomas
hallo thomas,

ich habe jetzt auch dein bsp. in deinem buch nachvollzogen. beim import der csv-datei wird writer geöffnet. vielleicht liegt das problem mit der dbf daran, dass beim import ausdrücklich auf starcalc zu verweisen ist oder hast du eine andere idee?. die sache mit dem array und index 0 und 1 führt nicht dazu, dass die dbf in starcalc eingelesen wird.

grüsse klaus

Verfasst: Fr, 30.12.2005 09:12
von Toxitom
Hey Klaus,

hab es grade mal selbst probiert:

Kleiner Fehler in der Beschreibung: Der Wert des Character-Sets (also der FilterOption) darf offensichtlich nicht mehr numerisch übergeben werden, sondern als String.
Teste mal statt

Code: Alles auswählen

arg(1).value = 0 'System Character Set
die Zeile so zu schreiben:

Code: Alles auswählen

arg(1).value = "0" 'System Character Set
Jetzt geht es bei mir - wobei es unwichtig ist, ob da eine "0", eine "1" oder gar nichts (also "") steht.

Viele Grüße
Thomas

Verfasst: Fr, 30.12.2005 12:17
von kannenklaus
Toxitom hat geschrieben:Hey Klaus,

hab es grade mal selbst probiert:

Kleiner Fehler in der Beschreibung: Der Wert des Character-Sets (also der FilterOption) darf offensichtlich nicht mehr numerisch übergeben werden, sondern als String.
Teste mal statt

Code: Alles auswählen

arg(1).value = 0 'System Character Set
die Zeile so zu schreiben:

Code: Alles auswählen

arg(1).value = "0" 'System Character Set
Jetzt geht es bei mir - wobei es unwichtig ist, ob da eine "0", eine "1" oder gar nichts (also "") steht.

hallo thomas,
kleine dinge große wirkung. jetzt klappt es. ich werde euren openoffice verein untersützen und hoffe, dass im nächsten jahr nicht nur du und wenige andere hier den laden am laufen haltet.

grüße klaus

Viele Grüße
Thomas

Verfasst: Fr, 30.12.2005 12:18
von kannenklaus
Toxitom hat geschrieben:Hey Klaus,

hab es grade mal selbst probiert:

Kleiner Fehler in der Beschreibung: Der Wert des Character-Sets (also der FilterOption) darf offensichtlich nicht mehr numerisch übergeben werden, sondern als String.
Teste mal statt

Code: Alles auswählen

arg(1).value = 0 'System Character Set
die Zeile so zu schreiben:

Code: Alles auswählen

arg(1).value = "0" 'System Character Set
Jetzt geht es bei mir - wobei es unwichtig ist, ob da eine "0", eine "1" oder gar nichts (also "") steht.

hallo thomas,
kleine dinge große wirkung. jetzt klappt es. ich werde euren openoffice verein untersützen und hoffe, dass im nächsten jahr nicht nur du und wenige andere hier den laden am laufen haltet.

grüße klaus

Viele Grüße
Thomas

Verfasst: Fr, 30.12.2005 12:22
von kannenklaus
Toxitom hat geschrieben:Hey Klaus,

hab es grade mal selbst probiert:

Kleiner Fehler in der Beschreibung: Der Wert des Character-Sets (also der FilterOption) darf offensichtlich nicht mehr numerisch übergeben werden, sondern als String.
Teste mal statt

Code: Alles auswählen

arg(1).value = 0 'System Character Set
die Zeile so zu schreiben:

Code: Alles auswählen

arg(1).value = "0" 'System Character Set
Jetzt geht es bei mir - wobei es unwichtig ist, ob da eine "0", eine "1" oder gar nichts (also "") steht.

hallo thomas,
kleine dinge große wirkung. jetzt klappt es. ich werde euren openoffice verein untersützen und hoffe, dass im nächsten jahr nicht nur du und wenige andere hier den laden am laufen haltet.

grüße klaus

Viele Grüße
Thomas