Auswahl von Daten für ein Subformular

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Auswahl von Daten für ein Subformular

Re: Auswahl von Daten für ein Subformular

von Kathrin » Sa, 09.07.2011 15:17

Der Tip mit den Makros war gut...

Mach das alles nebenher, deswegen meld ich mich erst jetzt wieder.

Also der Code funktioniert nun (bei mir?) ohne Fehlermeldung:

Code: Alles auswählen

Sub Testfilter

Dim oDoc as Object, oForm as Object, oFeld as Object
Dim idMit As String


oDoc = ThisComponent
oForm = oDoc.drawpage.forms.getByName("Stundenabrechnung-test")
      
oFeld = oForm.getByName("Mitarbeiterauswahl")
idMit =oFeld.SelectedItems(0)
REM msgbox idMit


   oForm.filter = "MitarbeiterID ="& idMit 
   oForm.ApplyFilter=true

oForm.reload

End Sub
Die Datenbank hab ich auch angehängt. Ich hab mir die idMit ausgeben lassen, das ist richtig (man müsste noch eine 1 abziehen, aber das regel ich später..). Das Problem ist: Die Tabellendaten werden mit dem Filter angezeigt - aber wenn ich Daten eingebe, werden sie ohne MitarbeiterID abgespeichert... Was muss man machen, damit die Datensätze auch die richtige Mitarbeiter ID bekommen?

Schon mal vielen Dank..

Kathrin
Dateianhänge
Zeitabrechnung-2011-v3.odb
(17.05 KiB) 76-mal heruntergeladen

Re: Auswahl von Daten für ein Subformular

von turtle47 » Di, 05.07.2011 21:52

Kathrin hat geschrieben:Nö will niemand veräppeln. Bei mir kam und kommt KEINE Fehlermeldung.
Was hast Du denn unter Menue > Extras > Optionen > Sicherheit > Makrosicherheit eigestellt?

Re: Auswahl von Daten für ein Subformular

von Kathrin » Di, 05.07.2011 21:25

Nö will niemand veräppeln. Bei mir kam und kommt KEINE Fehlermeldung.

Egal dann versuch ich halt weiter.

Ist halt nicht einfach so als Anfänger- denke am Anfang braucht man halt ein paar Tips, die man dann ja später auch gerne weitergibt...

Trotzdem danke für die Tipps.

Re: Auswahl von Daten für ein Subformular

von komma4 » Di, 05.07.2011 06:58

1. „aber es passiert nichts“: willst Du uns veräppeln? Es kommt gleich eine Fehlermeldung.

2. Der Name Deines Haupt-Formulars ist „MainForm“, nicht „Mitarbeiterauswahl-test“ wenn in der Designer-Ansicht nichts anderes gesetzt ist.
Ändern über [Bearbeitungsmodus]rechteMaustaste>Formular...>Allgemein>Name

3. Nächste Fehlermeldung bei oFeld.text.
Arbeite mit XRAY, dann findest Du Deine Fehler selbst und schneller.

Bei einer Listbox ohne Mehrfachauswahl ist der ausgewählte Eintrag

Code: Alles auswählen

oFeld = oForm.getByName( "Mitarbeiterauswahl" )
idMit = oFeld.SelectedItems(0)
Damit erhälst Du die ID des gewählten Namens, nicht den Namen selbst

und der Code zum Filtern entsprechend

Code: Alles auswählen

oForm.filter = " MitarbeiterID =" & idMit 
Die IF Bedingung kannst Du rausnehmen, da das Makro an das Aktion ausführen Ereignis gekoppelt ist

4. Nochmals: Lasse nicht den Mitarbeiter die Liste filtern – mache das automatisch und zum Mitarbeiter bezogen.
Alles andere ist fehleranfällig und ausserdem ein Verstoss gegen das Datenschutzgesetz.
Aus dem gleichen Grund: trenne Daten und Formular (sonst kann ein Mitarbeiter die Tabellen ja einsehen).

5. Wenn Du schon beim Trennen bist: verwende nicht die interne HSQLDB, das Arbeiten mit ihr ist fehleranfällig

Re: Auswahl von Daten für ein Subformular

von Kathrin » Mo, 04.07.2011 23:44

So nun hab ich rumprobiert. Ich bin halt kein Experte...

Ich habe ein Listenfeld gemacht zur Auswahl des Mitarbeiters. Auf Basis dieser Auswahl müsste man dann doch den Filter für das Tabellenfeld setzen können? Aber es passiert nichts....

Hier mal mein Versuch für ein Makro:

Code: Alles auswählen

Sub Testfilter

Dim oDoc as Object, oForm as Object, oFeld as Object
Dim suchtext As String


oDoc = ThisComponent
oForm = oDoc.drawpage.forms.getByName("Stundenabrechnung-test")
      
oFeld = oForm.getByName("Mitarbeiterauswahl")
suchtext = oFeld.text

if suchtext <> "" then 
   oForm.filter = "( " + suchtext + " )"
   oForm.ApplyFilter=true
   else
   oForm.ApplyFilter = False
   end if 

oForm.reload

End Sub
Die Datenbank habe ich auch angehängt.


Muss ich da noch was umwandeln, da der Filter ja nicht über den Namen des Mitarbeiters geht ,sondern über die ID?

Danke!
Dateianhänge
Zeitabrechnung-2011-v3.odb
(17.05 KiB) 71-mal heruntergeladen

Re: Auswahl von Daten für ein Subformular

von Kathrin » Fr, 01.07.2011 09:27

Danke - okay dann probier ich es mal... hab schon fast befürchtet dass ich ein Makro brauch.

Es ist ein sehr kleines Unternehmen, so dass wir keine Karten oder ähnliches haben.

Re: Auswahl von Daten für ein Subformular

von komma4 » Fr, 01.07.2011 06:08

Kathrin hat geschrieben:Dies müsste man im ersten Schritt auswählen
Würde ich gar nicht "auswählen" lassen, denn dann kann eine Fehleingabe nicht ausgeschlossen werden (bewusst oder unabsichtlich: nach Datenschutzrichtlinien darf die Anzeige von Arbeitszeiten anderer Mitarbeiter bestimmt nicht erfolgen).


Also: die Mitarbeiternummer vorher ermitteln... habt ihr Ausweise und Lesegeräte an den Rechnern? Wenn nicht, dann die MAB-Nr. in den Umgebungsvariablen des Betriebssystems hinterlegen, sowas kann ausgelesen werden (Suchbegriff: ENVIRON) - bzw. über den Computer-Anmeldenamen aus einer BASE-Tabelle "fischen". Im Code meiner Extension BTL2 ist ein Anwendungsbeispiel zum Ermitteln des Benutzernamens.


Code zum Setzen des Filters auf ein Formular findest Du hier im Forum, Suchbegriff: APPLYFILTER. Nehme Google, mit dem Zusatz site:de.openoffice.info, da die Forensuche aktuell mal wieder nicht geht.

Hilft das weiter?

Re: Auswahl von Daten für ein Subformular

von Kathrin » Do, 30.06.2011 22:28

Hallo

danke für Deine Antwort - das funktioniert schon. Hab es auch ausprobiert. (das mit der Projekt-ID und dem Projektname war schon so vorgesehen - wollte es nur nicht so kompliziert machen in meiner Frage)

Aber es wäre schön, wenn der Mitarbeiter, der ja nur seine Daten sehen und eingeben will, auch nur die Daten für sich selbst (also für seine Mitarbeiter-ID) sieht. Im Prinzip also die alten und neuen Daten mit seiner Mitarbeiter-ID gefiltert werden. Dies müsste man im ersten Schritt auswählen und dann die entsprechenden Datensätze anzeigen im Tabellenfeld und neue Datensätze NUR für diese Mitarbeiter-ID eingeben und speichern können.

Hast Du da eine Idee?

Viele Grüße

Kathrin

Re: Auswahl von Daten für ein Subformular

von komma4 » Do, 30.06.2011 08:48

Willkommen im Forum.

Einfachste Form der Umsetzung:
Du brauchst kein Unterformular.


Erstelle ein neues Formular zur
Kathrin hat geschrieben:Tabelle Stundenabrechnung
ID
Mitarbeiter ID
Datum
Arbeitszeit
Projekt

(Verknüpfung über Mitarbeiter-ID)
mit allen Spalten, ausser ID (das sowieso eine Autowert-Feld ist, oder?).



Möchtest Du den Namen (anstelle der Mitarbeiter ID) im Auswahlfeld (Liste), dann ersetze das Feld "Mitarbeiter ID" durch ein Listenfeld,
Bild

und stelle ein:
Bild

Damit kann der Mitarbeiter seinen Namen wählen, die ID wird aber gespeichert.


Für "Projekte" würde ich auch eine Tabelle anlegen und in der Stundenerfassung dessen ID speichern... Vorgehen wie zuvor beschrieben

Hilft Dir das weiter?

Re: Auswahl von Daten für ein Subformular

von Kathrin » Mi, 29.06.2011 23:17

Ich habe mein Problem schon mal beschreiben - aber leider noch keine Lösung...

Um es nochmal zu präzisieren - ich habe 2 Tabellen:

Tabelle Mitarbeiter
Mitarbeiter-ID
Mitarbeitername: Name1, Name2

Tabelle Stundenabrechnung
ID
Mitarbeiter ID
Datum
Arbeitszeit
Projekt

(Verknüpfung über Mitarbeiter-ID)

Ich möchte ein Formular mit folgenden Schritten:

1) Auswahl des Mitarbeiters
2) Für diesen Mitarbeiter soll dann in die Tabelle Stundenabrechnung über das Formular Datum, Arbeitszeit und zugehöriges Projekt eingegeben werden.

Ich habe schon verschiedene Lösungsansätze versucht - bin aber eher Laie, deshalb suche ich einen Ansatz:

1. Weg
- Mitarbeiterauswahl in einem Listenfeld im Hauptformular
- Subformular verknüpft über die Mitarbeiter-ID. Die Daten habe ich in Tabellenform angezeigt. Ich würde gerne bisherige Daten anzeigen und neue Daten eingeben. Das mit der Anzeige der bisherigen Daten ist nicht unbedingt nötig..
Es funktioniert nicht wirklich!?

2.Weg (eher eine Idee)
Man könnte vielleicht ein Formular machen, in dem die Daten der Stundenabrechnung eingegeben werden können in Tabellenform. Dafür könnte man vielleicht einen Filter setzen wie folgt:
- Auswahlfeld für den Mitarbeiter / bzw. Mitarbeiter ID
- DIese Mitarbeiter-ID könnte man als Filter für die Datensätze im Tabellenformular mit Datum, Arbeitszeit und Projekt verwenden?
- Hierfür braucht man wahrscheinlich ein Makro?? Wie könnte man das machen?

Wäre nett wenn mir jemand hilft...

Grüße

Kathrin

Auswahl von Daten für ein Subformular

von Kathrin » Do, 26.05.2011 13:36

Hallo

ich habe folgendes Problem: Ich möchte für einen bestimmten Mitarbeiter die Arbeitszeiten in eine Tabelle eingeben (mit Datum, Projekt etc.). Hierfür habe ich 2 Tabellen: Mitarbeiter (mit ID und Name) und Stundenabrechnung (Primärschlüssel, Datum, Mitarbeiter ID, Stunden, Projekt,..). Beide sind über die Mitarbeiter-ID verknüpft.

Ich habe nun ein Formular erstellt, in dem zunächst der Mitarbeitername über ein Listenfeld ausgewählt wird.

In einem Subformular (Datenquelle: Stundenabrechnung, verknüpft über die Mitarbeiter ID) soll nun der Mitarbeiter seine Arbeitszeiten mit Datum etc. z.B. in einem Tabellenfeld eingeben können. Ich bekomme aber je nach Einstellungen immer wieder Probleme: z.B. wenn ich nur "Daten hinzufügen" zulasse, dann erzeugt er mir mit jeder Auswahl des Mitarbeiternamens eine neue Mitarbeiter-ID. Wenn ich das nicht zualsse, erscheinen im Unterformular immer die Datensätze mit Mitarbeiter-ID = 0 und auch wenn ich den Mitarbeitername im Listenfeld ändere, ändert sich die Mitarbeiter-ID nicht.

Kann mir jemand helfen?? Wäre nett..

Grüße

Kathrin

Nach oben