Makro zum Löschen von definierten Feldinhalten

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Makro zum Löschen von definierten Feldinhalten

Re: Makro zum Löschen von definierten Feldinhalten

von gogo » Fr, 12.11.2010 15:33

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

Re: Makro zum Löschen von definierten Feldinhalten

von Uwe.lü » Fr, 12.11.2010 14:13

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

Re: Makro zum Löschen von definierten Feldinhalten

von gogo » Fr, 12.11.2010 11:45

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

Re: Makro zum Löschen von definierten Feldinhalten

von Uwe.lü » Fr, 12.11.2010 10:05

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

Re: Makro zum Löschen von definierten Feldinhalten

von gogo » Do, 11.11.2010 10:39

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

von Uwe.lü » Do, 11.11.2010 08:24

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

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

von DPunch » Di, 09.11.2010 17:18

Nein, leider nicht.
Ein Ausführbares Makro wäre da wohl der einzige kürzere Weg.

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

von Uwe.lü » Di, 09.11.2010 17:09

@DPunsch: Kann man diesen SQL-Befehl in einer ausführbaren Abfrage abspeichern?

Re: Makro zum Löschen von definierten Feldinhalten

von Uwe.lü » Di, 09.11.2010 16:40

Code: Alles auswählen

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

Code: Alles auswählen

1: Befehl erfolgreich ausgeführt
Vielen Dank DPunch

Re: Makro zum Löschen von definierten Feldinhalten

von DPunch » Di, 09.11.2010 16:36

Code: Alles auswählen

UPDATE "DBNuLief" SET "Angebot vom" = NULL, "Abschreiben" = FALSE

Re: Makro zum Löschen von definierten Feldinhalten

von Uwe.lü » Di, 09.11.2010 16:34

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

von DPunch » Di, 09.11.2010 16:30

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

von Uwe.lü » Di, 09.11.2010 16:25

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

von DPunch » Di, 09.11.2010 14:58

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.

Makro zum Löschen von definierten Feldinhalten

von Uwe.lü » Di, 09.11.2010 14:46

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

Nach oben