Datenbankfeld bei jedem Zugriff hochzählen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

retrofreak
Beiträge: 4
Registriert: Di, 12.08.2008 11:52

Re: Datenbankfeld bei jedem Zugriff hochzählen

Beitrag von retrofreak »

Nachtrag... Jetzt steht da "Gast", obwohl ich mich registriert habe - Aber veröffentlicht wurde der Beitrag ja trotzdem. Ich hoffe das klappt so. Gruß nochmal, Retrofreak


Ich hab jetzt einen Ansatz :) Der sieht so aus:

Code: Alles auswählen

Sub Main

	IncLaufendeNummer

End Sub

Sub IncLaufendeNummer
    oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
    oDatenquelle = oDatenbankKontext.getByName( "Adressdatenbank" )
    oVerbindung = oDatenquelle.getConnection( "" , "" )
    oStatement = oVerbindung.createStatement
    sSQL = " UPDATE ""Konfiguration"" SET ""Inhalt"" = ""Inhalt"" + 1 WHERE ""Variable"" = LaufendeNummer'"
    oStatement.executeUpdate( sSQL )
End Sub

Ist für mich schon mal ein Ansatz, wie man überhaupt per Macro eine DB Connection aufbaut und SQL Ausführen kann. Soweit so gut.
Aber wie mache ich es jetzt, dass dieses Macro bei jedem Druck eines Serienbriefes aufgerufen und Ausgeführt wird?
Hmmm.. Da find ich nix.

Für jeden Hinweis dankbar, Retrofreak
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Datenbankfeld bei jedem Zugriff hochzählen

Beitrag von pmoegenb »

Hallo Retrofreak,

probiers mal über Extras/Anpassen.../Ereignisse.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
retrofreak
Beiträge: 4
Registriert: Di, 12.08.2008 11:52

Re: Datenbankfeld bei jedem Zugriff hochzählen

Beitrag von retrofreak »

pmoegenb hat geschrieben:Hallo Retrofreak,
probiers mal über Extras/Anpassen.../Ereignisse.
Ah! Danke,
das ist schon mal ein sehr guter Tipp. Jetzt zählt er mir zwar die Nummer auch dann hoch, wenn ich ein anderes Dokument drucke, welches nichts mit den Serienbriefen zu tun hat, aber das dürfte ja irgendwie zu verhindern sein. Habe leider heute keine Zeit mehr das zu erforschen.

Außerdem habe ich jetzt noch das Problem die Nummer im Dokument auszugeben. (So dass sie mit gedruckt wird). Ich habe eine Abfrage erstellt, die mir den aktuellen Wert des Zähler-Feldes liefert.

Code: Alles auswählen

SELECT "Konfiguration"."Variable" AS "Variable", "Konfiguration"."Inhalt" AS "Inhalt" FROM "Konfiguration" AS "Konfiguration" WHERE ( "Konfiguration"."Variable" = 'LaufendeNummer' ) 
Diese soll unabhängig vom den restlichen Serienbriefdaten (Die Adressen, die aus einer anderen Abfrage bzw Tabelle kommen) im Briefkopf gedruckt werden.

Irgendwie klappt das nicht. Entweder er druckt mir die Serienbriefadressen oder nichts. Die Nummer (Die habe ich aus dem Datenquellenfeld (F4 gedrückt) der Abfrage in den Briefkopf gesetzt - genauso wie Name, Adresse usw.) - Wenn ich als Quelle die Abfrage der Adressliste angebe druckt er so wenigstens wieder die Adressen, wenn ich als Quelle direkt die Tabelle mit den Adressen nutze kommt gar nichts mehr sobald ich das Feld aus der Abfrage oben dem Seitentext hinzufüge. Wenn ichs weg lasse klappts mit Tabelle oder Abfrage gleichermaßen.

Ich fürchte ich habs zu verwirrend beschrieben... Aber ich bin selbst verwirrt.

Schönen Gruß,
Retrofreak
Antworten