Meine Situation ist, dass ich eine Tabelle haben, dass, wenn vereinfacht, sieht wie folgt aus:MS-Access den größten Wert kleiner als aktuelle Wert Kriterien wählen
Sort| IsHeader
1 | 0
2 | 0
3 | 1
4 | 0
5 | 0
6 | 1
7 | 0
8 | 0
9 | 0
Ich versuche, eine Abfrage zu machen, die ein Update neue HeaderSort Linie für jede Detailzeile zu zeigen, welche header dieser Linie gehört mit diesem Endergebnis,:
Sort| IsHeader| HeaderSort
1 | 0 | 0
2 | 0 | 0
3 | 1 | 3
4 | 0 | 3
5 | 0 | 3
6 | 1 | 6
7 | 0 | 6
8 | 0 | 6
9 | 0 | 6
In T-SQL kann ich es ganz einfach tun:
update MT set HeaderSort =
(
select isnull(max(Sort),0) from MyTable where Sort <= MT.Sort and IsHeader = 1
) as HeaderSort
from MyTable MT
an einem Zugangs Version Mein Versuch ist wie folgt: „Der Betrieb eine aktualisierbare Abfrage verwenden müssen“
Update MyTable set HeaderSort =
(
select nz(max(Sort),0) from MyTable where Sort <= MT.Sort and IsHeader = 1
)
Dies ergibt jedoch ein Error. Ist mein Fehler in der Logik zum Abrufen der Werte oder nur einige ms-Zugriffssyntax?
Das ist nicht wahr. 'DLookUp' ist kein echtes Domain-Aggregat, sondern ein Recordset-Wrapper, der das erste Ergebnis zurückgibt, soweit ich weiß. Sie können Aggregate und Ausdrücke in 'DLookUp' verwenden. 'DLookUp (" Max (Feld1) "," MyTable ")' ist nur ein weniger optimiertes gleich 'DMax (" Field1 "," MyTable ")' –
Ich denke, ich dachte entlang der Linie, es vollständig in einem SQL zu haben Aussage, aber für meine Zwecke funktioniert die DLookup-Methode gut. – Quark