Seite 1 von 1
Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 14:46
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
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 14:58
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.
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 16:25
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?
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 16:30
von DPunch
Aloha
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
Verfasst: Di, 09.11.2010 16:34
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.
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 16:36
von DPunch
Code: Alles auswählen
UPDATE "DBNuLief" SET "Angebot vom" = NULL, "Abschreiben" = FALSE
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 16:40
von Uwe.lü
Code: Alles auswählen
UPDATE "DBNuLief" SET "Angebot_vom" = NULL, "Abschreiben" = FALSE
Vielen Dank DPunch
Re: Gelöst! Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 17:09
von Uwe.lü
@DPunsch: Kann man diesen SQL-Befehl in einer ausführbaren Abfrage abspeichern?
Re: Gelöst! Makro zum Löschen von definierten Feldinhalten
Verfasst: Di, 09.11.2010 17:18
von DPunch
Nein, leider nicht.
Ein Ausführbares Makro wäre da wohl der einzige kürzere Weg.
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Do, 11.11.2010 08:24
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
Ich gehe davon aus, das auch die nächste Zeile so nicht funktionieren wird. Ist das ein Rechte-Problem?
LG Uwe
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Do, 11.11.2010 10:39
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
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Fr, 12.11.2010 10:05
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
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
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Fr, 12.11.2010 11:45
von gogo
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
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Fr, 12.11.2010 14:13
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:
Der Eintrag im Makro gilt doch nur für
Re: Makro zum Löschen von definierten Feldinhalten
Verfasst: Fr, 12.11.2010 15:33
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