Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
hylli
Beiträge: 172
Registriert: Sa 19. Mär 2011, 19:00

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von hylli » Mo 20. Nov 2017, 17:25

Hi,

die beiden Felder "Veranstaltungsort" und "Bezeichnung" wollte ich aus der Tabelle "Schulungen" heraus nehmen.

Möchte eigentlich per separatem Formular zunächst die Seminarbezeichnungen pro Veranstalter pflegen, ebenso die möglichen Veranstaltungsorte pro Veranstalter.

Im "Hauptformular" möchte ich dann eben den Veranstalter per Listenfeld auswählen, und dazu ebenfalls per Listenfeld die Seminarbezeichnung und der Veranstaltungsort.

Ist das machbar und wie?

Hylli
Geschäftlich: LibreOffice 5.4.0.3 unter Windows 10 64bit
Privat: LibreOffice 6.0.x unter Linux Mint 18.3 Cinnamon 64bit



F3K Total
Beiträge: 1652
Registriert: So 10. Apr 2011, 10:10

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von F3K Total » Mo 20. Nov 2017, 18:56

Hallo Hylli,
vermutlich wäre es am Besten, die DB, ggf. verfremdet hier hochzuladen. Wenn ich dich richtig verstehe, willst du einem Ort und einer Seminarbezeichnung nur die ID des Veranstalters zuordnen, und die Werte dann mittels Listenfeld in die Tabelle Schulungen schreiben, wobei das Listenfeld cascadierend sein soll, also nur die entsprechende Auswahl an Orten und Seminarbezeichnungen des gerade gewählten Veranstalters anzeigen soll. Geht, auf alle Fälle per Makro.
Anbei ein Beispiel für den Ort, das Makro ist kurz, hat es aber in sich:

Code: Alles auswählen

Sub S_SET_CURRENT_ID_V_LISTBOX_ORT
    Dim sListsource(0)as String
    oF_SCHULUNGEN = ThisComponent.Drawpage.Forms.F_SCHULUNGEN 'Zugriff auf Formular F_SCHULUNGEN
    nFK_ID_V = oF_SCHULUNGEN.Columns.FK_ID_V.getint 'auslesen der aktuellen ID des Veranstalters
    olstFK_ID_ORT = oF_SCHULUNGEN.lstFK_ID_ORT 'Zugriff auf Listbox Ort
    sListsource(0) = "SELECT ORT, ID_ORT FROM ORTE WHERE ORTE.FK_ID_V = " & nFK_ID_V 'Schreiben des Listboxinhaltes (SQL) in ein Array
    olstFK_ID_ORT.Listsource = sListsource 'Setzen des Listboxinhaltes
    olstFK_ID_ORT.refresh 'Aktualisierung der Listbox
End Sub
Dateianhänge
Hylli_Listbox.zip
(11.54 KiB) 15-mal heruntergeladen

hylli
Beiträge: 172
Registriert: Sa 19. Mär 2011, 19:00

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von hylli » Mo 20. Nov 2017, 19:14

Hi,

wie kriege ich die DB am schnellsten leer, so dass ich nur ein paar Musterdaten einfügen muss, um diese hier zur Verfügung stellen zu können?

Eine Makro-freie Lösung wäre mir auch lieber.

Hylli
Geschäftlich: LibreOffice 5.4.0.3 unter Windows 10 64bit
Privat: LibreOffice 6.0.x unter Linux Mint 18.3 Cinnamon 64bit

hylli
Beiträge: 172
Registriert: Sa 19. Mär 2011, 19:00

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von hylli » Mo 20. Nov 2017, 19:47

OK, im Anhang mal die anonymisierte Datenbank.

Hylli
Dateianhänge
Schulungsdatenbank_LO.zip
Anonymisierte DB "neu"
(68.03 KiB) 12-mal heruntergeladen
Geschäftlich: LibreOffice 5.4.0.3 unter Windows 10 64bit
Privat: LibreOffice 6.0.x unter Linux Mint 18.3 Cinnamon 64bit

F3K Total
Beiträge: 1652
Registriert: So 10. Apr 2011, 10:10

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von F3K Total » Di 21. Nov 2017, 18:01

Hi,
ich habe mal die Makro Lösung in deine DB eingebaut, wieso sie noch nie heruntergelden wurde, ist mir schleierhaft, oder hast du sie noch einmal ersetzt?
Das Makro S_SET_CURRENT_ID_V_LISTBOX wird ausgeführt, wenn du einen Veranstalter wählst, es setzt dann den Inhalt der Listboxen dazu passend.
Das Makro S_SET_CURRENT_LISTBOX_ON_ROWCHANGE wird ausgeführt wenn du den Datensatz wechselst, es ließt vorhandene Veranstalter aus und setzt wieder den Inhalt der Listboxen dazu passend.

Code: Alles auswählen

Sub S_SET_CURRENT_ID_V_LISTBOX
    Dim sListsourceOrt(0)as String
    Dim sListsourceBezeichnung(0)as String
    oF_SCHULUNGEN = ThisComponent.Drawpage.Forms.F_SCHULUNGEN 'Zugriff auf Formular F_SCHULUNGEN
    olstFK_ID_Veranstalter = oF_SCHULUNGEN.lstFK_ID_Veranstalter
    olstFK_ID_Veranstalter.commit
    if oF_SCHULUNGEN.isnew then
        oF_SCHULUNGEN.insertrow
    else 
        oF_SCHULUNGEN.Updaterow
    endif   
    nFK_ID_Veranstalter = oF_SCHULUNGEN.Columns.FK_ID_Veranstalter.getint 'auslesen der aktuellen ID des Veranstalters
    olstVeranstaltungsort = oF_SCHULUNGEN.lstVeranstaltungsort 'Zugriff auf Listbox "lstVeranstaltungsort"
    olstSeminarbezeichnung = oF_SCHULUNGEN.lstSeminarbezeichnung
    sListsourceOrt(0) = "SELECT ""Veranstaltungsort"", ""ID_Veranstaltungsort"" FROM ""V_Orte"" WHERE ""FK_ID_Veranstalter"" = " & nFK_ID_Veranstalter 'Schreiben des Listboxinhaltes in ein Array
    sListsourceBezeichnung(0) = "SELECT ""Seminarbezeichnung"", ""ID_Seminarbezeichnung"" FROM ""V_Seminarbezeichnung"" WHERE ""FK_ID_Veranstalter"" = "& nFK_ID_Veranstalter 'Schreiben des Listboxinhaltes in ein Array
    olstVeranstaltungsort.Listsource = sListsourceOrt 'Setzen des Listboxinhaltes
    olstVeranstaltungsort.refresh 'Aktualisierung der Listbox
    olstSeminarbezeichnung.Listsource = sListsourceBezeichnung 'Setzen des Listboxinhaltes
    olstSeminarbezeichnung.refresh 'Aktualisierung der Listbox
End Sub

Sub S_SET_CURRENT_LISTBOX_ON_ROWCHANGE
    Dim sListsourceOrt(0)as String
    Dim sListsourceBezeichnung(0)as String
    oF_SCHULUNGEN = ThisComponent.Drawpage.Forms.F_SCHULUNGEN 'Zugriff auf Formular F_SCHULUNGEN
    if oF_SCHULUNGEN.ISNEW then
        sAppend = ""
    else
        nFK_ID_Veranstalter = oF_SCHULUNGEN.Columns.FK_ID_Veranstalter.getint
        sAppend = " WHERE ""FK_ID_Veranstalter"" = " & nFK_ID_Veranstalter
    endif
    olstVeranstaltungsort = oF_SCHULUNGEN.lstVeranstaltungsort 'Zugriff auf Listbox "lstVeranstaltungsort"
    olstSeminarbezeichnung = oF_SCHULUNGEN.lstSeminarbezeichnung
    sListsourceOrt(0) = "SELECT ""Veranstaltungsort"", ""ID_Veranstaltungsort"" FROM ""V_Orte""" & sAppend
    sListsourceBezeichnung(0) = "SELECT ""Seminarbezeichnung"", ""ID_Seminarbezeichnung"" FROM ""V_Seminarbezeichnung""" & sAppend
    olstVeranstaltungsort.Listsource = sListsourceOrt 'Setzen des Listboxinhaltes
    olstVeranstaltungsort.refresh 'Aktualisierung der Listbox
    olstSeminarbezeichnung.Listsource = sListsourceBezeichnung 'Setzen des Listboxinhaltes
    olstSeminarbezeichnung.refresh 'Aktualisierung der Listbox
End Sub
Gruß R
Dateianhänge
Schulungsdatenbank_LO_F3K.zip
(74.39 KiB) 18-mal heruntergeladen

hylli
Beiträge: 172
Registriert: Sa 19. Mär 2011, 19:00

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von hylli » Di 21. Nov 2017, 19:17

Hi,

ich habe die Datenbank heute Morgen nochmals kurz ersetzt. Sie war aber nur wenige Minuten nicht da.

Bis dahin wurde die Datenbank nur einmal von Dir heruntergeladen ("...wurde 1-mal heruntergeladen..."), seither auch von niemandem mehr.

Danke an der Stelle für die Makro-Lösung.

Da ich - bekanntlich oder auch nicht - nicht so sehr der Makro-Freund bin: Wäre es denkbar bzw. ist es auch möglich, eine Makro-freie Lösung dafür zu basteln? Wo/Wie müsste man da ansetzen?

Hylli
Geschäftlich: LibreOffice 5.4.0.3 unter Windows 10 64bit
Privat: LibreOffice 6.0.x unter Linux Mint 18.3 Cinnamon 64bit

F3K Total
Beiträge: 1652
Registriert: So 10. Apr 2011, 10:10

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von F3K Total » Di 21. Nov 2017, 20:47

Hi,
anbei ein Vorschlag ohne Makro, mit einer einzeiligen Filtertabelle. Durch das Setzen eines Veranstalters, wird dessen ID in die Zeile der Tabelle Filter geschrieben und das Formular F_SCHULUNGEN im gleichen Augenblick aktualisiert. Das Formular F_FILTER ist ein Hauptformular, F_SCHULUNGEN das Unterformular, verknüpft über die ID_Veranstalter. Also können jetzt auf F_SCHULUNGEN nur Veranstaltungen des gewählten Veranstalters gesehen und geschrieben werden. Schau dir den SQL-Inhalt der Listenfelder Ort und Bezeichnung an, dort wird die ID des Veranstalters zum Filtern des Inhaltes der Listenfelder ausgelesen.

Gruß R
Dateianhänge
Schulungsdatenbank_LO_F3K_ohne_Makros.zip
(79.4 KiB) 17-mal heruntergeladen

hylli
Beiträge: 172
Registriert: Sa 19. Mär 2011, 19:00

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von hylli » Di 21. Nov 2017, 21:09

Hi,

Klasse!!! Danke für Deine Hilfe.

Die Makro-Lösung ist zwar mit Sicherheit die elegantere Lösung, aber mir ist diese Lösung trotzdem lieber.

So einigermaßen steige ich dahinter, aber ich muss mir das nochmals genauer anschauen.

Hylli
Geschäftlich: LibreOffice 5.4.0.3 unter Windows 10 64bit
Privat: LibreOffice 6.0.x unter Linux Mint 18.3 Cinnamon 64bit

hylli
Beiträge: 172
Registriert: Sa 19. Mär 2011, 19:00

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von hylli » Do 23. Nov 2017, 12:24

@F3K Total:
Leider funktioniert die Variante ohne Makros nicht so wie gewünscht.

Wenn ich eine neue Veranstaltung einpflegen möchte und als erstes den Veranstalter setze, wird mir der bestehende Datensatz einfach überschrieben, statt ein neuer Datensatz angelegt. Wenn ich gleichen Veranstalter setze, werden automatisch die Daten des bereits erfassten Datensatzes geladen, welche dann ebenfalls überschrieben werden.

Liegt also noch ein kleiner aber feiner Fehler vor, ich komme allerdings nicht dahinter, wo der Fehler dabei liegen soll?

Die Makrovariante scheint hier korrekt zu arbeiten.

Hylli
Geschäftlich: LibreOffice 5.4.0.3 unter Windows 10 64bit
Privat: LibreOffice 6.0.x unter Linux Mint 18.3 Cinnamon 64bit

F3K Total
Beiträge: 1652
Registriert: So 10. Apr 2011, 10:10

Re: Seminarverwaltung - Teilnahmebestätigung pro Mitarbeiter u. Seminar

Beitrag von F3K Total » Do 23. Nov 2017, 17:34

Hallo Hylli,
das stimmt so nicht ganz, ich denke du bist nicht richtig vorgegangen.
Wenn du den Veranstalter auswählst und dann IMMER den Button "Veranstalter setzen" drückst, zeigt dir das Formular alle bereits erfassten Datensätze des gewählten Veranstalters, ohne irgendetwas zu überschreiben.
Nur beim ersten Datensatz zu diesem Veranstalter sind die unteren Felder leer. Wenn du nun eine neue Veranstaltung erzeugen möchtest, nimm die untere Navigationsleiste und klicke auf "Neuer Datensatz", der Veranstalter bleibt stehen, die grauen Felder leeren sich und können nun beschrieben werden. Sind sie gefüllt, speichere die Veranstaltung mit der Diskette. Zu diesem Veranstalter gibt es dann in der Navigationsleiste eine Zeile mehr.
Ich habe dir in der angehängten Version noch ein paar Buttons mit eben den gleichen Funktionen (neuer Datensatz, Datensatz speichern) eingebaut ... sollte selbsterklärend sein, hangele dich an den Zahlen entlang.
Gruß R
Dateianhänge
Schulungsdatenbank_LO_F3K_ohne_Makros_2.zip
(82.87 KiB) 21-mal heruntergeladen



Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste