🙏 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) Aufträgen chaotische Ablageorte zuordnen

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

(gelöst) Aufträgen chaotische Ablageorte zuordnen

Beitrag von Freischreiber » Di 7. Jul 2015, 16:55

Hallo,

mir fehlt noch eine spezielle Funktion in meiner Datenbank, und ich dachte, 34 °C sind ideal für Datenbankprobleme :roll:

Ich möchte meinen Aufträgen Ablageorte für die sogenannte "chaotische Ablage" zuweisen können, also Buchstabenkürzel, die genau einen Ablageort bezeichnen und die irgendwann beim Auftrag wieder gelöscht werden (nämlich dann, wenn die dort gelagerten Gegenstände zurückgegeben oder weggeworfen werden und so der Ablageort wieder frei wird). Der Normalzustand ist ein Auftrag ohne Ablageort, es gibt viel mehr Aufträge als Ablageorte.

Solange ein Ablageort einem Auftrag zugeordnet ist, soll er für andere Aufträge blockiert/vergeben sein.

Andererseits soll es möglich sein, einem Auftrag mehrere chaotische Orte zuzuordnen, wenn mehrere Gegenstände untergebracht werden müssen.

Die Auftragstabelle hat einen Primärschlüssel AuftragsID. Es gibt eine endliche Anzahl von Ablageorten mit festen Bezeichnungen, zb schrank1, schrank2, ... die im Moment einfach in einer Tabelle t-ablageorte untereinander stehen.

Wie stellt man das an?

Gruß
Freischreiber
Zuletzt geändert von Freischreiber am Mo 13. Jul 2015, 14:18, insgesamt 1-mal geändert.
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: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von RobertG » Di 7. Jul 2015, 18:20

Hallo Freischreiber,

Du könntest die Aufträge doch direkt in der Tabelle speichern, die für die Ablageorte gedacht ist. "t-ablageorte" hat dann ein Feld "AuftragsID". So kannst Du nur einen Auftrag einem Ablageort zuordnen.

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: 834
Registriert: Fr 28. Mär 2014, 10:41

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von Freischreiber » Di 7. Jul 2015, 19:41

Hallo Robert,

stimmt! 1 Auftrag : n Ablageorte... danke!

Jetzt habe ich versucht, im Auftragsformular eine Tabelle für die Auswahl von Ablageorten aufzuziehen:
- Subformular Ablageorte, Daten - Art des Inhalts: t-ablageorte, Verknüpfen von AuftragID zu AuftragID.
- Spalte Ablageort ersetzen durch Listenfeld

Und jetzt dachte ich, man könnte einfach als Art des Listeninhalts die Tabelle t-ablageorte angeben, gebundenes Feld 1.
Aber das scheint nicht zu gehen, obwohl die Tabelle richtig aufgebaut ist, Spalte 1 Ablageort, Spalte 2 AuftragsID.

Geht das wirklich nur mit einer Abfrage?

Gruß
Freischreiber

:( Sehe gerade, es geht auch mit einer Abfrage so nicht... die hinterlegten Ablageorte stehen zwar zur Wahl, aber man kann keinen speichern. Irgendwas stimmt da noch nicht.

Es kommt die Fehlermeldung: SQL-Status: HY010 Fehler in der Funktionsfolge.
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: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von RobertG » Di 7. Jul 2015, 20:52

Hallo Freischreiber,

den Ablageorten werden die Aufträge zugeordnet - nicht umgekehrt.
Dein Formular basiert also auf den Ablageorten. Die Aufträge kannst Du aus einem Listenfeld aussuchen. Das kann dann ruhig eine zusammengesetzte Abfrage sein, damit Du genug erkennen kannst.

Welche verschiedenen Ablageorte ein Auftrag hat, das könntest Du anschließend in einem Unterformular über eine Abfrage sehen.

Willst Du das Ganze anders gestalten, so kommst Du um eine Verbindungstabelle nicht herum. In dieser Verbindungstabelle ist dann zwangsläufig der Ablageort der Primärschlüssel. Dann wird dem Unterformular der Schlüsselwert aus dem Hauptformular für den Auftrag mitgegeben und Du wählst unterschiedliche Ablageorte in einem Listenfeld (innerhalb eines Tabellenkontrollfeldes) aus. Das besondere Problem ist hier allerdings, dass Du vermutlich häufig Fehlermeldungen der Datenbank bekommst, weil Du einen Ablageort aussuchen willst, der leider schon belegt ist.

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: 834
Registriert: Fr 28. Mär 2014, 10:41

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von Freischreiber » Mi 8. Jul 2015, 07:45

Hallo Robert,

bei Lösung 1:
Welche verschiedenen Ablageorte ein Auftrag hat, das könntest Du anschließend in einem Unterformular über eine Abfrage sehen.
Heißt das: anlegen kann man die Verbindung nur von den Ablageorten aus? Oder wäre so eine Abfrage editierbar, so daß man vom Auftragsformular aus einen freien Ort suchen könnte?

Alternativ:
Gibt es eine einfachere Lösung, wenn man pro Auftrag nur einen Ablageort erlaubt? Eine 1:1-Beziehung? Das war mein erster Versuch, hab ich aber auch nicht hingekriegt.

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

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

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von RobertG » Mi 8. Jul 2015, 09:19

Hallo Freischreiber,

ich hänge einmal die einfachen Lösungen an. Die Tabellen sind unter Extras → Beziehungen nicht verknüpft, da unterschiedliche Ansätze gewählt wurden.
Das Ganze ist ähnlich dem, was im Handbuch mit der Mediendatenbank erstellt werden muss. Das Problem dort: Es kann kein Buch doppelt ausgeliehen werden. Trotzdem wird die Lesernummer nicht bei den Büchern gespeichert sondern dem Leser Bücher zugeordnet. Die Regelung, welche Bücher denn vorhanden sind, erfolgt schließlich bei der Ausgabe. Die Ausgabe geht einfach nicht weiter, wenn das Buch nach Datenbank nicht zur Ausleihe zur Verfügung steht (weil es z.B. noch entliehen ist).

Gruß

Robert
Dateianhänge
Auftrag_Ablage.odb.zip
Aufträge Ablage zuordnen und umgekehrt
(14.31 KiB) 165-mal heruntergeladen
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: 834
Registriert: Fr 28. Mär 2014, 10:41

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von Freischreiber » Mi 8. Jul 2015, 16:45

Hallo Robert,

das funktioniert! Was mich nur sehr irritiert ist, daß anscheinend keine Beziehungen nötig sind. Solange man nur das Formular verwendet, stellt das Listenfeld sicher, daß man nur existierende Ablageorte auswählt.

Würden Beziehungen denn schaden?

Und: Kann die Listenfeldabfrage so verändert werden, daß nur solche Ablageorte noch zur Auswahl stehen, für die es noch keinen zugeordneten Auftrag gibt, also leere?

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

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

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von RobertG » Mi 8. Jul 2015, 19:56

Hallo Freischreiber,

die Beziehungen habe ich deshalb nicht definiert, da die beiden Formulare auf unterschiedliche Beziehungen aufbauen. Wenn Du Dich dafür entscheidest, mit 3 Tabellen zu arbeiten, dann solltest Du die Beziehungen auch entsprechend über die Datenbank absichern.
Es ist ja ohne weiteres möglich, Beziehungen zwischen Tabellen zu nutzen ohne so etwas in einer Datenbank über Relationen zu hinterlegen. In MySQL habe ich anfangs nie Relationen hinterlegen können, weil der Tabellentyp das gar nicht zuließ, den ich nutzte...

Du kannst die Listenfeldabfrage natürlich anpassen, so dass nur die Auswahlen möglich sind, die auch noch frei sind. Das ist allerdings nicht so einfach:
Du hast einen Auftrag und mehrere Ablageorte ausgewählt. Das Listenfeld ist so definiert, dass nur die Ablageorte erscheinen, die noch nicht gewählt sind:

Code: Alles auswählen

SELECT "Ablage", "ID" FROM "Ablage" WHERE "ID" NOT IN (SELECT "Ablage_ID" FROM "Ablage_Auftrag")
Wenn Du anschließend das Formular neu aufrufst wird auch das Listenfeld aktualisiert. Du siehst jetzt ----- keine Ablageorte mehr, da die im Listenfeld ja nicht vorgesehen sind.
Ich habe so etwas jetzt einmal mit Hilfe eines Tabellenkontrollfeldes und eines danebenliegenden Listenfeldes erstellt. Das Listenfeld müsste nach jedem neuen Speichervorgang aktualisiert werden - geht nur über ein angehängtes Makro.
Wenn Du das neue Formular öffnest, dann siehst Du die bisherigen Einträge im Tabellenkontrollfeld, nicht aber im Listenfeld.

Gruß

Robert
Dateianhänge
Auftrag_Ablage.odb.zip
Tabellenkontrollfeld zur Inhaltsdarstellung, Listenfeld für Neueinträge - bisher ohne Aktualisierung
(18.91 KiB) 158-mal heruntergeladen
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: 834
Registriert: Fr 28. Mär 2014, 10:41

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von Freischreiber » Fr 10. Jul 2015, 10:00

Hallo Robert,

ich habe bei deinen beiden Beispieldateien echte Probleme mit dem Öffnen von Formularen. Es gibt beim Formularstart mehrere Programmabstürze mit Wiederherstellung, bis ein Formular dann aufgeht. Ist an den Dateien etwas besonderes?

Das geänderte Formular in der neuen Datei sieht sehr gut aus, es gibt aber irgendwann eine ID-Fehlermeldung.
Hängt das mit dem benötigten Makro zusammen?

Das Makro müßte nur das Listenfeld-Formular aktualisieren?

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

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

Re: Aufträgen chaotische Ablageorte zuordnen

Beitrag von RobertG » Fr 10. Jul 2015, 16:12

Hallo Freischreiber,

Abstürze kann ich nicht nachvollziehen. Allerdings habe ich auch keine externe HSQLDB-Datenbank angeschlossen. Das kann wohl zu Problemen mit internen Datenbanken führen.

Das einfachste Makro für die Listbox im Unterformular wäre:

Code: Alles auswählen

SUB ListeninhaltAktualisieren(oEvent AS OBJECT)
	oFeld = oEvent.Source.getByName("ListBox")
	oFeld.refresh()
END SUB
Wird an "Nach der Datensatzaktion" des Formulars gebunden.

Das ist aber noch nicht ideal, da eigentlich schon der Abspeichervorgang und das Weitergehen zum nächsten Datensatz direkt von dem Listfeld ausgelöst werden müssten.

Nachtrag: ich habe das jetzt einmal zusammen mit einer Abspeicherung in das Formular eingebaut. Bei mir ohne jegliche Probleme.

Gruß

Robert
Dateianhänge
Auftrag_Ablage.odb.zip
Automatische Abspeicherung und Aktualisierung Listfeld
(20.03 KiB) 160-mal heruntergeladen
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


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