AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Autoincrement funktioniert nicht ???
Thema durchsuchen
Ansicht
Themen-Optionen

Autoincrement funktioniert nicht ???

Ein Thema von myownshadow · begonnen am 17. Feb 2009 · letzter Beitrag vom 18. Feb 2009
Antwort Antwort
Seite 1 von 3  1 23      
myownshadow

Registriert seit: 23. Okt 2004
Ort: Berlin
18 Beiträge
 
Delphi 2010 Professional
 
#1

Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 11:53
Datenbank: MSSQL Express • Version: 2005 • Zugriff über: DBExpress
Hallo !
Ich habe eine MSSQL Datenbank mit dem "MS SQL Server Management Studio Express" erstellt und möchte die nun bearbeiten.

Ich habe mit TSQLConnection eine Verbindung zur Datenbank hergestellt, funktioniert. Anschließend schau ich mit TSimpleDataSet auf eine Tabelle und möchte den Inhalt über TDatasource in einem TDBGrid darstellen.
Zur Navigation benutze ich dan TDBNavigator.
So weit so gut.

Immer wenn ich mit dem TDBNavigator einen neuen Datensatz erzeuge und später speichern will, erhalte ich eine Exception, da das Feld meines PrimSchlüssels leer ist.
Aber müsste der sich denn nicht selbst incrementieren ? Oder muss ich das selbst tun ?

Wenn ich mit dem Management Studio einen neuen Datensatz anlege, funktioniert das autoincrement immer.

Vielen dank
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 12:10
Also bei FB ist das ja etwas anders... Hat das Autoinc Feld auch noch den Wert "NOT NULL"? Normalerweise das Autoinc Feld nicht als Pflichtfeld definieren (damit man es weglassen kann), da ja erst hinterher von der DB-Engine ein Wert eingesetzt wird.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 12:13
Zitat:
Also bei FB ist das ja etwas anders... Hat das Autoinc Feld auch noch den Wert "NOT NULL"? Normalerweise das Autoinc Feld nicht als Pflichtfeld definieren (damit man es weglassen kann), da ja erst hinterher von der DB-Engine ein Wert eingesetzt wird.
Die automatische Füllung hat nichts mit NOT NULL zu tun. Wird es serverseitig automatisch gefüllt, darf es u.U. auf dem Client nicht gefüllt werden
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 12:17
Hallo,
Zitat von myownshadow:
Hallo !
Ich habe eine MSSQL Datenbank mit dem "MS SQL Server Management Studio Express" erstellt und möchte die nun bearbeiten.

Ich habe mit TSQLConnection eine Verbindung zur Datenbank hergestellt, funktioniert. Anschließend schau ich mit TSimpleDataSet auf eine Tabelle und möchte den Inhalt über TDatasource in einem TDBGrid darstellen.
Zur Navigation benutze ich dan TDBNavigator.
So weit so gut.

Immer wenn ich mit dem TDBNavigator einen neuen Datensatz erzeuge und später speichern will, erhalte ich eine Exception, da das Feld meines PrimSchlüssels leer ist.
Aber müsste der sich denn nicht selbst incrementieren ? Oder muss ich das selbst tun ?

Wenn ich mit dem Management Studio einen neuen Datensatz anlege, funktioniert das autoincrement immer.

Vielen dank
aufgrund der Fehlerbeschreibung vermute ich, dass der Client nicht weiß, dass der Primärschlüssel erst von der Datenbank gefüllte wird und deshalb das Fehlen des Wertes bemängelt.

Was passiert, wenn Du für den Primärschlüssel einen Wert eingibst, wird der dann gespeichert oder wird der Wert gespeichert, den die Datenbank automatisch vergibt oder erhälst Du von der Datenbank eine Fehlermeldung, dass für das Feld kein Wert eingegeben werden darf?
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 12:22
Zitat von mkinzler:
Die automatische Füllung hat nichts mit NOT NULL zu tun. Wird es serverseitig automatisch gefüllt, darf es u.U. auf dem Client nicht gefüllt werden
Ja, aber er lässt ja das Feld absichtlich leer. Dachte also das die DB erstmal einen Wert erwartet (weil definiert), ohne zu Wissen, dass es sowieso später gefüllt wird. Somit einfach Pflichtfeld entfernen und Problem gelöst?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 12:23
In diesem Fall könnte man auch mit einer Sequenz arbeiten (Client holt sich Wert und fügt ihn ein)
Markus Kinzler
  Mit Zitat antworten Zitat
myownshadow

Registriert seit: 23. Okt 2004
Ort: Berlin
18 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 13:30
Zunächst vielen Dank für die schnellen Antworten.

Zunächst habe ich auch selbst einen Wert eingegeben, aber dann beschwert sich die Datenbank mit einem "EDatabaseError" darüber, das ich dies tue.

So, nun habe ich im TSimpleDataSet das faRequired auf false gesetzt (so war es doch gemeint, nicht wahr ?).
Die Fehlermeldung "EDatabaseError" bleibt jedoch erhalten.
Miniaturansicht angehängter Grafiken
dbfehlerbeimaktualisieren1_341.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von chericks
chericks

Registriert seit: 12. Jun 2003
Ort: Weyhe
27 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 13:43
Setz mal bei dem Feld die Spalteneigenschaft '(Ist-Identity)' auf 'Ja' und den Datentyp auf Int. Das sollte reichen.
Christian Hinrichs
  Mit Zitat antworten Zitat
myownshadow

Registriert seit: 23. Okt 2004
Ort: Berlin
18 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 14:02
Schwierige Geburt....
InTSimpleDataSet.FieldDefs habe ich den DataType auf ftInteger bzw. auch einmal auf ftAutoInc gesetzt.

Beides ändert leider nichts.

Wo finde ich aber die Spalteneigenschaft '(Ist-Identity)' ?
  Mit Zitat antworten Zitat
Benutzerbild von chericks
chericks

Registriert seit: 12. Jun 2003
Ort: Weyhe
27 Beiträge
 
Delphi 10.3 Rio
 
#10

Re: Autoincrement funktioniert nicht ???

  Alt 17. Feb 2009, 14:35
Hätte ich auch mit reinschreiben sollen...

Meinte im "MS SQL Server Management Studio Express" die Tabelle auswählen, rechte maustaste auf die Tabelle, und im Popupmenü auf "ändern". Das Feld auswählen,Datentyp auf Int und unten in der Liste dann halt '(Ist-Identity)' auf 'Ja'.
Christian Hinrichs
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz