🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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. 🤗

(Gelöst) Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

(Gelöst) Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von Libremiki » Mo 3. Feb 2020, 09:00

Dank der Hilfe hier (danke Robert) kann ich meine Daten jetzt filtern. Die gefundenen Einträge werden in einem Tabellenkontrollfeld angezeigt. Ich wähle dann die Zeile aus.
Jetzt möchte ich ein neues Formular öffnen in dem alle Detail-Informationen zu dem ausgewählten Artikel enthalten sind. Im Bild ist der Eintrag "Knie PLK" ausgewählt. Im Formular gibt es dann Bilder, Lieferant, Gewicht und weitere Angaben. Wie geht das?
Dateianhänge
Screenshot from 2020-02-03 15-54-55.png
Screenshot from 2020-02-03 15-54-55.png (10.12 KiB) 4105 mal betrachtet
Zuletzt geändert von Libremiki am Mi 5. Feb 2020, 10:07, insgesamt 1-mal geändert.

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

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von RobertG » Mo 3. Feb 2020, 09:50

Hallo Libremiki,

die einfachste Variante wäre, dass Du zu dem Formular, in dem das Tabellenkontrollfeld steht, ein Unterformular erstellst, dass dann die gesamten Details anzeigt. Das ist letztlich eine Frage, wie viel Platz Du auf dem Bildschirm hast oder ob Du das lieber getrennt haben willst.

Für den Aufruf eines neuen Formulardokumentes musst Du allerdings mit Makros arbeiten. Du brauchst dazu ein Feld, nach dem Du den Formularinhalt eindeutig bestimmen kannst. Den Wert könntest Du in die Filtertabelle schreiben, das neue Formular öffnen und über eine entsprechend gefilterte Abfrage mit Daten beschicken. Speicherung des Wertes und Öffnen des Formulars erfolgt hier über ein Makro.

Versuche zuerst einmal die Unterformularvariante. Soll es ein neues Formulardokument sein, so sehen wir das dann später.

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

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von Libremiki » Mo 3. Feb 2020, 12:46

Das Unterformular kann ich einrichten. Ich will aber definitiv den Weg über das Makro gehen. Öffnet mehr Optionen in der Zukunft - speziell wenn man es versteht und modifizieren kann.
Ich denke die folgenden Schritte sind nötig:
  • Eine neue Tabelle "Memory" habe ich angelegt mit den Feldern "MemoryID" und "MemoryNummer". MemoryID ist wieder ein Ja/Nein Format.
    Das Makro muss den markierten Wert auslesen "getCurrentSelection"?
    Dieser Wert "Artikelnummer" muss in der Tabelle "Memory" im Feld "Memorynummer" gespeichert werden
    Dann das neue Formular "Form2" öffnen mit der Abfrage aus "Memory"
Leichter geschrieben als getan!

Dieser Beitrag stammt aus SW China, enthält aber garantiert nicht den neuen Wuhan-Virus ;)

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

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von RobertG » Mo 3. Feb 2020, 15:04

Hallo Libremiki,

eine neue Tabelle brauchst Du nicht - nur ein zusätzliches Feld in der vorhergehenden Filtertabelle.
Das Makro sollte am besten ausgelöst werden, wenn auf genau das gewünschte Feld mit der Maus geklickt wird.

Code: Alles auswählen

SUB FormFilterOpen(oEvent AS OBJECT)
DIM oConnection AS OBJECT
oField = oEvent.Source.Model
stValue = oField.CurrentValue
oForm = oField.parent.parent
oConnection = oForm.activeConnection()
oSQL_Statement = oConnection.createStatement()
stSql = "INSERT INTO ""Memory"" (""MemoryNummer"") VALUES ('"+stValue+"') WHERE ""MemoryID"" = TRUE"
oSQL_Statement.executeUpdate(stSql)
ThisDatabaseDocument.FormDocuments.getByName( "Filterformular" ).open
END SUB
Das Makro liest zuerst aus der angeklickten Zelle den Wert.
Danach wird zu der Zelle das Formular ermittelt.
Über parent erhalte ich die nächst höhere Ebene. Parent.parent ist deswegen nötig, weil das Feld in einem Tabellenkontrollfeld liegt.
Über das Formular wird die Datenbankverbindung ausgelesen.
Der Code wird erzeugt und an die Memorytabelle weitergegeben.
Danach wird das neue Formular aufgerufen.
Der Inhalt des neuen Formulars wird durch eine Abfrage auf die Memorytabelle eingeschränkt.

---------
Nachtrag: stSql ist so eine Mischung aus Code für einen neuen Datensatz (INSERT) und einen bestehenden Datensatz (UPDATE). Entweder muss die WHERE-Bedingung weg oder es wird, an dieser Stelle korrekt,

Code: Alles auswählen

stSql = "UPDATE ""Memory"" SET ""MemoryNummer"" = '"+stValue+"' WHERE ""MemoryID"" = TRUE"
---------

Gruß

Robert
Zuletzt geändert von RobertG am Di 4. Feb 2020, 14:56, insgesamt 1-mal geändert.
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

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von Libremiki » Di 4. Feb 2020, 07:10

Danke. Ich habe das Makro gespeichert, es zeigt ein Problem mit dem SQL code. Wenn ich das erste Anführungszeichen lösche wird der Text grün. Aber es wäre besser wenn ich den Grund verstehe.

Code: Alles auswählen

stSql = "INSERT INTO ""Memory"" (""MemoryNummer"") VALUES ('"+stValue+"') WHERE ""MemoryID"" = TRUE"
Das Makro habe ich im Tabellenkontrollfeld unter "Mouse button pressed" eingetragen. Es tut sich aber nichts, vermutlich wegen dem o.g. Problem.
Dateianhänge
Screenshot from 2020-02-04 13-58-10.png
Screenshot from 2020-02-04 13-58-10.png (40.56 KiB) 4044 mal betrachtet

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von Wanderer » Di 4. Feb 2020, 09:08

Hallo,

das ist kein Problem mit dem Code, die Anführungszeichen gehören dahin und die Zeile soll nicht grün sein.

Begründung:
Der SQL-Befehl wird als Zeichenkette (String) erzeugt und daher in Anführungszeichen eingeschlossen. Enthaltene Anführungszeichen werden verdoppelt, damit eines der beiden im String landet.

Für den Editor ist es damit aber Text und wird bei Dir rot dargestellt. Das dieser Text später als SQL-BEFEHL interpretiert wird kann BASIC natürlich nicht verstehen.

Zur Kontrolle könntest Du stSQL in der nächsten Zeile per MsgBox ausgeben lassen.

Mfg, Jörn
Zuletzt geändert von Wanderer am Di 4. Feb 2020, 19:19, insgesamt 1-mal geändert.
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von Libremiki » Di 4. Feb 2020, 12:25

OK. Das Makro wird jetzt ausgeführt. Ich habe Dein Handbuch Kapitel 9 (Makros) angefangen zu lesen. Da steht ja ganz klar dass man die Makrosicherheit auf "mittel" verstellen muss.

Das Makro wird allerdings nicht komplett ausgeführt, es öffnet sich der Makro-Editor und es gibt auch eine Fehlermeldung:
BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Attempt to insert null into a non-nullable column: column: MemoryID table: Memory.

Die Tabelle "Memory" column "MemoryID" ist als ja/nein Feld formatiert und auf "True" angekreuzt.

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

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von RobertG » Di 4. Feb 2020, 14:53

Hallo Libremiki,

Entschuldigung, ist am Anfang der Code für das Einfügen eines Datensatzes gewesen, muss aber der für das Ändern sein:

Code: Alles auswählen

stSql = "UPDATE ""Memory"" SET ""MemoryNummer"" = '"+stValue+"' WHERE ""MemoryID"" = TRUE"
Zum Code: Tabellen und Felder werden in doppelte Anführungszeichen gesetzt. Damit wird aber in Basic Text eingerahmt. Wird ein doppelten Anführungszeichen direkt vor ein doppeltes Anführungszeichen gesetzt, so wird das zweite Anführungszeichen als Text durch das erste Anführungszeichen maskiert. Das erkennst Du, wenn Du direkt nach der Deklaration von stSql einmal

Code: Alles auswählen

msgbox stSql
ausführen lässt. Dort steht dann der Code, der anschließend ausgeführt wird. Der gleiche Code könnte auch unter Extras > SQL eingegeben werden.

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

Libremiki
Beiträge: 49
Registriert: Fr 14. Apr 2017, 11:03

Re: Suchergebnisse ausgewählten Eintrag in Detail-Form öffnen

Beitrag von Libremiki » Mi 5. Feb 2020, 10:07

Danke Robert! Es flutscht einwandfrei. Ich habe auch die Tabelle "Memory" gelöscht und dafür wie vorgeschlagen in der Tabelle "Filter" ein extra Feld eingefügt. Der Wert aus der Spalte wird ausgelesen und abgespeichert, das neue Formular geöffnet.
Entschuldigung ist nicht notwendig. Nur wer nichts tut macht keine Fehler. Und wie Du hilfst ohne die aktuelle Datenbank zu kennen ist schon toll. Mal sehen wie weit ich jetzt komme.


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