❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Formularaufruf über ID

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Formularaufruf über ID

Beitrag von Freischreiber » Di 21. Apr 2015, 17:09

Hallo,

in einem Auftragsformular, in dem es ein Unterformular mit Tabellenfeld für zugeordnete Kunden gibt (Verbindung über Zwischentabelle), möchte ich per Makroknopf aus der markierten Kundenzeile dessen Adressformular aufrufen.

Das Makro heißt bisher:

Code: Alles auswählen

Sub Adressformularaufruf 'Ruft zu dem markierten Kunden das Adressformular auf
	oformAdressen = thisComponent.drawpage.forms.MainForm.SubForm_Zugeo_Kunden
	stAdressID = oformAdressen.getInt(oformAdressen.findcolumn("AdressID"))
	oformAdresse = ThisDatabaseDocument.getformdocuments.GetByName("f-Adresse") 
	oformAdresse.open
	oformAdresse = oformAdresse.Component.drawpage.forms(0)
	'msgbox stAdressID
	oformAdresse.Filter = "ID = 'stAdressID'" 
	oFormAdresse.ApplyFilter = TRUE
	oFormAdresse.reload
End Sub
Der Ablauf scheitert mit "SQL-Status: 22018 Fehler-Code: -3438 data exception: invalid character value for cast"
Das SQL-Kommando, welches zu diesem Fehler führte, ist:
SELECT "t-adressen".* FROM "t-adressen" WHERE "ID" = 'stAdressID' ORDER BY "Nachname", "Vorname"


An dieser Fehlermeldung ist mir wie immer alles unverständlich:
- Ich frage einen Integerwert ab, und die ID ist in der Adressentabelle ein Integerwert. Wie kann das "invalid" sein?
- Woher kommt die Select-Abfrage? In dem Makro gibt es nur einen Filter.
- Wie kriege ich sie los? (also die Fehlermeldung)

Die msgbox ermittelt korrekt die ID des markierten Kunden, z. B. 813. Wenn ich den Filter mit oformAdresse.Filter = "ID = '813'" aufrufe, öffnet das Adressformular korrekt mit dem entsprechenden Kundennamen.

Ratlos
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularaufruf über ID

Beitrag von Freischreiber » Di 21. Apr 2015, 18:23

Hallo nikki,

mit der Zeichenfolge? Aber oben wird doch mit getInt der Zahlenwert aus der Tabelle geholt?

Wenn ich

Code: Alles auswählen

intAdressID = VAL(stAdressID)
	oformAdresse.Filter = "ID = 'intAdressID'" 
ergänze, geht es auch nicht...

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularaufruf über ID

Beitrag von Freischreiber » Di 21. Apr 2015, 19:37

Oder mit

Code: Alles auswählen

	intAdressID = CInt(stAdressID)
	oformAdresse.Filter = "ID = 'intAdressID'" 
Auch nicht...
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularaufruf über ID

Beitrag von RobertG » Di 21. Apr 2015, 20:35

Hallo Freischreiber,

so müsste es heißen:

Code: Alles auswählen

 oformAdresse.Filter = "ID = '"+stAdressID+"'" 
Du hast einen Wert ausgelesen, aber in der Abfrage kommt nur

Code: Alles auswählen

SELECT "t-adressen".* FROM "t-adressen" WHERE "ID" = 'stAdressID' ORDER BY "Nachname", "Vorname"
an, weil Du einen Text in den Filter schreibst. Schau einfach auf die Farben im Basic-Editor. Daran kannst Du erkennen, dass die gesamte Filtereinstellung bei Dir nur aus Text besteht.

Die Abfrage wird aus Base anhand der Datenquelle für Dein Formular und dem Eintrag für den Filter zusammengebaut.
Die Abfrage für das Formular scheint

Code: Alles auswählen

SELECT "t-adressen".* FROM "t-adressen" ORDER BY "Nachname", "Vorname"
zu sein. Vielleicht hast Du auch die Sortierung in dem Formular erstellt, so dass letztlich die Datenquelle des Formulars nur "t-adressen" lautet. Aber irgendwie muss Base ja den Filter einbauen und damit die Daten auslesen. Und das macht Base eben mit einer Abfrage.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularaufruf über ID

Beitrag von Freischreiber » Mi 22. Apr 2015, 11:28

Hallo Robert,

nein, wie peinlich: Der Filter hat in den Adressen-IDs nach dem Namen der Variablen gesucht? Jetzt kapier ich auch die erste Antwort von nikki.

Vielen Dank
Freischreiber

Zwei Fragen noch:
Zu den Textfarben des Editors finde ich nirgends eine Dokumentation. Und in den Libreoffice-Optionen gibt es zwar "Optionen für die BASIC-IDE", aber die sind bei mir alle ausgegraut. Wie kommt das?
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de

RobertG
* LO-Experte *
Beiträge: 2888
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Formularaufruf über ID

Beitrag von RobertG » Mi 22. Apr 2015, 16:13

Hallo Freischreiber,

hast Du wirklich schon die Hilfe zu LibreOffice Basic durchgesucht? Ich könnte jetzt hier ein paar Zeilen aus dem Base-Handbuch rein kopieren - nur bringt das nichts, weil die Farbe dabei nicht überkommt ...

Für die Optionen der Basic-IDE musst Du die experimentellen Funktionen aktivieren.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Freischreiber
* LO-Experte *
Beiträge: 837
Registriert: Fr 28. Mär 2014, 10:41

Re: Formularaufruf über ID

Beitrag von Freischreiber » Mi 22. Apr 2015, 16:55

Hallo Robert,

so wie du es im Handbuch hast, macht es wirklich Sinn:
BASIC-Editor Farben 2.gif
BASIC-Editor Farben 2.gif (16.25 KiB) 2440 mal betrachtet
Aber in meiner LO-Version sind die Farben mehrfach vergeben, was beim Anschauen nicht viel Sinn ergibt:
BASIC-Editor Farben.gif
BASIC-Editor Farben.gif (32.04 KiB) 2440 mal betrachtet
Das werd ich jetzt mal abändern bei mir, danke für den Tip!

Gruß
Freischreiber
Freischreiber nutzt seit 1/2025 LibreOffice Version 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan/de


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten