Tabellenspalte löschen
Moderator: Moderatoren
Tabellenspalte löschen
Hallo zusammen,
ich habe in einem Formular einen Button eingefügt der mit einem Makro hinterlegt werden soll.
Und zwar soll das Makro eine die Werte einer Spalte aus einer Tabelle löschen bzw. 0 setzen.
Zu allem Übel habe ich leider nicht wirklich viel Ahnung von Makros.
Bin also über jede Hilfe dankbar.
Mein Ansatz sieht so aus:
update tabelle set spalte = 0
aber es kommt immer ein Fehler.
ich habe in einem Formular einen Button eingefügt der mit einem Makro hinterlegt werden soll.
Und zwar soll das Makro eine die Werte einer Spalte aus einer Tabelle löschen bzw. 0 setzen.
Zu allem Übel habe ich leider nicht wirklich viel Ahnung von Makros.
Bin also über jede Hilfe dankbar.
Mein Ansatz sieht so aus:
update tabelle set spalte = 0
aber es kommt immer ein Fehler.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
...zeige uns bitte mehr Code... und beschreibe die Fehlermeldung genauer.
Nach dem ersten Anschein fehlen Dir die quotes um Tabellenname und Spaltename (siehe SQL-Beispiele in diesem Forumsbereich)
Nach dem ersten Anschein fehlen Dir die quotes um Tabellenname und Spaltename (siehe SQL-Beispiele in diesem Forumsbereich)
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)
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)
Re: Tabellenspalte löschen
Also alles was ich bisher zusammen bekommen habe ist das hier.
Private Sub CommandButton1_Click()
update tabelle set spalte = 0
End Sub
Der Fehler der auftaucht bezieht sich auf die Zeile mit update tabelle....
und ist ein basic Syntaxfehler.
Hab aber leider keine Ahnung wo und ob ich Hochkommas und oder Klammern setzen muss.
Private Sub CommandButton1_Click()
update tabelle set spalte = 0
End Sub
Der Fehler der auftaucht bezieht sich auf die Zeile mit update tabelle....
und ist ein basic Syntaxfehler.
Hab aber leider keine Ahnung wo und ob ich Hochkommas und oder Klammern setzen muss.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
Du musst wohl erst mal einen Datenbank-Kontext herstellen und den SQL-Befehl aufbereiten.
Beispiele hier im Forum, oder bei Andrew im Datenbank-Dokument, über: http://www.pitonyak.org
Beispiele hier im Forum, oder bei Andrew im Datenbank-Dokument, über: http://www.pitonyak.org
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)
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)
Re: Tabellenspalte löschen
Morgen,
hab gestern noch mal rumprobiert aber nicht wirklich was auf die Reihe bekommen.
Im Forum und auf deinem Link bin ich auch nicht wirklich fündig geworden.
Wäre echt dankbar wenn du mir noch mal weiter helfen könntest.
hab gestern noch mal rumprobiert aber nicht wirklich was auf die Reihe bekommen.
Im Forum und auf deinem Link bin ich auch nicht wirklich fündig geworden.
Wäre echt dankbar wenn du mir noch mal weiter helfen könntest.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
wie: nicht fündig geworden? In Andrews Base-Dokument sind doch massig Beispiele...?
Habe gerade nur das Beispiel vorliegen, wie per Makro eine in BASE vorhandene Abfrage ausgeführt wird:UPDATE-Abfragen bedürfen einer anderen Syntax - habe aber dafür gerade kein Beispiel zur Hand.
Und hier auf der Arbeit brennt heute mal wieder die Luft .... :-/
Habe gerade nur das Beispiel vorliegen, wie per Makro eine in BASE vorhandene Abfrage ausgeführt wird:
Code: Alles auswählen
' Kontext holen
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DataBaseContext" )
' Datenquelle auswählen
' DBName: Dein Name der registrierten Datenquelle
oDatenquelle = oDatenbankKontext.getByName( "DBName" )
sQuery = "rechnung"
' Abfragen
oAbfragen = oDatenquelle.QueryDefinitions
' gewünschte Abfrage vorhanden?
if ( oAbfragen.hasByName( sQuery) ) Then
' Abfrage holen
oAbfrage = oAbfragen.getByName( sQuery )
' SQL-Ausdruck von Abfrage entnehmen
sQuery = oAbfrage.Command
' Verbindung zur DB herstellen
oVerbindung = oDatenquelle.getConnection( ,)
' Statement erzeugen
oStatement = oVerbindung.createStatement
' Abfrage absetzen
oResultSet = oStatement.executeQuery( oAbfrage.Command )
Und hier auf der Arbeit brennt heute mal wieder die Luft .... :-/
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)
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)
Re: Tabellenspalte löschen
Morgen,
Hab noch mal nen bissl weiter probiert und mein code sieht jetzt so aus:
Sub SpaltenLoeschen()
UPDATE "Stückzahlen_2"
SET "Stückzahl" = [0]
END Sub
Allerdings gibt er mir bei meinem Spaltennamen(Stückzahl) immer noch einen Fehler aus. ("Kein Zugriff auf Objekt. Ungültige Objektreferenz").
Hab leider keine ahnung warum ihm das jetzt schon wieder nicht passt.
Hab noch mal nen bissl weiter probiert und mein code sieht jetzt so aus:
Sub SpaltenLoeschen()
UPDATE "Stückzahlen_2"
SET "Stückzahl" = [0]
END Sub
Allerdings gibt er mir bei meinem Spaltennamen(Stückzahl) immer noch einen Fehler aus. ("Kein Zugriff auf Objekt. Ungültige Objektreferenz").
Hab leider keine ahnung warum ihm das jetzt schon wieder nicht passt.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
* Du hast keinen Datenbankkontext erzeugt.
* Du hast kein statement erzeugt
* Du hast die SQL-Anweisung nicht korrekt beschrieben
* Du hast kein statement erzeugt
* Du hast die SQL-Anweisung nicht korrekt beschrieben
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)
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)
Re: Tabellenspalte löschen
hallo nochmal,
hab das ganze noch mal überarbeitet und hoffe einfach mal das mir noch mal weiter hilfst (..Bitte..
).
Sub zurueck
Dim DatenbankKontext as Object
Dim Datenquelle as Object
Dim Verbindung as Object
Dim Statement as Object
Dim Resultset as Object
DatenbankKontext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatenbankKontext.getByName("Datenbank") 'Datenbank")
Verbindung = Datenquelle.getConnection( "", "" )
Statement = Verbindung.createStatement()
Resultset = Statement.executeQuery("SELECT Stueckzahl FROM Stueckzahlen") 'Datenbank")
Also so sieht der Anfang aus.
Darunter wollte ich dann die Update anweisung stellen, aber schon in diesem Teil kommt ein Fehler(bei Select...) das er die Tabelle nicht finden kann.
hab das ganze noch mal überarbeitet und hoffe einfach mal das mir noch mal weiter hilfst (..Bitte..

Sub zurueck
Dim DatenbankKontext as Object
Dim Datenquelle as Object
Dim Verbindung as Object
Dim Statement as Object
Dim Resultset as Object
DatenbankKontext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatenbankKontext.getByName("Datenbank") 'Datenbank")
Verbindung = Datenquelle.getConnection( "", "" )
Statement = Verbindung.createStatement()
Resultset = Statement.executeQuery("SELECT Stueckzahl FROM Stueckzahlen") 'Datenbank")
Also so sieht der Anfang aus.
Darunter wollte ich dann die Update anweisung stellen, aber schon in diesem Teil kommt ein Fehler(bei Select...) das er die Tabelle nicht finden kann.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
Quoting!
Hast Du Dir Andrews DataBase.odt geholt?
Code: Alles auswählen
sSQL = "SELECT" & CHR(34) & "Stueckzahl" & CHR(34) & " FROM " & CHR(34) & "Stueckzahlen" & CHR(34)
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)
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)
Re: Tabellenspalte löschen
Ja hab ich mir geholt und auch einiges nützliches gefunden aber den Fehler hab ich bis jetzt damit auch nicht wegbekommen. Mit deiner Anweisung hats jetzt aber prima geklappt.
Jetzt habe ich nur noch das problem mit der Update Anweisung.
Kann ich die direkt drunter setzen oder klappt das nicht, weil nämlich wieder der Fehler kommt,das Stueckzahl eine ungültige Objektreferenz ist.
Jetzt habe ich nur noch das problem mit der Update Anweisung.
Kann ich die direkt drunter setzen oder klappt das nicht, weil nämlich wieder der Fehler kommt,das Stueckzahl eine ungültige Objektreferenz ist.
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
Dein Code?Stancer hat geschrieben:Jetzt habe ich nur noch das problem mit der Update Anweisung.
Kann ich die direkt drunter setzen oder klappt das nicht, weil nämlich wieder der Fehler kommt,das Stueckzahl eine ungültige Objektreferenz ist.
bei Andrew:
Code: Alles auswählen
s = "update ""Numbers"" Set ""Number2""=1234567890123456789.1234 Where ID=3"
oStmt.executeQuery(s)
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)
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)
Re: Tabellenspalte löschen
Hey Winfried vielen Dank für deine Hilfe, aber ich glaub ich bin echt zu blöd dazu.
den ich nicht lösen kann.
Was muss ich denn noch verändern damit mein Code endlich funktioniert.
Hier noch mal der jetzige Stand:
Sub zurueck()
Dim DatenbankKontext as Object
Dim Datenquelle as Object
Dim Verbindung as Object
Dim Statement as Object
Dim Resultset as Object
DatenbankKontext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatenbankKontext.getByName("Datenbank") 'Datenbank")
Verbindung = Datenquelle.getConnection( "", "" )
Statement = Verbindung.createStatement()
sSQL = "SELECT" & CHR(34) & "Stueckzahl" & CHR(34) & " FROM " & CHR(34) & "Stueckzahlen" & CHR(34)
s ="update ""Stueckzahlen"" Set ""Stueckzahl""= 0"
oStmt.executeQuery(s)
end sub
Danke schon mal im Voraus
Diese Zeile wirft für mich mal wieder einen Fehler auf(Objektvariable nicht belegt),Stancer hat geschrieben:oStmt.executeQuery(s)
den ich nicht lösen kann.
Was muss ich denn noch verändern damit mein Code endlich funktioniert.

Hier noch mal der jetzige Stand:
Sub zurueck()
Dim DatenbankKontext as Object
Dim Datenquelle as Object
Dim Verbindung as Object
Dim Statement as Object
Dim Resultset as Object
DatenbankKontext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatenbankKontext.getByName("Datenbank") 'Datenbank")
Verbindung = Datenquelle.getConnection( "", "" )
Statement = Verbindung.createStatement()
sSQL = "SELECT" & CHR(34) & "Stueckzahl" & CHR(34) & " FROM " & CHR(34) & "Stueckzahlen" & CHR(34)
s ="update ""Stueckzahlen"" Set ""Stueckzahl""= 0"
oStmt.executeQuery(s)
end sub
Danke schon mal im Voraus
OpenOffice portable 2.1, Win XP
- komma4
- ********
- Beiträge: 5332
- Registriert: Mi, 03.05.2006 23:29
- Wohnort: Chon Buri Thailand Asia
- Kontaktdaten:
Re: Tabellenspalte löschen
Stancer,
ne - Du bist nicht zu blöd (nur etwas blind).
Das Beispiel von Andrew musst Du so anpassen, dass Du auch "Dein" statement-Objekt nimmst.
Geht es so?
P.S: Beim Posten von Code: die Anweisungen im Editor markieren und dann die Code-Schaltfläche am oberen Rand nutzen
ne - Du bist nicht zu blöd (nur etwas blind).
Das Beispiel von Andrew musst Du so anpassen, dass Du auch "Dein" statement-Objekt nimmst.
Code: Alles auswählen
Sub zurueck()
Dim DatenbankKontext as Object
Dim Datenquelle as Object
Dim Verbindung as Object
Dim Statement as Object
Dim Resultset as Object
DatenbankKontext = createUnoService("com.sun.star.sdb.DatabaseContext")
Datenquelle = DatenbankKontext.getByName("Datenbank") 'Datenbank")
Verbindung = Datenquelle.getConnection( "", "" )
Statement = Verbindung.createStatement()
sSQL = "SELECT" & CHR(34) & "Stueckzahl" & CHR(34) & " FROM " & CHR(34) & "Stueckzahlen" & CHR(34)
s ="update ""Stueckzahlen"" Set ""Stueckzahl""= 0"
Statement.executeQuery(s)
end sub
P.S: Beim Posten von Code: die Anweisungen im Editor markieren und dann die Code-Schaltfläche am oberen Rand nutzen
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)
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)
Re: Tabellenspalte löschen
Das Statement objekt hatte ich auch an meins angepasst.
Der Fehler war danach auch weg aber als ich das Makro dann an den Button gebunden hatte und ihn betätigte
passierte gar nichts. Deshalb hab ich dann wieder die ursprüngliche Version reingeschrieben.
Fehlt vielleicht noch irgendwas?
Habs noch mal probiert und es funktioniert, allerdings erst wenn ich wenn ich das Formular schließe und wieder öffne.
Habe bereits einen anderen Button der das ganze aktualisiert. Das Problem ist aber, das in meinem Formular das Subformular(Tabelle Stückzahlen) an die Abfrage für die Produkte gebunden ist. Wenn ich nun die Spalte lösche und aktualisiere sind Haupt und Subformular leer und man kann keine Produkte mehr auswählen um die Stückzahl anzugeben.
Gibt es da eine Möglichkeit die Spalte im Formular zu löschen ohne das gesamte Dokument zu aktualisieren.
Der Fehler war danach auch weg aber als ich das Makro dann an den Button gebunden hatte und ihn betätigte
passierte gar nichts. Deshalb hab ich dann wieder die ursprüngliche Version reingeschrieben.
Fehlt vielleicht noch irgendwas?
Habs noch mal probiert und es funktioniert, allerdings erst wenn ich wenn ich das Formular schließe und wieder öffne.
Habe bereits einen anderen Button der das ganze aktualisiert. Das Problem ist aber, das in meinem Formular das Subformular(Tabelle Stückzahlen) an die Abfrage für die Produkte gebunden ist. Wenn ich nun die Spalte lösche und aktualisiere sind Haupt und Subformular leer und man kann keine Produkte mehr auswählen um die Stückzahl anzugeben.
Gibt es da eine Möglichkeit die Spalte im Formular zu löschen ohne das gesamte Dokument zu aktualisieren.
OpenOffice portable 2.1, Win XP