Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Wert suchen und hochzählen

25 views
Skip to first unread message

sk

unread,
Apr 2, 2002, 7:55:27 AM4/2/02
to
Hallo,

hab jetzt gerade angefangen in access ein bisschen tiefer einzusteigen und
bräuchte evtl. kurzen ratschlag.

Folgendes Problem:
-in der datenbank gibt es zwei id-anfangswerte, einer beginnt mir 1 und
einer mit 10000
- es soll wenn man intern einen neuen datensatz hinzufügt die letzte id
unter 10000 gefunden werden, der wert um 1 hochgezählt und in den neuen
datensatz in der id eingetragen werde.

Mein Lösungsweg(fehlerhaft??)
- OID Steuerfeld der ID
- bpkontakte aktuelles Formular
- bricht leider in der zeile mit dem recordsetclone mit einer typen
unverträglichkeitserklärung ab

Private Sub dataneu_Click()

Dim rst As Recordset
dim counter as integer

counter = 0
Set rst = Forms!bpkontakte.RecordsetClone
rst.movefirst

while not rst.eof
if counter < oid then
counter = oid
end if
wend

DoCmd.GoToRecord , , acNewRec
OID = counter

End sub

danke schonmal im voraus

seb


Ralf Albrecht

unread,
Apr 2, 2002, 10:22:16 AM4/2/02
to
Hi,

leider schreibst Du nicht, mit welcher Access-Version du arbeitest. Bei Acc
2000 und 2002 musst Du zuerst einen Verweis auf DAO setzen, im VBA-Editor
mit Extras Verweise Microsoft DAO 3.6; denn RecordsetClone liefert ein
DAO.Recordset zurück. Lösung könnte wie folgt aussehen: Ansonsten kann dein
Code aber auch nicht funktionieren, du hast eine klassische Endlosschleife
programmiert.

Viel einfacher geht es mit:

OID = DMax("HIER FELDNAME", Me.RecordSource) + 1

Gruß

Ralf

sk

unread,
Apr 2, 2002, 11:30:17 AM4/2/02
to
Hi,
erstmal danke.
1. hat ich auch nach dem bereitstellen schon gesehen, dass das rst.movenext
in der schleife fehlte, aber so weit komm ich ja garnicht
2. ich arbeite mit 2000 und 2002 ->soll aber endgültig auf 2000 laufen
3. DAO Verweis ist gelegt
4. Leider hast du was bei der problemstellung übersehen, wenn ich den
lösungscode richtig interpretiere
- denn ich habe eine id nummer von 1-... < 10000 und im gleichen feld werden
externe datensätze ab 10000-...
importiert / hochgezählt.
- und dein lösungvorschlag gibt doch den höchsten wert und zählt den hoch,
aber ich suche den höchsten wert unter 10000
geht das auch mit so einem einzeiler oder war dann doch auf der richtigen
spur ??

danke

seb


Ralf Albrecht

unread,
Apr 2, 2002, 2:06:01 PM4/2/02
to
Hi,

Versuch mal:

OID = DMax("HIER FELDNAME", Me.RecordSource,"FELDNAME < 10000") + 1

Gruß
Ralf

sk

unread,
Apr 2, 2002, 3:07:38 PM4/2/02
to

"Ralf Albrecht" <ralb...@programmiererei.de> schrieb im Newsbeitrag
news:OkLNaln2BHA.1860@tkmsftngp04...
0 new messages