Datenbanken + Inhalt von Feldnamen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Datenbanken + Inhalt von Feldnamen

von Stephan » Mo, 30.08.2004 17:58

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

von Stefan -sjh- » So, 29.08.2004 21:36

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

von Stephan » Sa, 28.08.2004 20:35

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

Datenbanken + Inhalt von Feldnamen

von Stefan -sjh- » Sa, 28.08.2004 15:41

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

Nach oben