Makro zum Löschen von definierten Feldinhalten
Moderator: Moderatoren
Makro zum Löschen von definierten Feldinhalten
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
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.
Re: Makro zum Löschen von definierten Feldinhalten
Aloha
In der Base-Oberfläche über "Extras" -> "SQL...."
Dort als Statement
und ausführen.
In der Base-Oberfläche über "Extras" -> "SQL...."
Dort als Statement
Code: Alles auswählen
UPDATE "meineTabelle" SET "Datum" = NULL, "Abschreiben" = FALSE
Re: Makro zum Löschen von definierten Feldinhalten
Danke für die schnelle Antwort:
bringt als AusgabeUPDATE DBNuLief SET Angebot vom = NULL, Abschreiben = FALSE
Kann das damit zusammenhängen, das die Datenbank den gleichen Namen hat wie die Tabelle?1: Table not found in statement [UPDATE DBNuLief]
Re: Makro zum Löschen von definierten Feldinhalten
Aloha
Setz mal Tabellen- und Spaltennamen in Anführungszeichen.
Und verwende niemals Leerzeichen in Spalten- oder Tabellennamen. Absolutes no-go
Setz mal Tabellen- und Spaltennamen in Anführungszeichen.
Und verwende niemals Leerzeichen in Spalten- oder Tabellennamen. Absolutes no-go

Re: Makro zum Löschen von definierten Feldinhalten
dann Kommt:
und die Tabelle/Spalten werden gelb markiert, vorher grün.Unexpected token: Angebot vom in statement [Update "DBNuLief" SET "Abschreiben" = false "Angebot vom"]
Re: Makro zum Löschen von definierten Feldinhalten
Code: Alles auswählen
UPDATE "DBNuLief" SET "Angebot vom" = NULL, "Abschreiben" = FALSE
Re: Makro zum Löschen von definierten Feldinhalten
Code: Alles auswählen
UPDATE "DBNuLief" SET "Angebot_vom" = NULL, "Abschreiben" = FALSE
Code: Alles auswählen
1: Befehl erfolgreich ausgeführt
Re: Gelöst! Makro zum Löschen von definierten Feldinhalten
@DPunsch: Kann man diesen SQL-Befehl in einer ausführbaren Abfrage abspeichern?
Re: Gelöst! Makro zum Löschen von definierten Feldinhalten
Nein, leider nicht.
Ein Ausführbares Makro wäre da wohl der einzige kürzere Weg.
Ein Ausführbares Makro wäre da wohl der einzige kürzere Weg.
Re: Makro zum Löschen von definierten Feldinhalten
Hallo DPunch,
ich habe nun aus dem SQL - Befehl ein Makro erstellt
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 und markiert ist diese Zeile des Makros
Ich gehe davon aus, das auch die nächste Zeile so nicht funktionieren wird. Ist das ein Rechte-Problem?
LG Uwe
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
Code: Alles auswählen
Kein Zugrif auf Objekt.
Falsche Verwendung eines Objekts.
Code: Alles auswählen
SET Angebot_vom = NULL
LG Uwe
Re: Makro zum Löschen von definierten Feldinhalten
nein, ein Syntaxproblem 
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

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
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
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Re: Makro zum Löschen von definierten Feldinhalten
gogo, Danke für die Antwort,
hab so wie beschrieben mein Makro geändert, der Name meine Datenbank ist DBNuLief.odb, also ohne Punkt eingesetzt.
Fehler:
Uwe
hab so wie beschrieben mein Makro geändert, der Name meine Datenbank ist DBNuLief.odb, also
Code: Alles auswählen
DataSource=DBContext.getByName("DBNULIEFODB")
Fehler:
Muss ich meine DB noch irgendwo anmelden/eintragen?BASIC-Laufzeitfehler.
Es ist eine Exception aufgetreten
Type: com.sun.star.container. NoSuchElementExceptionMessage: DBNULIEFODB
Uwe
Re: Makro zum Löschen von definierten Feldinhalten
Wenn Deine Datenbank z.B. so gespeichert ist:
c:\Datenbanken\DBNulief.odb
dann soll diese Codezeile so aussehen:
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
c:\Datenbanken\DBNulief.odb
dann soll diese Codezeile so aussehen:
Code: Alles auswählen
DataSource=DBContext.getByName("DBNulief")
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
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5
Re: Makro zum Löschen von definierten Feldinhalten
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:
Der Eintrag im Makro gilt doch nur für
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/
Code: Alles auswählen
c:\Datenbanken\DBNulief.odb
Re: Makro zum Löschen von definierten Feldinhalten
Pfad ist schnurz
hier geht's nur um den Registrierungsnamen
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

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 ö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.
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
LucidLynx/WinXP LibreOffice v3.3.2 ab 03/12 v3.3.2 & v3.4.5