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!
    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
    Liegt das problem daran, dass du kein Identity für ID-Feld angelegt hast, hat VS 2005 damit nichts zu tun.
    Versuch mal folgendes:

    [highlight=sql]
    ALTER TABLE YourTable ADD
    CONSTRAINT PK_YourTable PRIMARY KEY
    (
    ID
    )
    ;
    CREATE SEQUENCE SEQ_YourTable_ID
    MINVALUE 1
    MAXVALUE 999999999999999999
    START WITH 1
    INCREMENT BY 1
    NOCACHE
    ;
    CREATE OR REPLACE TRIGGER TRG_YourTable_INSERT
    BEFORE INSERT ON YourTable
    FOR EACH ROW
    BEGIN
    IF :new.ID IS NULL THEN
    SELECT SEQ_YourTable_ID.nextval INTO :new.ID FROM DUAL;
    END IF;
    END;
    /
    COMMIT;
    [/highlight]
    Zuletzt editiert von vadym voytas; 01.10.2009, 22:15.
    Bitte vergessen Sie nicht die Antwort zu bewerten. Danke.:-)

    Comment


    • #3
      Ist er bei Dir im Programm leer oder auch in der Datenbank?

      Es kann nämlich sein, dass ADO.NET die Daten korrekt einträgt, allerdings passiert nach dem INSERT kein SELECT mehr. Das heisst bei Dir im Programm erscheint der Wert der ID Spalte nicht, weil dieser ja erst nach dem INSERT gesetzt wird.
      Du müsstest entweder nach dem INSERT noch ein SELECT machen oder Dir selbst die neue ID aus der Sequence holen und diese schon beim INSERT mit in die Datenbank geben (also ganz ohne Trigger).

      Comment

      Working...
      X