Reset Schalter für Felder im Suchformular

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

born_001
*
Beiträge: 12
Registriert: Sa, 28.05.2022 17:20

Reset Schalter für Felder im Suchformular

Beitrag von born_001 »

Hallo,
ich hab mal gesucht aber bisher nichts gefunden.
Ich habe ein Formular zur Datenerfassung und eines zur Suche mit mehreren Listen bzw Textfeldern. Das Ergebnis der Suche wird in einer Tabelle angezeigt. Wenn ich jetzt die Suche ändern möchte, soll das über einen Resetschalter funktionieren, der mir die Felder leert, damit ich mich nicht durch jedes Feld klicken muß um die Felder abzuwählen, die ich nicht brauche. Ich habe das über einen Schalter mit der Aktion"Formular zurücksetzen" probiert doch das funktioniert nicht.
Die Schaltfläche liegt im entsprechenden Formular.
Hat jemand eine einfache Lösung parat? Hab keine Ahnung von Programmierungen.
Danke und Gruß
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Reset Schalter für Felder im Suchformular

Beitrag von RobertG »

Das, was Du suchst, ist im Prinzip das Löschen eines Datensatzes. Das Zurücksetzen eines Formulars dürfte nur dann funktionieren, wenn die Daten z.B. an eine Website verschickt wurden (mit "Formular übertragen"), nicht aber, wenn sie intern abgespeichert wurden. Die Datensatzeingabe rückgängig machen kannst Du nur, bevor der Datensatz abgespeichert wurde.
born_001
*
Beiträge: 12
Registriert: Sa, 28.05.2022 17:20

Re: Reset Schalter für Felder im Suchformular

Beitrag von born_001 »

Das mit dem Löschen eines Datensatzes hatte ich auch schon probiert, dann war er aber komplett aus der Erfassung verschwunden.
Also gibt es, wenn ich das richtig verstanden habe, keine Lösung/Option für mein Vorhaben.
Wie funktioniert denn dann die Aktion "Formular zurücksetzen"? So wie du beschrieben hast?
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Reset Schalter für Felder im Suchformular

Beitrag von RobertG »

Das mit dem Zurücksetzen dürfte genau wie "Formular übertragen" nur eine Bedeutung haben, wenn Du Formulare nicht abspeicherst sondern z.B. an eine Website sendest.

Du wirst über eine Makrolösung nicht umhin können:

Code: Alles auswählen

SUB FelderLeeren(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
oForm.updateNull(oForm.findColumn("Vorname"))
oForm.updateNull(oForm.findColumn("Nachame"))
oForm.updateRow()
END SUB
Das Makro würde an eine Schaltfläche gebunden (Schaltfläche → Ereignisse → Aktion ausführen). Über die Schaltfläche erreichst Du das Formular. Über das Formular wiederum ermittelst Du die Felder, die in der Datenquelle (Tabelle, auf der das Formular beruht) stehen. Hier stehen als Beispiel die Felder "Vorname" und "Nachname". Da musst Du alle Felder einsetzen, die bei Dir in der Tabelle stehen und geleert werden sollen.

Mit updateNull erfolgt die Leerung, mit updateRow wird das Ganze in die Tabelle geschrieben.

Damit Makros ausgeführt werden musst Du in Extras → Optionen → Sicherheit → Makrosicherheit die Sicherheit auf "Mittel" herabsetzen. Ich habe dann noch den Pfad, in dem ich meine eigenen Dateien liegen habe, als "Vertrauenswürdige Quelle" angegeben. Dann werde ich nicht bei jedem Programmstart gefragt, ob die Makros auch ausgeführt werden sollen.

Gruß

Robert
born_001
*
Beiträge: 12
Registriert: Sa, 28.05.2022 17:20

Re: Reset Schalter für Felder im Suchformular

Beitrag von born_001 »

OK, danke, probier ich mal aus. mit Makros hatte ich bisher nichts zu tun. Ich schau mal wie ich das angelegt bekomme.
born_001
*
Beiträge: 12
Registriert: Sa, 28.05.2022 17:20

Re: Reset Schalter für Felder im Suchformular

Beitrag von born_001 »

Ich habe das jetzt einmal ausprobiert. Unter Makros Verwalten habe ich ein neues unter "Meine Makros" angelegt, den Code eingebaut und das Makro verknüpft wie beschrieben. Beim Ausführen kommt folgende Fehlermeldung:

Basic-Laufzeitfehler. Es ist eine Exception aufgetreten
Type:com.sun.star.sdbc.SQLException
Message: der Spaltenname 'Hersteller' ist unbekannt

Wenn ich die Codezeile entfehrne tritt die gleiche Meldung beim nächsten auf usw.
Die Namen entsprechen den Spalten in der Tabelle, in der die Suche angezeigt wird.
Dann habe ich die Namen geändert, sodaß sie den Text bzw Listenfeldnamen entsprechen in denen ich die Suche eingebe. Dann bleibt die Meldung aus, aber es wird immer nur das erste Feld zurückgesetzt.
Dann habe ich das Makro nochmal in der Datenbank direkt erstellt und verknüpft, das gleiche Problem.
Dann habe ich den Schalter einmal im Navigator in die Tabelle geschoben, die Namen im Makro geändert und jetzt wurde bei der Suche in der Tabelle die erste Zeile gelöscht und somit auch der ganze erste Datensatz aus der Datenerfassung, das sollte so ja nicht sein. Also wieder den Schalter gelöscht.
Woran kann es denn liegen, das nur das erste Feld gelöscht wird?

Das ist der Code, mit den Text bzw Listenfeldnamen:

Code: Alles auswählen

REM  *****  BASIC  *****

SUB FelderLeeren(oEvent AS OBJECT)
oForm = oEvent.Source.Model.Parent
oForm.updateNull(oForm.findColumn("F_Hersteller"))
oForm.updateNull(oForm.findColumn("F_Name"))
oForm.updateNull(oForm.findColumn("F_InstrumentTyp"))
oForm.updateNull(oForm.findColumn("F_EffektTyp"))
oForm.updateNull(oForm.findColumn("F_Serial"))
oForm.updateNull(oForm.findColumn("F_Activation"))
oForm.updateNull(oForm.findColumn("F_Install"))
oForm.updateNull(oForm.findColumn("F_Registrierung"))
oForm.updateNull(oForm.findColumn("F_Art"))
oForm.updateNull(oForm.findColumn("F_Format"))
oForm.updateNull(oForm.findColumn("F_Plattform"))
oForm.updateNull(oForm.findColumn("F_Erwerb"))
oForm.updateRow()
END SUB

Wenn ich Base öffne, kommt auch immer die Meldung, ob ich Makros aktivieren/deaktivieren soll. Kann man das irgendwo einstellen, das das automatisch passiert?
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Reset Schalter für Felder im Suchformular

Beitrag von RobertG »

Öffne das Formular zum Bearbeiten.
Markiere die Schaltfläche.
Lasse Dir (über die rechte Maustaste) die Formulareigenschaften anzeigen.
Gehe zum Reiter "Daten" und schau auf die Datenquelle, besonders auf den Inhalt.
Ist das die korrekte Tabelle oder Abfrage?
Wenn das nicht stimmig ist: Die Schaltfläche ist nicht in dem Formular gelandet, in dem auch die Felder liegen, die geleert werden sollen. Also über den Formularnavigator das richtige Formular aktivieren und dort die Schaltfläche einbauen.
Stimmt das, dann gehe zu dieser Datenquelle (Tabelle). Wie heißen dort die Felder? Tatsächlich "F_Hersteller" usw?

Zur Abfrage nach dem Ausführen von Makros: Extras → Optionen → LibreOffice → Sicherheit → Makrosicherheit. Dort auf den Reiter "Vertrauenswürdige Quellen" wechseln. Dort zu den "Vertrauenswürdigen Speicherorten" das Verzeichnis hinzufügen, in dem Deine *.odb-Datei liegt.
born_001
*
Beiträge: 12
Registriert: Sa, 28.05.2022 17:20

Re: Reset Schalter für Felder im Suchformular

Beitrag von born_001 »

Hallo Robert,
ich hab jetzt mehrere Sachen probiert, aber entweder wird der Datensatz aus der Datenerfassung gelöscht oder immer nur noch das erste Feld. Die Zuordnung sollte stimmen, da ich ja die Felder und nicht die Tabelle reseten möchte. Es gibt das Formular Filter mit dem Schalter und in dem Formular befindet sich das Formular Tabelle in der später das Ergebnis der Suche angezeigt wird. Ich häng die Datenbank mal an, vielleicht fällt dir ja noch etwas auf. Falls es nicht zu lösen ist, dann laß ich die Funktion weg. Ist ein Nice to have.
Danke schonmal.
Dateianhänge
2022_Plug In Datenbank_01_2.odb
(29.7 KiB) 105-mal heruntergeladen
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Reset Schalter für Felder im Suchformular

Beitrag von RobertG »

Mach zum Schluss ein oForm.reload dahinter. Dann klappt es.

Code: Alles auswählen

…
oForm.updateNull(oForm.findColumn("F_Erwerb"))
oForm.updateRow()
oForm.reload()
END SUB
Noch eine Anmerkung zum Formular: Die Formulareigenschaften für das Formular "Filter" solltest Du so setzen, dass
Daten hinzufügen → Nein
Daten löschen → Nein
Symbolleiste Navigation → Nein
Zyklus → Aktueller Datensatz
ist. Nur dann beschreibst Du sicher immer den gleichen Datensatz mit der ID = 0. Den darfst Du natürlich nie in der Tabelle löschen.
born_001
*
Beiträge: 12
Registriert: Sa, 28.05.2022 17:20

Re: Reset Schalter für Felder im Suchformular

Beitrag von born_001 »

Super, jetzt klappts. Vielen Dank!
Antworten