Datenbanken + Inhalt von Feldnamen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Stefan -sjh-
*
Beiträge: 15
Registriert: So, 22.08.2004 12:19

Datenbanken + Inhalt von Feldnamen

Beitrag von Stefan -sjh- »

Hallo,

wie kann ich per Makro aus einem Dokument folgenden Informationen erhalten :

1.- den Namen der angemeldeten Datenbank ( für das jeweilige Dokument )
2.- die Feldinhalte der Datenbank, wobei ich den Feldinhalt vorher in die entsprechenden Felder des Dokuments übertragen habe

Also, ein Brief mit Anrede, Name, Ort Fax etc. - Feldnamen sind mir bekannt, ich möchte jedoch aus dem Dokument den jeweiligen Feldinhalt erfahren ( per Makro ). Es können unterschiedliche Datenbanken ( dbf ) an das Dokument festgesetzt werden.

Weiß jemand Rat ?
Danke !

Stefan
- per aspera ad astra -
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Wenn ich Dein Vorhaben richtig verstanden habe würde ich alle eingefügten Feldbefehle suchen und prüfen ob es sich um Datenbankfelder handelt.

Code: Alles auswählen

sub suchen
Dim Doc As Object
Dim TextFieldEnum As Object
Dim TextField As Object
Dim I As Integer
Doc = StarDesktop.CurrentComponent
TextFieldEnum = Doc.getTextFields.createEnumeration
While TextFieldEnum.hasMoreElements()
TextField = TextFieldEnum.nextElement()
db = Textfield.getTextFieldMaster.DataBaseName
If TextField.supportsService("com.sun.star.text.TextField.Database") Then
   if Left(TextField.Content,1) = "<" Then
         Msgbox "Das Datenfeld " & TextField.Content & " hat keinen Wert" & CHR(13) & CHR(13) & _
         "der Name der Datenbank ist: " & db
      Else
         MsgBox "Feld hat Wert: " & TextField.Content & CHR(13) & CHR(13) & _
         "der Name der Datenbank ist: " & db
   End If
End If
Wend
end sub
1.- den Namen der angemeldeten Datenbank ( für das jeweilige Dokument )
mir ist nicht klar wie man (ob man) explizit eine Datenbank für das Dokument festsetzt (festsetzen kann), wenn keine Daten (Datenfelder) der Datenbank in Dokument benutzt werden.

Gruß
Stephan
Stefan -sjh-
*
Beiträge: 15
Registriert: So, 22.08.2004 12:19

Beitrag von Stefan -sjh- »

Hallo Stephan,

erst mal schönen Dank für Hilfe + den Lösungsansatz : Kann man ja so machen, Abfrage nach dem "<" und dann den Inhalt auslesen. Müßte doch aber auch über die definierten Feldnamen gehen, oder ? -

Aber wie auch immer : das Makro bricht ab in der Zeile

db = Textfield.getTextFieldMaster.DataBaseName

mit der Fehlermeldung "Eigenschaft oder Methode nicht gefunden",
wobei es egal ist, ob die Feldinhalte bereits von der Tabelle übernommen worden sind oder nicht.

Weißt Du Rat ?

DAnke, Stefan
- per aspera ad astra -
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Beitrag von Stephan »

Aber wie auch immer : das Makro bricht ab in der Zeile
db = Textfield.getTextFieldMaster.DataBaseName
Ja, mein Code ist schlampig weil ich zum Testen nur Datenbankfelder im Dokument hatte und diese Zuweisung nur funktioniert wenn sie sich auf ein solches Feld bezieht, sie muß also hinter der Prüfung auf ein Datenbankfeld stehen (wenn diese Prüfung erfolgreich war):

Code: Alles auswählen

...
If TextField.supportsService("com.sun.star.text.TextField.Database") Then
	db = Textfield.getTextFieldMaster.DataBaseName
...
Müßte doch aber auch über die definierten Feldnamen gehen, oder ? -
Wie denn? Der Feldname ist IMMER vorhanden egal ob das Feld einen zugeordneten Wert hat oder nicht, nur steht ebend der Feldname (automatisch) im Dokument wenn das entsprechende Feld im Datensatz leer ist. Ich kann aus dem Dokument nur TextField.Content auslesen und ist für den aktuellen Datensatz ein Wert vorhanden, steht der da und wenn nicht dann der Feldname. Selbst wenn ich den Feldnamen unabhängig ermitteln würde ist das einzige Kennzeichen das da Feld einen Inhalt enthält nur der das das was dasteht kein Feldname ist. (Deine Aufgabe war ausdrücklich auszulesen was tatsächlich im Dokument steht und NICHT was in der zugehörigen Datenbank steht! Ist die Datenbank nämlich bearbeitet worden können Dokumentinhalt und Inhalt der Datenbank durchaus verschieden sein, so die Felder nicht aktualisiert wurden.) OK ich räume ein das wenn Deine Feldinhalte auch mit "<" beginnen ein Problem entsteht, aber ist denn mit solchen Feldinhalten wirklich zu rechnen?

Gruß
Stephan
Antworten