Mehrere bestimmte Zeilen automatisch füllen lassen
Moderator: Moderatoren
-
- Beiträge: 9
- Registriert: Mi, 12.01.2011 00:22
Mehrere bestimmte Zeilen automatisch füllen lassen
Hallo an alle.
Ich suche schon ziemlich lange nach einer Lösung für mein Problem, aber bin nicht fündig geworden (Bücher, Google, Forensuche).
Ich habe eine Tabelle und darin sind verschiedene Gebiete nach Gruppen unterteilt (A,B,C,...). Manche Gruppen sollen einen gleichen Wert erhalten (z.B.). Ich will nun aber nicht jedes Mal einen SQL Befehl manuell eingeben und schon gar nicht jedes Mal für jedes Gebiet einzeln reinschreiben.
Ich hätte es gerne irgendwie hinbekommen, dass ich diese lange Liste entweder durch ein Makro, ein Kombinationsfeld oder sonst irgendwie mit einem bestimmten Wert füllen kann.
Bisher ging dies nur mit SQL und Where, aber ich würde es gerne mit einem Kombinationsfeld machen, da ich eine zweite Tabelle habe in der die festgelegte Anzahl drin steht. Den Wert in das Kombinationsfeld zu bekommen ist nicht schwer, aber den Wert auf bestimmte Zeilen einer Spalte in der Datenbank-Tabelle zu übernehmen dafür sehr. Welches wäre der beste, stabilste und auch einfachste Weg dies durchzuführen.
Danke im Voraus!
Ich suche schon ziemlich lange nach einer Lösung für mein Problem, aber bin nicht fündig geworden (Bücher, Google, Forensuche).
Ich habe eine Tabelle und darin sind verschiedene Gebiete nach Gruppen unterteilt (A,B,C,...). Manche Gruppen sollen einen gleichen Wert erhalten (z.B.). Ich will nun aber nicht jedes Mal einen SQL Befehl manuell eingeben und schon gar nicht jedes Mal für jedes Gebiet einzeln reinschreiben.
Ich hätte es gerne irgendwie hinbekommen, dass ich diese lange Liste entweder durch ein Makro, ein Kombinationsfeld oder sonst irgendwie mit einem bestimmten Wert füllen kann.
Bisher ging dies nur mit SQL und Where, aber ich würde es gerne mit einem Kombinationsfeld machen, da ich eine zweite Tabelle habe in der die festgelegte Anzahl drin steht. Den Wert in das Kombinationsfeld zu bekommen ist nicht schwer, aber den Wert auf bestimmte Zeilen einer Spalte in der Datenbank-Tabelle zu übernehmen dafür sehr. Welches wäre der beste, stabilste und auch einfachste Weg dies durchzuführen.
Danke im Voraus!
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
Deinen SQL-Text kennst Du ja,
Den Wert aus dem Kontrollfeld des Formulars bekommst Du mit
nun setzt Du Deinen SQL-Text zusammen und führst diesen dann aus.
so etwa:
g
Den Wert aus dem Kontrollfeld des Formulars bekommst Du mit
Code: Alles auswählen
dim sWert as String
oDoc = StarDesktop.CurrentComponent
oForm = oDoc.DrawPage.Forms.GetByIndex(0)
oFeld = oForm.getByName("Name des Kontrollfeldes wie es im Formularnavigator steht")
sWert = oFeld.text
so etwa:
Code: Alles auswählen
dim SQLTXT as string
SQLTXT = "Update ""DeinTabellenname"" set ""DeinFeldname = "" + sWert + " where ...
oStatement = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement
oResultSet = oStatement.executeUpdate( SQLTXT )
msgbox oResultSet & " Datensätze wurden verändert!"
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
-
- Beiträge: 9
- Registriert: Mi, 12.01.2011 00:22
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
Hi. Danke schon einmal für die schnelle Antwort.
Hab es ausprobiert, aber ich erhalte andauernd den Fehler "BASIC-Laufzeitfehler. Es ist eine Exception aufgetreten Type: com.sun.star.container.NoSuchElementException Message:.
Hab den Namen bei
oFeld = oForm.getByName("Name des Kontrollfeldes wie es im Formularnavigator steht")
den Namen geändert, das Makro gespeichert und an die Schaltfläche gehängt, aber immer der Fehler... Was mache ich falsch? Oder hab ich was vergessen beim Makro?
Danke
Hab es ausprobiert, aber ich erhalte andauernd den Fehler "BASIC-Laufzeitfehler. Es ist eine Exception aufgetreten Type: com.sun.star.container.NoSuchElementException Message:.
Hab den Namen bei
oFeld = oForm.getByName("Name des Kontrollfeldes wie es im Formularnavigator steht")
den Namen geändert, das Makro gespeichert und an die Schaltfläche gehängt, aber immer der Fehler... Was mache ich falsch? Oder hab ich was vergessen beim Makro?
Danke
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
in welcher Zeile tritt der Fehler denn auf?
g
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
-
- Beiträge: 9
- Registriert: Mi, 12.01.2011 00:22
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
In der Zeile die mit oFeld beginnt. Hab mehrfach überprüft, aber der Name ist richtig vom kombifeld.
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
Versuch mal das:
Wenn Du den richtigen Index (z.B. 2) weisst, kannst Du dann:
oFeld = oForm.getByName("Name des Kontrollfeldes wie es im Formularnavigator steht")
durch
oFeld = oForm.getByIndex(2)
ersetzen
g
Code: Alles auswählen
oDoc = StarDesktop.CurrentComponent
oForm = oDoc.DrawPage.Forms.GetByIndex(0)
on error goto RausDaAberSchnell
for n=0 to 1000
oControl=oForm.getByIndex(n)
myselect=oControl.name
msgbox "Index: " & n & " ergibt Kontrollfeld-Name: " & myselect
next n
on error goto 0
exit sub
RausDaAberSchnell:
msgbox "Index: " & n & " zu hoch! (exit Makro)"
Wenn Du den richtigen Index (z.B. 2) weisst, kannst Du dann:
oFeld = oForm.getByName("Name des Kontrollfeldes wie es im Formularnavigator steht")
durch
oFeld = oForm.getByIndex(2)
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
-
- Beiträge: 9
- Registriert: Mi, 12.01.2011 00:22
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
Hi
Hab den Befehl ausgeführt und den Index für das Kombinationsfeld erhalten. Soweit so gut. Nun zeigt er mir aber einen Fehler an bei +sWert+
Unexpected Token in Statement. Ich glaube er meint das + zeichen. Weil der Rest stimmt so (hoffe ich)
.
Stimmt es mit dem + Zeichen? hab es durch ' und & ersetzt aber half nix. Habe es weggelassen und bekam Fehler. Aber die Anbindung an das Feld klappt schon einmal
.
Noch mals Danke schön
Hab den Befehl ausgeführt und den Index für das Kombinationsfeld erhalten. Soweit so gut. Nun zeigt er mir aber einen Fehler an bei +sWert+
Unexpected Token in Statement. Ich glaube er meint das + zeichen. Weil der Rest stimmt so (hoffe ich)

Code: Alles auswählen
REM ***** BASIC *****
Sub EingabeBeilage1
dim sWert as String
oDoc = StarDesktop.CurrentComponent
oForm = oDoc.DrawPage.Forms.GetByIndex(0)
oFeld = oForm.getByIndex(4)
sWert = oFeld.text
dim SQLTXT as string
SQLTXT = "Update ""Datenbankname"" set ""Feldname"" = +sWert+"
oStatement = ThisDatabaseDocument.CurrentController.ActiveConnection.createStatement
oResultSet = oStatement.executeUpdate(SQLTXT)
msgbox oResultSet & " Datensätze wurden verändert!"
End Sub

Noch mals Danke schön
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
SQLTXT = "Update ""Datenbankname"" set ""Feldname"" = +sWert+"
kann nicht funktionieren, da die "+" in den String reinwandern und nicht der Wert von "sWert"!
Am besten mal den SQLTXT mit msgbox anzeigen lassen, dann weisst Du was ich meine.
Eine Zahl bindest Du folgendermaßen in einen String ein:
Die Zahl steht dann blank im String
Einen Text so:
Der Text steht dann als "Text" im String
oder so:
Der Text steht dann als 'Text' im String
Am besten mal den SQLTXT mit msgbox anzeigen lassen bevor Du das Update laufen lässt. Wenn der Text den Du in der MsgBox-Message siehst exakt so eingetippt unter "Extras/SQL" funktioniert, dann sollte er auch im Makro funktionieren...
g
kann nicht funktionieren, da die "+" in den String reinwandern und nicht der Wert von "sWert"!
Am besten mal den SQLTXT mit msgbox anzeigen lassen, dann weisst Du was ich meine.
Eine Zahl bindest Du folgendermaßen in einen String ein:
Code: Alles auswählen
" & sWert & "
Einen Text so:
Code: Alles auswählen
""" + sWert + """
oder so:
Code: Alles auswählen
'" + sIDKunde + "'
Am besten mal den SQLTXT mit msgbox anzeigen lassen bevor Du das Update laufen lässt. Wenn der Text den Du in der MsgBox-Message siehst exakt so eingetippt unter "Extras/SQL" funktioniert, dann sollte er auch im Makro funktionieren...
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
-
- Beiträge: 9
- Registriert: Mi, 12.01.2011 00:22
Re: Mehrere bestimmte Zeilen automatisch füllen lassen
Danke Danke Danke
Es läuft nun alles. Habe mir gleich mal mehrere Kombiboxen gemacht und kann nun mit einem Klick auf die Schaltfläche 6 Spalten ändern
. Und durch Modifikation des SQL-Befehls, kann ich die Boxen nun abhängig vom Datum (Kalenderwoche und Jahr) nun wochengezielt abändern lassen
.
Danke gogo... warst mir eine riesen Hilfe!!!
Es läuft nun alles. Habe mir gleich mal mehrere Kombiboxen gemacht und kann nun mit einem Klick auf die Schaltfläche 6 Spalten ändern


Danke gogo... warst mir eine riesen Hilfe!!!