Michael Schneider: Access spinnt?!

Beitrag lesen

Hallo,

versuch mal das:

http://support.microsoft.com/support/kb/articles/q221/9/31.asp

HOWTO: Return Record's Autonumber Value Inserted
  into Access DB

Viele Gruesse aus dem Altmuehltal

Michael Schneider

info@asp-components.de
www.asp-components.de

Hallo SELFHTML-Gemeinde,
könnt ihr mir bei einem etwas merkwürdigem Problem mit ASP's und Access helfen?

also folgender programmablauf spielen sich ab:

  1. Werte in Datenbank (Access) schreiben, dabei eine Autonummer vergeben und diese sofort wieder auslesen.
  2. irdendwelche Berechnungen...
  3. an der Stelle der Autonummer wieder in dei DB schreiben.

alles klar?

Nun ist das nix aufregendes, aber Access macht daraus eine Sache die aufregt!
Denn es kommt erstens in unregelmäßigen Abständen vor, daß Access die entsprechende Stelle in der Tabelle nicht findet, obwohl diese eindeutig  existiert und zweitens, wenn ich einen Datensatz lösche, daß in eine "beliebige" Stelle geschrieben wird, aber nicht an die mit der zuletzt vergebenen Autonummer.
Ab und zu funktionier es auch.

Hat jemand von diesem inkonsequenten Handling, was Access da betreibt schon mal etwas gehört und kann mir verraten, wie ich es dazu motivieren kann, an die richtige stelle zu schreiben.

Hier noch der Skriptcoode

Vielen Dank und Gruß, Martin.

»»  Set ConnObj = Server.CreateObject ("ADODB.Connection")

Set rsUpdate = Server.CreateObject ("ADODB.Recordset")
      ConnObj.Open odbcsource
      rsUpdate.Open "Tabelle", ConnObj, adOpenKeySet, adCmdTable
   rsUpdate.AddNew
   WriteData
   rsUpdate.Update
   rsUpdate.MoveLast
   Autonummer = rsUpdate("Autonummer") 'hier wird autonummer vergeben

Set rsOrderMail=Server.CreateObject("ADODB.Recordset")

»»  rsOrderMail.ActiveConnection ="DSN=" & ODBCSource
»»  rsOrderMail.LockType= adLockOptimistic
»»  SQLSTR = "SELECT BestellID, OrderMail FROM Tabelle WHERE Autonummer =" & Autonummer ' an der stelle soll wieder reingeschreiben werden
»»  
»»  rsOrderMail.Open (SQLSTR)    
»»  rsOrderMail("OrderMail") = txtOrderMail
»»  rsOrderMail.Update    
»»  rsOrderMail.Close
»»  Set rsOrderMail = Nothing