Access Formular bringt die Daten durcheinander
Strubli
Gesendet: 20.12.18 19:22
Betreff: RE: Access Formular bringt die Daten durcheinander


Member

Beiträge: 5

Hallo Peter

Danke für die ersten Rückmeldungen.

Die Abfrage qry_lkup_Controllingampel sieht wie folgt aus
-----------------------------------
SELECT
tblEinstellungen.[ID],
tblEinstellungen.[strArt],
tblEinstellungen.[strBez],
tblEinstellungen.[strBezSpezial],
tblEinstellungen.[lngEbene]
FROM tblEinstellungen
WHERE (((tblEinstellungen.[strArt])="Controllingampel"));
------------------------------------

und die Funktion mergeMassin1Field sieht wie folgt aus:
------------------------------------------------
Public Function mergeMassin1Field(lngProID As Long, lngKatId As Long)
'lngProID = Projektnr.
'lngKatId = Link auf Kategorie
'Anhand der Projektnr. und dem Link auf die Kategorie (Controlling-ID) werden alle darin befindlichen Datensätze in ein Feld geschrieben.

Dim rs As DAO.Recordset 'recordset für Massnahmen
Dim strSQL As String 'Aufnahme SQL-Code
Dim strTmp As String 'temporärer MergeString


'SQL-Abfrage füllen
strSQL = "SELECT tblMassnahmen.strMassKurz, tblMassnahmen.lngProjekt, tblMassnahmen.lngCont, tblMassnahmen.boolMFertig " & _
"FROM tblMassnahmen " & _
"WHERE (((tblMassnahmen.lngProjekt)=" & lngProID & ") AND ((tblMassnahmen.lngCont)=" & lngKatId & "));"
Set rs = CurrentDb.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
strTmp = ""
Else
strTmp = ""
rs.MoveFirst
Do While Not rs.EOF
If rs.Fields("boolMFertig") = True Then
strTmp = strTmp & ChrW(9746) & " "
Else
strTmp = strTmp & ChrW(9744) & " "
End If
strTmp = strTmp & rs.Fields("strMasskurz") & vbCrLf
rs.MoveNext
Loop
End If

Set rs = Nothing
mergeMassin1Field = strTmp

End Function
-----------------------------------------------------------------------

und die andere Funktion, welche mit get_strEinstellungswert("Controllingtermin") aufgerufen wird, sieht wie folgt aus:
----------------------------------------------------------------------
Public Function get_strEinstellungswert(strWert As String, Optional varDetail As Variant, Optional boolWert2 As Boolean) As Variant
'Auslesen eines Wertes aus den Einstellungen
'strWert = Angabe, welcher Wertebereich ausgelesen werden soll
'VarDetail = Angabe, welcher Detailwert aus der Werteliste ausgelesen werden soll. Die Angabe ist optional
'boolWert2 = Wenn 2. Wert ausgelesen werden soll = True, sonst False oder leer

Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Dim strSQL As String

If IsError(varDetail) Then
strSQL = "SELECT tblEinstellungen.[ID], " & _
"tblEinstellungen.[strArt], tblEinstellungen.[strBez], " & _
"tblEinstellungen.[strBezSpezial], tblEinstellungen.[lngEbene] " & _
"FROM tblEinstellungen " & _
"WHERE ((tblEinstellungen.[strArt])='" & strWert & "');"
Else
strSQL = "SELECT tblEinstellungen.[ID], " & _
"tblEinstellungen.[strArt], tblEinstellungen.[strBez], " & _
"tblEinstellungen.[strBezSpezial], tblEinstellungen.[lngEbene] " & _
"FROM tblEinstellungen " & _
"WHERE (((tblEinstellungen.[strArt])='" & strWert & "') AND ((tblEinstellungen.[lngEbene])=" & varDetail & "));"
End If
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
get_strEinstellungswert = "Null"
Else
rs.MoveFirst
If boolWert2 Then
get_strEinstellungswert = rs.Fields("strBezSpezial")
Else
get_strEinstellungswert = rs.Fields("strBez")
End If
End If
Set db = Nothing
End Function
-----------------------------------------------------


Die Tabelle tblEinstellungen enthält globale Einstellungen, mit denen ich verschiedene Funktionen steuere. Im vorliegenden Fall relevant:
------------------------------------------------------------------------------------------------
ID ----- strArt -------------- strBez -- strBezSpezial -- lngEbene - strBem
19 ----- Controllingtermin --- 4 ------- ---------------- 0 -------- ID-Wert der letzten Controllingperiode. Dieser Wert wird per Code aus- und eingelesen und sollte daher nicht manuell verändert werden.
20 ----- Controllingampel ---- grün ---- 4697456 -------- 1 -------- "Ampelwert ""grün"" - gut"
21 ----- Controllingampel ---- gelb ---- 62207 ---------- 2 -------- "Ampelwert ""gelb"" - Achtung"
22 ----- Controllingampel ---- rot ----- 2366701 -------- 3 -------- "Ampelwert ""rot"" - kritisch"
---------------------------------------------------------------------------------------------------

Ich hoffe, du kannst mit diesen Informationen etwas anfangen.

Besten Dank
Gruss
Daniel
Top of the page Bottom of the page