Neuigkeiten:

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

Mobiles Hauptmenü

Dmin Funktion mit mehreren Kriterien

Begonnen von I985, Dezember 03, 2015, 09:29:53

⏪ vorheriges - nächstes ⏩

I985

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ß!

DF6GL

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)

I985

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!

MaggieMay

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.
Freundliche Grüße
MaggieMay