Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: hover am Oktober 17, 2012, 09:53:53

Titel: Neuen Datensatz erstellen
Beitrag von: hover am Oktober 17, 2012, 09:53:53
Hallo, ich habe eine Access 2.0 Datenbank auf Access 2003 konvertiert und möchte diese mit der Access 2010 Runtime ausführen lassen. Es dürfte bis jetzt alles passen, ich scheitere nur am Erstellen von neuen Datensätzen.
Es gibt ein Hauptformular (frmmitarb) mit einem Unterformular (ufrmbesmitarb). Wenn man auf "Neuer Datensatz klickt" soll einfach ein neuer Datensatz mit einer forlaufenden Nummer ersellt werden. Das Feld "mitcode" hat einen Primärschlüssel und die Datensätze 1-2000 und der neue Datensatz soll jetzt 2001 bekommen.
Aber er bekommt die ID -18900 . Ansonsten funkitoniert alles, man kann Daten in den Datensatz speichern, genau suchen und nacher löschen.
Nur die forlaufende Nummer checkt er nicht.

Private Sub btn_neuds_Click()
On Error GoTo Err_btn_neuds_Click

    DoCmd.GoToRecord , , acNewRec
   
    Forms![frmmitarb]![mitzunam] = " "
    Me![ufrmbesmitarb].Formulare![besmitcode] = Me![mitcode]
    Forms![frmmitarb]![mitzunam].SetFocus
   
Exit_btn_neuds_Click:
    Exit Sub

Err_btn_neuds_Click:
    MsgBox Error$
    Resume Exit_btn_neuds_Click
   
End Sub


Wäre super wenn jemand einen Tip hat, habe leider bis jetzt noch nicht wirklich Access Erfahrung :-)
Danke!
Titel: Re: Neuen Datensatz erstellen
Beitrag von: DF6GL am Oktober 17, 2012, 10:59:03
Hallo,



Welchen Datentyp hat denn das Primärschlüsselfeld?

Eine "Laufende Nummer" ist an sich nicht nötig, es gibt auch keinen Standard-Vorgang in Access, der eine (richtige) laufende Nr erzeugt. Ein Feld mit Datentyp "Autowert" kann zwar auf "Inkrementell" gestellt werden, ist aber keine Garantie, dass keine Lücken auftreten können/werden.


Weiterhin ist Dein Code (bzgl. der PS-Zuweisung) überflüssig.  Wenn die Tabellen über das/die Schlüsselfeld/er in den Tabellen in Beziehung stehen, dann reicht es aus, im UFO-Steuerelement die Eigenschaften "Verknüpfen von/nach" auf eben diese Schlüsselfeder zu setzen.


Private Sub btn_neuds_Click()
On Error GoTo Err_btn_neuds_Click

   DoCmd.GoToRecord , , acNewRec
   
  Me!mitzunam] = " "  
Me![UFO-SteuerelementName]![besmitcode] = Me![mitcode]    

Me![UFO-Steuerelementname].SetFocus    
Exit_btn_neuds_Click:
   Exit Sub

Err_btn_neuds_Click:
   MsgBox Error$
   Resume Exit_btn_neuds_Click
   
End Sub
Titel: Re: Neuen Datensatz erstellen
Beitrag von: hover am Oktober 17, 2012, 11:15:04
Danke, ich habe die 3 Zeilen rausgenommen, das passt :-)
Ich habe das Feld auf Autowert und Inkrement, ändern kann ich es nicht, dann schreibt er, der Datentyp wird nicht unterstützt.

Es muss ja auch nicht zwingend eine forlaufende Nummer sein, aber "-200754" dann "-200753" usw sieht wirklich nicht schön aus.
Kann man das ändern?
Titel: Re: Neuen Datensatz erstellen
Beitrag von: 69bruno am Oktober 17, 2012, 11:48:53
Man kann das Feld auf unsichtbar setzen    ::)
Titel: Re: Neuen Datensatz erstellen
Beitrag von: hover am Oktober 17, 2012, 12:07:14
Danke, aber ich hab nach langer Suche eine Lösung gefunden:
http://allenbrowne.com/ser-40.html

Einmal das Skript über die Tabellen laufen lassen und alle Nummern passen wieder! Ein Traum :-)
Titel: Re: Neuen Datensatz erstellen
Beitrag von: DF6GL am Oktober 17, 2012, 12:26:57
Hallo,


das funktioniert aber nur , solange keine Datensätze in anderen Tabellen mit diesen "falschen" Werten verknüpft sind....