Announcement

Collapse
No announcement yet.

Anfänger-Problem (Autowert setzen)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Anfänger-Problem (Autowert setzen)

    Hallo zusammen!
    Habe das Problem schon im ADO.NET-Forum gepostet.
    Bin mir aber nicht sicher, ob es hier vielleicht besser passt.
    Wäre schön wenn mir jemand helfen könnte.

    Ich habe mir eine Oracle(Express)-Datenbank angelegt. Dort habe ich in einer Tabelle einmal ein Datenfeld vom Datentyp VARCHAR2. Desweiteren habe ich mir noch ein Feld für eine ID angelegt. Habe mir dann auch eine Sequence und einen Trigger geschrieben. Das funktioniert auch alles wunderbar.

    Wenn ich mir jetzt allerdings unter VS2005 in einer VB-Form einen DataGridView erstelle, zeigt er mir dort auch die Tabelle an. Wenn ich allerdings einen neuen Datensatz eintragen möchte, bekomme ich immer einen Fehler, da der Autowert nicht automatisch gesetzt wird und somit das Feld leer ist.

    Warum setzt mir den Wert denn nicht?
    (Will ja eigentlich die Spalte mit den IDs auch gar nicht anzeigen)
    Was mache ich falsch?

    Hoffe es kann mir jemand von euch dabei weiter helfen!

    Gruß Frank

  • #2
    Ich habe mir eine Oracle(Express)-Datenbank angelegt. Dort habe ich in einer Tabelle einmal ein Datenfeld vom Datentyp VARCHAR2. Desweiteren habe ich mir noch ein Feld für eine ID angelegt. Habe mir dann auch eine Sequence und einen Trigger geschrieben. Das funktioniert auch alles wunderbar.
    Du meinst du hast dir eine AutoInc Spalte als PrimaryKey gebastelt?
    Dann wird dein Wert ja erst beim Insert erzeugt und ein nicht automatisch ans Dataset zurückgemeldet(bei einem typsierten Dataset kann man sich daein automatischen Select nach dem Insert generieren lassen um aktualisierte Werte aus der DB zu erhalten).

    Heißt du mußt
    a.) wenn du das Feld als Pflichfeld in deinem Dataset führst erstmal einen Dummywert eintragen.
    b.) Diesen Dummywert nach dem Insert durch den echten Wert ersetzen damit Folgeudpdates auf diesen Datensatz funktionieren.

    Aber wenn du schon ein Werkzeug wie Sequences zur Verfügung hast solltest du nicht zu einem simplem Autoinc feld zurückschrauben. Hol dir lieber explizit beim Datenanlegen einen neuen Wert direkt von der Sequenz trag den Wert als PK in dein Dataset ein und benutz in somit direkt beim Insert in die DB. Damit ersparst du dir viele Folgerprobleme von AutoInc Spalten.

    Für ein Best Practise würde ich dazu aber nochmal im Oracle Forum nachfragen.

    Comment


    • #3
      Ich hab im anderen Thread auch schon geantwortet. Ich trags hier auch nochmal ein:

      Wenn Du ein DataSet benutzt kannst Du dir den Trigger sparen, sondern Du gibst der DataTable einfach die Sequence mit (unter Eigenschaften), dann fischt der sich automatisch eine neue ID aus der Datenbank wenn Du einen neuen Datensatz anlegst.

      Wenn nicht dann einfach eine random ID eintragen (steht ja oben schon)

      Comment

      Working...
      X