Wenn diese Aktualisierung öfter ausgeführt werden soll, dann bietet sich wirklich ein Makro an.
Die SQL-Syntax ist von der verwendeten Datenbank-
engine abhängig.
Meine Glaskugel sagt: "
die interne HSQLDB Datenbank (sonst stünde dort ein DBMS)"
Dann birgt Deine Abfrage ein kleines Problem: es fehlen bei HSQLDB noch SQL-Funktionen zum Rechnen mit einem DATE Feld.
Das wird also das Makro erledigen müssen.
Der Zugriff auf einen Datenbestand in einem Base-Dokument geht mit den Standard-Anweisungen hierzu (Du musst an der gekennzeichneten Stelle den Inhalt der Variablen
sDatenQuelle ändern
Wie Makros zu installieren (oder auch aufzurufen) sind, steht im Wiki, siehe:
Makros installieren
Code: Alles auswählen
Sub updateHSQLDB
' 2006-08-21 SELECT Version
' 2008-03-12 UPDATE Version für de.16482
' Zugriff auf HSQLDB Daten in einem geschlossenen Dokument
' >>>
' >>> NAME DER REGISTRIERTEN DATENQUELLE HIER ÄNDERN
' >>>
sDatenQuelle = "hsql_copyTo"
' >>>
' >>>
' >>>
' Kontext holen
oDatenbankKontext = _
createUnoService( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
oDatenquelle = _
oDatenbankKontext.getByName( sDatenQuelle )
' Verbindung zur DB herstellen
' interne HSQLDB
oVerbindung = _
oDatenquelle.getConnection( "" , "")
' Statement erzeugen
oStatement = _
oVerbindung.createStatement
' Datum berechnen
sISODatum = _
cDateToISO( date() - 60 )
' Vergleichsdatum aufbereiten
sVergleichDatum = _
"'" & _
LEFT( sISODatum , 4 ) & "-" & _
MID( sISODatum, 5, 2 ) & "-" & _
RIGHT( sISODatum , 2 ) & "'"
' Abfrage
sSQL = _
" UPDATE ""tblAnfragen"" " & _
" SET ""tblAnfragen"".""Name"" = 'x', " & _
" ""tblAnfragen"".""Vorname"" = 'y' " & _
" WHERE ( ""tblAnfragen"".""Eingang"" " & _
" >= CONVERT( " & sVergleichDatum & ", 'DATE') ) ; "
' Abfrage absetzen
oResultSet = _
oStatement.executeQuery( sSQL )
End Sub
Das Makro könntest Du auch ohne Formular laufen lassen, um die Aktualisierung zu erreichen.
Aus Deinem Formular kannst Du es bei einem Ereignis aufrufen.
Kommst Du damit zurecht?
Wenn diese Aktualisierung öfter ausgeführt werden soll, dann bietet sich wirklich ein Makro an.
Die SQL-Syntax ist von der verwendeten Datenbank-[i]engine[/i] abhängig.
Meine Glaskugel sagt: "[color=#8040BF]die interne HSQLDB Datenbank (sonst stünde dort ein DBMS)[/color]"
Dann birgt Deine Abfrage ein kleines Problem: es fehlen bei HSQLDB noch SQL-Funktionen zum Rechnen mit einem DATE Feld.
Das wird also das Makro erledigen müssen.
Der Zugriff auf einen Datenbestand in einem Base-Dokument geht mit den Standard-Anweisungen hierzu (Du musst an der gekennzeichneten Stelle den Inhalt der Variablen [b]sDatenQuelle[/b] ändern
Wie Makros zu installieren (oder auch aufzurufen) sind, steht im Wiki, siehe: [b][url=http://www.ooowiki.de/MakrosInstallieren]Makros installieren[/url][/b]
[code]Sub updateHSQLDB
' 2006-08-21 SELECT Version
' 2008-03-12 UPDATE Version für de.16482
' Zugriff auf HSQLDB Daten in einem geschlossenen Dokument
' >>>
' >>> NAME DER REGISTRIERTEN DATENQUELLE HIER ÄNDERN
' >>>
sDatenQuelle = "hsql_copyTo"
' >>>
' >>>
' >>>
' Kontext holen
oDatenbankKontext = _
createUnoService( "com.sun.star.sdb.DatabaseContext" )
' Datenquelle auswählen
oDatenquelle = _
oDatenbankKontext.getByName( sDatenQuelle )
' Verbindung zur DB herstellen
' interne HSQLDB
oVerbindung = _
oDatenquelle.getConnection( "" , "")
' Statement erzeugen
oStatement = _
oVerbindung.createStatement
' Datum berechnen
sISODatum = _
cDateToISO( date() - 60 )
' Vergleichsdatum aufbereiten
sVergleichDatum = _
"'" & _
LEFT( sISODatum , 4 ) & "-" & _
MID( sISODatum, 5, 2 ) & "-" & _
RIGHT( sISODatum , 2 ) & "'"
' Abfrage
sSQL = _
" UPDATE ""tblAnfragen"" " & _
" SET ""tblAnfragen"".""Name"" = 'x', " & _
" ""tblAnfragen"".""Vorname"" = 'y' " & _
" WHERE ( ""tblAnfragen"".""Eingang"" " & _
" >= CONVERT( " & sVergleichDatum & ", 'DATE') ) ; "
' Abfrage absetzen
oResultSet = _
oStatement.executeQuery( sSQL )
End Sub[/code]
Das Makro könntest Du auch ohne Formular laufen lassen, um die Aktualisierung zu erreichen.
Aus Deinem Formular kannst Du es bei einem Ereignis aufrufen.
Kommst Du damit zurecht?