import von dbf
Moderator: Moderatoren
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
import von dbf
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
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
Hey Klaus,
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:
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
Also eine dBase Datei?die datei am3.dbf importieren:
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
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
Hey Klaus,
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:
sollte die Zeile heissen - dann sollte es funktionierern.
Und genau dafür hab ich es mal eschrieben...
Gruss
Thomas
Na, in deiner Definition:wo liegt der fehler?
Code: Alles auswählen
Dim arg(0) as new com.sun.star.beans.PropertyValue
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
Dankep.s. ohne deine buch wäre der einstieg ganz schön schwierig.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
Toxitom hat geschrieben:Hey Klaus,
Na, in deiner Definition:wo liegt der fehler?
Damit hast du einen Array mit genau einem Element erstellt - Index 0.Code: Alles auswählen
Dim arg(0) as new com.sun.star.beans.PropertyValue
Wenn du jetzt auf den zweiten Eintrag zugreifen willst - Index 1 - ist der natürlich nicht mehr vorhanden - und es gibt einen Fehler...
Also:sollte die Zeile heissen - dann sollte es funktionierern.Code: Alles auswählen
Dim arg(1) as new com.sun.star.beans.PropertyValue
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 SubDankep.s. ohne deine buch wäre der einstieg ganz schön schwierig.Und genau dafür hab ich es mal eschrieben...
Gruss
Thomas
Hey Klaus,
Jetzt hast du zwei Arrays mit gleichen Namen erzeugt! Das kann nicht gut gehen!
Nein: die Zeile
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
Doch auch nicht soes 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

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

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
Toxitom hat geschrieben:Hey Klaus,
Doch auch nicht soes 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![]()
Jetzt hast du zwei Arrays mit gleichen Namen erzeugt! Das kann nicht gut gehen!
Nein: die Zeileist die einzigeCode: Alles auswählen
Dim arg(1) as new com.sun.star.beans.PropertyValue
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
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
die Zeile so zu schreiben:
Jetzt geht es bei mir - wobei es unwichtig ist, ob da eine "0", eine "1" oder gar nichts (also "") steht.
Viele Grüße
Thomas
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
Code: Alles auswählen
arg(1).value = "0" 'System Character Set
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
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 stattdie 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.Code: Alles auswählen
arg(1).value = "0" 'System Character Set
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
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
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 stattdie 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.Code: Alles auswählen
arg(1).value = "0" 'System Character Set
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
-
- *****
- Beiträge: 319
- Registriert: Mi, 14.12.2005 08:08
- Wohnort: freising - oder dort, wo das bier herkommt
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 stattdie 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.Code: Alles auswählen
arg(1).value = "0" 'System Character Set
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