Discussion:
gleicher Datensatz nach Requery klappt nicht immer
(zu alt für eine Antwort)
Koehler, Torsten
2005-03-07 17:44:53 UTC
Permalink
Hallo,
für den "After_Update" - Event benutze ich folgende Prozedur um wieder zum
aktuellen Datensatz zu gelangen:

----------------------------------------------------
Private Sub Form_AfterUpdate()

Dim Lesezeichen As Variant

Lesezeichen = Form_frm_order.Bookmark
Form_frm_order.Requery
Form_frm_order.Bookmark = Lesezeichen

End Sub
----------------------------------------------------

Das funktioniert soweit ganz gut, nur nicht bei allen Datensätzen. Ich habe
ca 1600 Datensätze und nur bis zu Datensatz Nr. 60 geht der Focus auch
wieder auf den zuletzt bearbeiteten Datensatz. Bei den Restlichen springt
das Formular immer zum ersten Datensatz.

Ist das normal oder hab ich was falsch gemacht?

Vielen Dank für Eure Hilfe!

Torsten
Ulf Knochenhauer
2005-03-08 07:48:55 UTC
Permalink
Hallo Torsten,
guck dir FAQ 4.5 an!
und für adp (da Du uns verswiegen hast, ob mdb oder adp):
'Gleicher Datensatz nach Requery

Dim lngstore As Long
Dim rs As ADODB.Recordset
lngstore = Me![ID]

'Verarbeitung

Set rs = Me.RecordsetClone
rs.Find "[ID] = " & lngstore
Me.Bookmark = rs.Bookmark

HTH
Ulf
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm

Suchen in den Newsgroups
http://groups.google.de/advanced_group_search?hl=de&lr=&ie=UTF-8

FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Koehler, Torsten
2005-03-10 13:29:56 UTC
Permalink
Hallo Ulf,

vielen Dank für Deine Bemühungen, aber es funktioniert noch nicht so, wie
gewollt - der Focus springt immer noch auf den ersten Datensatz zurück.

Zur Erklärung:

in einem ADP (Access 2003 + SQL Server 2000) habe ich zwei Tabellen, die in
einer 1-N Beziehung miteinander verknüpft sind:

tbl_user mit den Feldern user_id; given_name; family_name;
department; costcenter
tbl_order mit den Feldern order_id; user_id; order_description

Die Abfrage dazu sieht wie folgt aus:

SELECT TOP 100 PERCENT dbo.tbl_order.order_id,
dbo.tbl_order.user_id, dbo.tbl_user.family_name, dbo.tbl_user.given_name,
dbo.tbl_user.department,
dbo.tbl_user.costcenter,
dbo.tbl_order.order_description
FROM dbo.tbl_user RIGHT OUTER JOIN
dbo.tbl_order ON dbo.tbl_user.user_id =
dbo.tbl_order.user_id
ORDER BY dbo.tbl_order.order_id

Das Formular "Aufträge" nimmt diese Abfrage als Grundlage. In diesem
Formular habe ich ein Kombinationsfeld, welches seine Werte aus der Tabelle
tbl_user bezieht (user_id, family_name, given_name) und an
tbl_order.user_id, der Abfrage gebunden ist. Desweiteren sind in diesem
Formular Textfelder für Abteilung (in der Abfrage = tbl_user.department) und
Kostenstelle (in der Abfrage = tbl_user.costcenter) eingefügt, welche nach
Auswahl des Nachnamens im Kombinationsfeld mit den entsprechend verknüpften
Feldern "befüllt" werden sollen. In einer reinen MS Access Datenbank
funktioniert die Aktualisierung eben dieser Textfelder ohne Probleme. Mir
ist klar, daß in einem ADP die Daten erst zum Server gesendet werden müssen
und über einen Refresh an die Clientanwendung zurückgegeben wird.
Ich hab schon ne Menge mit Refresh, Requery und Bookmarks ausprobiert - und
lande im besten Fall immer wieder auf dem ersten Datensatz.

Wo ist der Haken oder gibt es da doch Grenzen der Anwendbarkeit?

Vielen Dank und Gruß

Torsten
Post by Ulf Knochenhauer
Hallo Torsten,
guck dir FAQ 4.5 an!
'Gleicher Datensatz nach Requery
Dim lngstore As Long
Dim rs As ADODB.Recordset
lngstore = Me![ID]
'Verarbeitung
Set rs = Me.RecordsetClone
rs.Find "[ID] = " & lngstore
Me.Bookmark = rs.Bookmark
HTH
Ulf
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm
Suchen in den Newsgroups
http://groups.google.de/advanced_group_search?hl=de&lr=&ie=UTF-8
FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Koehler, Torsten
2005-03-17 11:21:57 UTC
Permalink
Hallo NG,

kann mir hier denn wirklich keiner helfen?

Danke und Gruß!

Torsten
Post by Koehler, Torsten
Hallo Ulf,
vielen Dank für Deine Bemühungen, aber es funktioniert noch nicht so, wie
gewollt - der Focus springt immer noch auf den ersten Datensatz zurück.
in einem ADP (Access 2003 + SQL Server 2000) habe ich zwei Tabellen, die in
tbl_user mit den Feldern user_id; given_name; family_name;
department; costcenter
tbl_order mit den Feldern order_id; user_id; order_description
SELECT TOP 100 PERCENT dbo.tbl_order.order_id,
dbo.tbl_order.user_id, dbo.tbl_user.family_name, dbo.tbl_user.given_name,
dbo.tbl_user.department,
dbo.tbl_user.costcenter,
dbo.tbl_order.order_description
FROM dbo.tbl_user RIGHT OUTER JOIN
dbo.tbl_order ON dbo.tbl_user.user_id =
dbo.tbl_order.user_id
ORDER BY dbo.tbl_order.order_id
Das Formular "Aufträge" nimmt diese Abfrage als Grundlage. In diesem
Formular habe ich ein Kombinationsfeld, welches seine Werte aus der Tabelle
tbl_user bezieht (user_id, family_name, given_name) und an
tbl_order.user_id, der Abfrage gebunden ist. Desweiteren sind in diesem
Formular Textfelder für Abteilung (in der Abfrage = tbl_user.department) und
Kostenstelle (in der Abfrage = tbl_user.costcenter) eingefügt, welche nach
Auswahl des Nachnamens im Kombinationsfeld mit den entsprechend verknüpften
Feldern "befüllt" werden sollen. In einer reinen MS Access Datenbank
funktioniert die Aktualisierung eben dieser Textfelder ohne Probleme. Mir
ist klar, daß in einem ADP die Daten erst zum Server gesendet werden müssen
und über einen Refresh an die Clientanwendung zurückgegeben wird.
Ich hab schon ne Menge mit Refresh, Requery und Bookmarks ausprobiert - und
lande im besten Fall immer wieder auf dem ersten Datensatz.
Wo ist der Haken oder gibt es da doch Grenzen der Anwendbarkeit?
Vielen Dank und Gruß
Torsten
Post by Ulf Knochenhauer
Hallo Torsten,
guck dir FAQ 4.5 an!
'Gleicher Datensatz nach Requery
Dim lngstore As Long
Dim rs As ADODB.Recordset
lngstore = Me![ID]
'Verarbeitung
Set rs = Me.RecordsetClone
rs.Find "[ID] = " & lngstore
Me.Bookmark = rs.Bookmark
HTH
Ulf
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm
Suchen in den Newsgroups
http://groups.google.de/advanced_group_search?hl=de&lr=&ie=UTF-8
FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Hallo Ulf,

vielen Dank für Deine Bemühungen, aber es funktioniert noch nicht so, wie
gewollt - der Focus springt immer noch auf den ersten Datensatz zurück.

Zur Erklärung:

in einem ADP (Access 2003 + SQL Server 2000) habe ich zwei Tabellen, die in
einer 1-N Beziehung miteinander verknüpft sind:

tbl_user mit den Feldern user_id; given_name; family_name;
department; costcenter
tbl_order mit den Feldern order_id; user_id;
order_description

Die Abfrage dazu sieht wie folgt aus:

SELECT TOP 100 PERCENT dbo.tbl_order.order_id,
dbo.tbl_order.user_id, dbo.tbl_user.family_name, dbo.tbl_user.given_name,
dbo.tbl_user.department,
dbo.tbl_user.costcenter,
dbo.tbl_order.order_description
FROM dbo.tbl_user RIGHT OUTER JOIN
dbo.tbl_order ON dbo.tbl_user.user_id =
dbo.tbl_order.user_id
ORDER BY dbo.tbl_order.order_id

Das Formular "Aufträge" nimmt diese Abfrage als Grundlage. In diesem
Formular habe ich ein Kombinationsfeld, welches seine Werte aus der Tabelle
tbl_user bezieht (user_id, family_name, given_name) und an
tbl_order.user_id, der Abfrage gebunden ist. Desweiteren sind in diesem
Formular Textfelder für Abteilung (in der Abfrage = tbl_user.department)
und
Kostenstelle (in der Abfrage = tbl_user.costcenter) eingefügt, welche nach
Auswahl des Nachnamens im Kombinationsfeld mit den entsprechend verknüpften
Feldern "befüllt" werden sollen. In einer reinen MS Access Datenbank
funktioniert die Aktualisierung eben dieser Textfelder ohne Probleme. Mir
ist klar, daß in einem ADP die Daten erst zum Server gesendet werden müssen
und über einen Refresh an die Clientanwendung zurückgegeben wird.
Ich hab schon ne Menge mit Refresh, Requery und Bookmarks ausprobiert - und
lande im besten Fall immer wieder auf dem ersten Datensatz.

Wo ist der Haken oder gibt es da doch Grenzen der Anwendbarkeit?

Vielen Dank und Gruß

Torsten
Post by Koehler, Torsten
Hallo Torsten,
guck dir FAQ 4.5 an!
'Gleicher Datensatz nach Requery
Dim lngstore As Long
Dim rs As ADODB.Recordset
lngstore = Me![ID]
'Verarbeitung
Set rs = Me.RecordsetClone
rs.Find "[ID] = " & lngstore
Me.Bookmark = rs.Bookmark
HTH
Ulf
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm
Suchen in den Newsgroups
http://groups.google.de/advanced_group_search?hl=de&lr=&ie=UTF-8
FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Ulf Knochenhauer
2005-03-17 13:12:51 UTC
Permalink
Hallo Torsten,
was klappt denn nicht? Ich hatte Dir doch eine Lösung geschrieben!
Post by Ulf Knochenhauer
Dim lngstore As Long
Dim rs As ADODB.Recordset
lngstore = Me![ID]
'Du merkst Dir die ID von dem Datensatz, wo Du wieder hin willst.
Post by Ulf Knochenhauer
'Verarbeitung
Me.Requery
'Und jetzt gehst Du wieder zu dem Datensatz, dessn ID Du Dir gemerkt
hattest.
Post by Ulf Knochenhauer
Set rs = Me.RecordsetClone
rs.Find "[ID] = " & lngstore
Me.Bookmark = rs.Bookmark
Grüße
Ulf
--
Informationen für Newbies (Neulinge) in den Access-Newsgroups
http://www.doerbandt.de/Access/Newbie.htm

Suchen in den Newsgroups
http://groups.google.de/advanced_group_search?hl=de&lr=&ie=UTF-8

FAQ: http://www.donkarl.com/AccessFAQ.htm
KnowHow.mdb: http://www.freeaccess.de/knowhow.asp
Koehler, Torsten
2005-03-18 11:23:27 UTC
Permalink
Hallo Ulf,

soweit funktioniert es ja - bis einschliesslich Datensatz Nr. 62 von
1665. Bei allen Datensätzen dahinter springt der Kursor wieder auf den
ersten Datensatz. In den dazugehörigen Abfragen und Tabellen konnte ich
bis jetzt keine Inkonsistenzen bzw. Ungereimtheiten finden.

Gibt es sowas wie defekte Tabellen? Ich hab kein Problem die
zugrundeliegende Tabelle neu zu erstellen und die älteren Daten in ein
Archiv zu hängen.

Viele Grüße

Torsten
Post by Ulf Knochenhauer
Hallo Torsten,
was klappt denn nicht? Ich hatte Dir doch eine Lösung geschrieben!
Post by Ulf Knochenhauer
Dim lngstore As Long
Dim rs As ADODB.Recordset
lngstore = Me![ID]
'Du merkst Dir die ID von dem Datensatz, wo Du wieder hin willst.
Post by Ulf Knochenhauer
'Verarbeitung
Me.Requery
'Und jetzt gehst Du wieder zu dem Datensatz, dessn ID Du Dir gemerkt
hattest.
Post by Ulf Knochenhauer
Set rs = Me.RecordsetClone
rs.Find "[ID] = " & lngstore
Me.Bookmark = rs.Bookmark
Grüße
Ulf
Loading...