Aktualisierungsabfrage?

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

AhQ
*******
Beiträge: 1096
Registriert: Fr, 15.06.2007 11:03
Wohnort: Regensburg
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von AhQ »

Hallo disconektar,

ich hab jetzt Dein Problem nicht eingehend getestet, aber wenn Du den SQL-Code eh schon hast, dann mach Dir Doch einfach eine Abfrage und schreib den da rein?! Das findest Du bei den Abfragen unter "Abfrage in SQL-Ansicht erstellen". Da mußt Du nur noch rausfinden, welche Hochkommas Base wo haben will (bei mir kommen um jeden Tabellennamen normalerweise diese Akzente (`), in Where-Klauseln aber Hochkommas ( ' ) ), dann sollte sich das irgendwie machen lassen.

Viele Grüße
AhQ
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von komma4 »

...nun, "Abfragen" im entsprechenden Bereich einer Base-Datei erlauben nur SELECTs, keine INSERT oder UPDATE Anweisungen.

Letztere können aber über Extras>SQL... abgesetzt werden.


Hilft das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
AhQ
*******
Beiträge: 1096
Registriert: Fr, 15.06.2007 11:03
Wohnort: Regensburg
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von AhQ »

ok, das hab ich nicht gewußt (weil auch noch nie bebraucht).

Dann wird disconektar wohl um ein kleines Makro nicht drumrumkommen.

Das ist aber eher was für komma4 und die anderen, die sich damit auskennen...

AhQ
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von komma4 »

...geht ja auch -wie oben beschrieben- ohne Makro.

Speichern der SQL-Anweisung in einem Writer-Dokument, kopieren, Wechseln zu Base, Extras>SQL....
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von komma4 »

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?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von komma4 »

Ich wüsste nicht wie eine Access-Abfrage abgerufen werden kann.

Wo liegt Dein Verständnisproblem bei dem von mir geposteten Code?
Was funktioniert nicht wie gewünscht?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Aktualisierungsabfrage?

Beitrag von komma4 »

Nein, nein: so geht das nicht!

Eine BASE-Datei ist ein Container verschiedener Dokumente mit Verbindung zu einer Datenbank (auch zu einer eingebetteten HSQLDB).

Suchst Du in der OOo Hilfe nach Access findest Du u.a.:
http://wiki.services.openoffice.org/wiki/MSA-Base_Faq
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Antworten