Makro zum Löschen von definierten Feldinhalten

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

Hallo, mal wieder eine Frage.

Ich habe eine Base - Datenbank mit vielen Feldern, so z. B. Abschreiben [ja] und Datum [xx.yy.zzzz]. Diese Felder sind eigentlich leer. Jedoch um bestimmte Serienbriefe zu drucken werden dort Daten eingegeben. Nun meine Frage: Wie bekomme ich am galantestes die Spalten "Abschreiben" und "Datum" wieder leer.

Zur Zeit gehe ich so vor. Ich Sortiere nach Feld "Datum" = Nicht leer und lösche dann per Hand erst die Haken im Feld "Abschreiben" und danach die Einträge in der Spalte "Datum".

So oder so ähnlich muss das Makro aussehen, aber wie?

Uwe
Zuletzt geändert von Uwe.lü am Do, 11.11.2010 08:15, insgesamt 2-mal geändert.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von DPunch »

Aloha

In der Base-Oberfläche über "Extras" -> "SQL...."
Dort als Statement

Code: Alles auswählen

UPDATE "meineTabelle" SET "Datum" = NULL, "Abschreiben" = FALSE
und ausführen.
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

Danke für die schnelle Antwort:
UPDATE DBNuLief SET Angebot vom = NULL, Abschreiben = FALSE
bringt als Ausgabe
1: Table not found in statement [UPDATE DBNuLief]
Kann das damit zusammenhängen, das die Datenbank den gleichen Namen hat wie die Tabelle?
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von DPunch »

Aloha

Setz mal Tabellen- und Spaltennamen in Anführungszeichen.
Und verwende niemals Leerzeichen in Spalten- oder Tabellennamen. Absolutes no-go ;)
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

dann Kommt:
Unexpected token: Angebot vom in statement [Update "DBNuLief" SET "Abschreiben" = false "Angebot vom"]
und die Tabelle/Spalten werden gelb markiert, vorher grün.
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von DPunch »

Code: Alles auswählen

UPDATE "DBNuLief" SET "Angebot vom" = NULL, "Abschreiben" = FALSE
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

Code: Alles auswählen

UPDATE "DBNuLief" SET "Angebot_vom" = NULL, "Abschreiben" = FALSE

Code: Alles auswählen

1: Befehl erfolgreich ausgeführt
Vielen Dank DPunch
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Gelöst! Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

@DPunsch: Kann man diesen SQL-Befehl in einer ausführbaren Abfrage abspeichern?
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Gelöst! Makro zum Löschen von definierten Feldinhalten

Beitrag von DPunch »

Nein, leider nicht.
Ein Ausführbares Makro wäre da wohl der einzige kürzere Weg.
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

Hallo DPunch,

ich habe nun aus dem SQL - Befehl ein Makro erstellt

Code: Alles auswählen

Sub Main

UPDATE "DBNuLief"
SET Angebot_vom = NULL
Abschreiben = FALSE

End Sub
und den Spaltennamen meiner Tabelle von "Angebot vom" in Angebot_vom" geändert. Dennoch will das Makro nicht recht. Es bricht ab mit der Meldung

Code: Alles auswählen

Kein Zugrif auf Objekt.
Falsche Verwendung eines Objekts.
und markiert ist diese Zeile des Makros

Code: Alles auswählen

SET Angebot_vom = NULL
Ich gehe davon aus, das auch die nächste Zeile so nicht funktionieren wird. Ist das ein Rechte-Problem?
LG Uwe
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von gogo »

nein, ein Syntaxproblem ;)

Code: Alles auswählen

Sub Angebot_u_Abschreiben_auf_NULL_setzen

DBContext=createUnoService("com.sun.star.sdb.DatabaseContext")

DataSource=DBContext.getByName("NAME_DEINER_DATENBANK_KLARTEXT_OHNE_PunktODB")
ConnectToDB=DataSource.GetConnection ("","")

SQLResult=createUnoService("com.sun.star.sdb.RowSet")

SQLQuery = "UPDATE ""DBNuLief"" SET ""Angebot_vom"" = NULL ""Abschreiben"" = FALSE"

Statement=ConnectToDB.createStatement
Statement.executeUpdate(SQLQuery)

End Sub
Achtung auf die doppeltendoppelten Anführungszeichen in Deiner SQL-Query!

NAME_DEINER_DATENBANK_KLARTEXT_OHNE_PunktODB musst Du mit dem Namen Deiner registierten DB ersetzen.
g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

gogo, Danke für die Antwort,
hab so wie beschrieben mein Makro geändert, der Name meine Datenbank ist DBNuLief.odb, also

Code: Alles auswählen

DataSource=DBContext.getByName("DBNULIEFODB")
ohne Punkt eingesetzt.
Fehler:
BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type: com.sun.star.container. NoSuchElementExceptionMessage: DBNULIEFODB
Muss ich meine DB noch irgendwo anmelden/eintragen?

Uwe
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von gogo »

Wenn Deine Datenbank z.B. so gespeichert ist:

c:\Datenbanken\DBNulief.odb

dann soll diese Codezeile so aussehen:

Code: Alles auswählen

DataSource=DBContext.getByName("DBNulief")
Ob Deine Datenbank registriert ist kannst Du einfach feststellen: OO-Writer öffnen und F4 drücken. Wenn Du da Deine Datenbank siehst ist sie registriert, oder Du öffnest Extras/Optionen - im linken Teil des Fensters gibt's einen Eintrag der heisst "OpenOffice.org Base" und da drin wieder einen der heisst "Datenbanken". Da werden Dir dann im rechten Teil des Fensters die registrierten Datenbanken angezeigt. Ggf kannst Du da auch Deine Datenbank hinzufügen falls sie noch nicht eingetragen ist.

Die 'Registrierung' der Datenbank ist eine lokale Anmeldung der Datenbank an Deinem System damit es weiss welche Datenbanken zur Verfügung stehen - es hat nichts mit einer Registrierung im Internet oder so zu tun.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Uwe.lü
**
Beiträge: 24
Registriert: Fr, 19.01.2007 22:33
Wohnort: Markkleeberg

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von Uwe.lü »

Hallo gogo,

ich glaub, ich muss etwas aufklären. Das Laufwerk C:\ gibt es bei mir nicht, nur virtuell, ich arbeite mit OpenSuse 11.3 und der Pfad der DB lautet:

Code: Alles auswählen

/home/uwe/dat/
Der Eintrag im Makro gilt doch nur für

Code: Alles auswählen

c:\Datenbanken\DBNulief.odb
gogo
*****
Beiträge: 207
Registriert: Mi, 10.11.2010 13:11

Re: Makro zum Löschen von definierten Feldinhalten

Beitrag von gogo »

Pfad ist schnurz :) hier geht's nur um den Registrierungsnamen
Du öffnest Extras/Optionen - im linken Teil des Fensters gibt's einen Eintrag der heisst "OpenOffice.org Base" und da drin wieder einen der heisst "Datenbanken". Da werden Dir dann im rechten Teil des Fensters die registrierten Datenbanken angezeigt. Ggf kannst Du da auch Deine Datenbank hinzufügen falls sie noch nicht eingetragen ist.
In der Liste der registrierten Datenbanken steht links der Registrierungsname, diesen musst Du verwenden. Der Registrierungsname ist blos bei automatisch registrierten Datenbanken gleich dem Dateinamen (ohne Pfad und ohne Endung), das macht der Wizard wenn Du die Datenbank erstellst und der Wizard die Datenbank registriert.
Du kannst im oben beschriebenen Fenster den Registrierungsnamen der Datenbank übrigens umbenennen wie's Dir passt, Pfad und Dateiname bleiben dabei gleich, nur der Registrierungsname ändert sich. Und diesen verwendest Du beim Erstellen der Verbindung, damit Base weiss in welcher registrierten Datenbank es die Tabelle "DBNuLief" suchen soll.

g
g
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Antworten