Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datensätze mit gleichem Namen(aber andere Werte) in Textfelder

Begonnen von Rin, August 27, 2010, 14:02:17

⏪ vorheriges - nächstes ⏩

Rin

Hallo alle zusammen...

ich hab hier ein Problemchen, das ich leider nicht selber lösen kann...brauche unbedingt eure Hilfe...

Also ich habe zwei Tabellen: "T_Mitarbeiter", "T_Mitarbeiter_Tagessatz" und ein Formular "F_Benutzer_Verwalten".

"T_Mitarbeiter"
RecID Name
1 Müller
2 Meier
3 Mustermann
"T_Mitarbeiter_Tagessatz"
RecID Leistungs_Nr
1 2
1 5
2 2
2 3
2 5
3 5
Einen Mitarbeiter kann mehrere Tagessätze haben. D.h Mitarbeiter mit RecID 1 kann zB Tagessatz 1 und 5 haben.

Das Formular "F_Benutzer_Verwalten" besteht aus ein Kombifeld "kName", die Textfelder "tVorname", "tPasswort", "tGruppen", "tLeist1", "tLeist2", "tLeist3" und das Button "bAendern". Man kann mit Hilfe des Kombifelds den Name eines Mitarbeiter wählen. Das Formular übernimmt die zum Mitarbeiter gehörigen Informationen in die Textfelder. Die unterschiedlichen Leistungs_Nr eines Mitarbeiters sollen in die Textfelder "tLeist1", "tLeist2" und "tLeist3" gezeigt werden. Das Problem ist, das Program zeigt nur das erste Leistungs_Nr von einem Mitarbeiter. Die zweite und dritte Leistungs_Nr (falls vorhanden) wurden nicht gezeigt...

Meine Frage: wie soll ich das Code formulieren, damit das Formular alle unterschiedlichen Leistungs_Nr eines Mitarbeiters zeigt. Die erste Leistungs_Nr soll in das Textfeld "tLeist1", die zweite Leistungs_Nr in das Textfeld "tLeist2" und die dritte Leistungs_Nr in das Textfeld "tLeist3". Falls ein Mitarbeiter weniger als drei Leistungs_Nr hat, soll das nicht benutzten Textfeld leer bleiben...

Mein Code sieht bis jetzt so aus

Private Sub kName_AfterUpdate()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Dim User As String, ID As String, strSQL As String

User = Me!kName
ID = DLookup("RecID", "[T_Mitarbeiter]", "Name = '" & User & "'")

Me.tVorname = DLookup("Vorname", "[T_Mitarbeiter]", "Name='" & User & "'")
Me.tPasswort = DLookup("Passwort", "[T_Mitarbeiter]", "Name='" & User & "'")
Me.tGruppen = DLookup("Gruppen_ID", "[T_Mitarbeiter]", "Name='" & User & "'")

strSQL = "SELECT T_Mitarbeiter_Tagessatz.RecID AS RecID, T_Mitarbeiter_Tagessatz.Leistungs_Nr AS Leistungs_Nr " & _
        "FROM T_Mitarbeiter_Tagessatz, T_Mitarbeiter " & _
        "WHERE T_Mitarbeiter.RecID = T_Mitarbeiter_Tagessatz.RecID AND T_Mitarbeiter.Name = '" & User & "' " & _
        "GROUP BY T_Mitarbeiter_Tagessatz.RecID, T_Mitarbeiter_Tagessatz.Leistungs_Nr"

Set rs = db.OpenRecordset(strSQL)

rs.MoveFirst

If Not rs.EOF Then
Me.tLeist1 = rs!Leistungs_Nr
End If

If Not rs.EOF And rs!Leistungs_Nr <> Me.tLeist1 Then
Me.tLeist2 = rs!Leistungs_Nr
End If

If Not rs.EOF And rs!Leistungs_Nr <> Me.tLeist1 And rs!Leistungs_Nr <> Me.tLeist2 Then
Me.tLeist3 = rs!Leistungs_Nr
End If


End Sub


Danke im Voraus

Grüß,
R

MzKlMu

Hallo,
der Ansatz ist falsch. Solche Aufzählungsfelder ("tLeist1", "tLeist2" und "tLeist3") sind immer ein Hinweis auf einen falschen Aufbau. Du brauchst noch eine 3.Tabelle zur Zuordnung der Leistungsnr zu einem Mitarbeiter. Und zwar in einem Feld.
Für 3 Leistungen entstehen dann 3 Datensätze mit einem Feld für die Leistung.
Gruß Klaus

Rin

Hallo...
danke für dein Antwort...mir ist leider nicht ganz klar was ich dann ändern muss..Kannst du mir vllt anhand Tabellenbeispiele zeigen was zu tun ist..(...bin noch Access-Anfänger...)

Danke nochmals...

MzKlMu

#3
Hallo,
Im Prinzip kannst Du die Anzeige mit einem Hauptformular (Mitarbeiter) und darin einem Unterformular (Leistung) seher kompfortabel realisieren.
Du siehst dann auf einen Blick die einem Mitarbeiter zugeordneten Leistungen. Ohne eine einzige Zeile VBA.

Für die Leistungen oder (Tagessätze) ist eine extra Tabelle erforderlich.

Erkläre mal genauer die Bedeutung von Tagessatz und Leistung.
Gruß Klaus

Rin

Je nach Projekt und Mitarbeiter ist die Leistungs_Nr anders. Grob gesagt; die Leistungs_Nr ist der Tageslohn (= 8 Stunden) eines Mitarbeiters bei einem bestimmten Projekt.

Beispiel: Ein Mitarbeiter A hat zB die Leistungs_Nr 1 und 2. Dieser Mitarbeiter arbeitet dann den ganzen Tag (= 8 Stunden) bei einem Projekt B, das die Leistungs_Nr 2 hat. Die Leistungs_Nr 2 hat ein Tagessatz von 500,00 €. D.h. die Arbeit ist dann 500,00€ wert.

MzKlMu

Hallo,
anbei mal ein Beispiel. Reduziert auf das geschilderte Szenario.

Ich fürchte aber, das Ganze ist noch nicht sehr durchdacht. Wie willst Du unterschiedliche Zeiten erfassen (z.B. 4 Std.)
Wie werden die Zeiten zu einem Projekt erfasst?
Wieso kann ein Mitarbeiter verschiedene Tagessätze haben?



[Anhang gelöscht durch Administrator]
Gruß Klaus