Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: I985 am Dezember 03, 2015, 09:29:53

Titel: Dmin Funktion mit mehreren Kriterien
Beitrag von: I985 am Dezember 03, 2015, 09:29:53
Hallo und guten Tag zusammen,

leider muss ich mich noch einmal mit einem Problem an euch wenden.
Ich habe eine Union-Abfrage erstellt, die aus unterschiedlichen Tabellen Blechstärken von Bauteilen zusammenfasst um diese nach der geringsten Blechstärke eines Bauteils zu suchen. Um die geringste Blechstärke zu ermitteln wird in einem Formular zum Anlegen der Teile eine Dmin Funktion mit 2 Kriterien verwendet.


Private Sub Form_AfterUpdate()
Dim t_min As Double

Dim db As DAO.Database
Set db = CurrentDb

t_min = DMin("b1", "Union_tmin", Sachnummer = Me.Sachnummer And Punkt = Me.Punkt)

With CurrentDb().OpenRecordset("SELECT Vorgaben_Messwerte_SZV.Sachnummer, Vorgaben_Messwerte_SZV.Punkt, Vorgaben_Messwerte_SZV.T_min_test FROM Vorgaben_Messwerte_SZV Where Sachnummer='" & Me.Sachnummer & "' And Punkt= " & Me.Punkt)
    .Edit
    .Fields("t_min_test") = t_min
    .Update
End With
   
    db.Close
    Set db = Nothing

debug.Print t_min

End Sub


Bei "Sachnummer" handelt es sich um einen String. Bei "Punkt" um Integer.

Die Suche mit den Kriterien müsste als Ergebnis 2 bis maximal 3 Datensätze aus, aus denen dann im Feld "B1" nach dem geringsten gesucht werden müsste. Das scheint aber offensichtlich nicht zu funktionieren denn bei mir als Ergebnis von t_min immer 1 raus... Evtl ist dies das Ergebnis aus dem ersten Datensatz!?

Der Code läuft sonst fehlerfrei durch.

Wenn ich das Suchkriterium wie im SQL Code eingebe, wird ein Kompilierungsfehler angezeigt.
t_min = DMin("b1", "Union_tmin", Sachnummer='" & Me.Sachnummer & "' And Punkt= " & Me.Punkt)

Mir ist klar, dass es in einer normalisierten DB auch einfacher zu lösen wäre. Das wäre aber nicht möglich bzw. nur mit einem ganz erheblichen Aufwand zu lösen.

Vielen Dank schon mal und besten Gruß!
Titel: Re: Dmin Funktion mit mehreren Kriterien
Beitrag von: DF6GL am Dezember 03, 2015, 09:58:46
Hallo,

hier dürfte der Hase im Pfeffer liegen:

Dim db As DAO.Database
Set db = CurrentDb

t_min = DMin("b1", "Union_tmin", Sachnummer = '" & Me!Sachnummer & "' And Punkt = " &  Me!Punkt)
Titel: Re: Dmin Funktion mit mehreren Kriterien
Beitrag von: I985 am Dezember 03, 2015, 10:30:45
Oh mann.... Vielen Dank für deine Hilfestellung!

Das und ein fehlendes " waren das Problem.

Mit:
Zitatt_min = DMin("b1", "Union_tmin", "Sachnummer = '" & Me!Sachnummer & "' And Punkt = " & Me!Punkt)
funktioniert es jetzt.

1000 Dank!
Titel: Re: Dmin Funktion mit mehreren Kriterien
Beitrag von: MaggieMay am Dezember 03, 2015, 10:33:22
Hallo,

warum nicht gleich eine Aktualisierungsabfrage ausführen?
Dim strSQL As String
strSQL = "Update Vorgaben_Messwerte_SZV " & _
             "SET T_min_test = (Select Min(b1) From  Union_tmin " & _
                                       "Where Sachnummer='" & Me.Sachnummer & "' And Punkt=" & Me.Punkt & ") " & _
             "WHERE Sachnummer='" & Me.Sachnummer & "' And Punkt= " & Me.Punkt
CurrentDB.Execute strSQL, dbFailOnError


PS:
Die Variable "db" wird nicht benutzt, ist also überflüssig.