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