Problem mit dem Einfügen neuer Datensätze

Hallihallo,
momentan arbeite ich an einem Formular (ASP), welches Werte aus einer Daten Bank, in diesem Fall MS Access, ausliest und veränderte Eingaben übernimmt. Bisher läuft auch alles soweit, allerdings bekomme ich nun Probleme bei dem einfügen neuer Datensätze, daher bitte ich um Rat.

genauere Problembeschreibung:
Tabelle User (Primärschlüssel Username)
Tabelle UserGruppe (Benutzername, Gruppe, beides Primärschlüssel)
Tabelle Gruppe (Primärschlüssel gruppe)
Benutzername wird aus Username und Gruppe aus Gruppe genommen.
Aktualisieren und löschen bisheriger Datensätze bringt keine Probleme.
Hinzufügen neuer Datensätze schon, bzw. wenn es funktioniert (nur bei sehr „hohen“ Usernames wie Z…) gibt es Probleme mit der Aktualisierung bei Veränderung, Gruppen lassen sich ebenfalls nicht zuordnen.

puh…da ich nur einen HTTP 500 Serverfehler bekomme kann ich nur raten, vermutlich macht er Probleme, da Username als Primärschlüssel gewählt wurde, das hinzufügen des Feldes ID behob das Problem - jedoch nicht die Fehler bei Aktualisierung dieser Datensätze oder der Zuordnung von Benutzern zu Gruppen.

Aus diesem Grund bitte ich um Rat, was ich machen soll
Habe bisher mit SQL Abfragen (Insert) und ASP recordsets (rs.update) keine Erfolge erzielen können.

Für Hilfe wäre ich wirklich sehr dankbar^^
mfg
Roman

Hallihallo Roman,

primäre Schlüssel dienen der eindeutigen Zuordnung von Daten.
Gibst du z.B. einem Namensfeld den PS, kann man den Namen nur ein mal in der Datenbank anlegen!!

Grundsätzlich erstellt man für jede Datenbank eine ID (mit Autowert), der man dann den PS gibt.
Es gibt nur ganz wenige Gründe, einen PS auf ein Informationsfeld zu legen.

Tabelle User (Primärschlüssel Username)

falsch: füge eine ID_USER hinzu, der du dann den PS gibst.

Tabelle UserGruppe (Benutzername, Gruppe, beides
Primärschlüssel)

falsch: füge ID_BENUTER und ID_GRUPPE hinzu, denen du dann jeweils den PS gibst.

Tabelle Gruppe (Primärschlüssel gruppe)

falsch: füge ID_GRUPPE hinzu, der du dann den PS gibst.

Erstelle dann die neuen Beziehungen.

Grüße aus Essen
Wolfgang
(Netwolf)

Hallo Wolfgang,

ersteinmal vielen Dank für deine Hilfe, habe nun bei den verschiendenen Tabellen die IDs hinzugefügt und diese als Primärschlüssels gesetzt. Auch bei UserGruppe wurden Benutzername und Gruppe durch ID_Benutzer und ID_Gruppe ersetzt.
Allerdings bekomme ich, wenn ich diese beiden auf Primärschlüssel setze die Meldung, dass ich die Änderungen nicht Speichern kann, da „NullWert in Index oder Primärschlüssel nicht zulässig“ ist.
Wenn du mir dabei auch weiterhelfen könntest, wäre ich dir sehr verbunden.

mit freundlichen Grüßen
Roman

Hallo Roman,

Allerdings bekomme ich, wenn ich diese beiden auf
Primärschlüssel setze die Meldung, dass ich die Änderungen
nicht Speichern kann, da „NullWert in Index oder
Primärschlüssel nicht zulässig“ ist.

ok, das ist normal, wenn du noch Beziehungen zwischen den Tabellen mit anderen Tabellen hast, lösche also zu erste die Beziehungen.

Prüfe, ob du leere Datensätze hast, lösche diese.
Bei den ID-Feldern muß immer Autowert als Typ eingetragen sein.

Grüße aus Essen
Wolfgang
(Netwolf)

Hallo,
vielen Dank nochmal für die schnelle und kompetente Hilfe.
Nachdem ich das nun geändert habe und die entsprechenden Abfragen angepasst wurden funktioniert alles soweit. Allerdings bekomme ich nun abermals Probleme beim Anlegen eines neuen Benutzers.
Daher meine Frage:
Bei der INSERT Abfrage (SQL) gebe ich die ID_USER nicht mit an, muss ich diese angeben oder nur die zu verändernden Felder?
bzw. Gibt es in SQl die Möglichkeit das einfügen eines Auto-Wertes zu realisieren?
Die AddNew funktion in ASP scheint als Alternative nicht zu funktionieren.
mit freundlichen Grüßen
Roman

Hallo Roman,

Bei der INSERT Abfrage (SQL) gebe ich die ID_USER nicht mit
an, muss ich diese angeben oder nur die zu verändernden
Felder?

da es sich um eine Autowert in der Tabelle handelt, wird dieser automatisch in der Tabelle generiert. D.h. dieses Feld darf in der INSERT-Anweisung nicht vorkommen.

bzw. Gibt es in SQl die Möglichkeit das einfügen eines
Auto-Wertes zu realisieren?

nein, dann wäre es ja kein Autowert-Feld sondern ein normales Feld.

Die AddNew funktion in ASP scheint als Alternative nicht zu
funktionieren.

kommt auf deinen Code an, kann ich so nicht bestätigen …
Schau dir noch mal die Hilfe zur AddNew Funktion an, und überprüfe, ob du am Ende auch nicht das Speichern vergißt!

Grüße aus Essen
Wolfgang
(Netwolf)

Hallo,

Die AddNew funktion in ASP scheint als Alternative nicht zu
funktionieren.

kommt auf deinen Code an, kann ich so nicht bestätigen …
Schau dir noch mal die Hilfe zur AddNew Funktion an, und
überprüfe, ob du am Ende auch nicht das Speichern vergißt!

das habe ich bereits und auch das update wurde gemacht.
Allerdings reagiert er auf rs.supports(sdUpdate + adAddNew) positiv weshalb ich nicht dachte, dass es Probleme geben könnte.
Als Alternative habe ich wie gesagt eine Insert-Abfrage, welche auch nicht funktioniert und leider nur einen HTTP Fehler ausgibt.
jedesmal entweder bei rs.update (wenn ich es über die AddNew-Funktion versuche) oder bei conn.Execute(SQL) (wenn ich das Anlegen des Datensatzes über Insertabfrage versuche)
Kann es sein, dass Werte, welche aus einem Textfeld ausgelesen werden aber als Zahl in der Tabelle stehen Probleme machen? Oder wird das in der Datenbank automatisch umgewandelt?
Das wäre zumindest das einzige, was mir jetzt noch einfällt.
Werde es ersteinmal versuchen und dann das Ergebnis posten.
mit freundlichen Grüßen
Roman

Hallo,

Die AddNew funktion in ASP scheint als Alternative nicht zu
funktionieren.

kommt auf deinen Code an, kann ich so nicht bestätigen …
Schau dir noch mal die Hilfe zur AddNew Funktion an, und
überprüfe, ob du am Ende auch nicht das Speichern vergißt!

das habe ich bereits und auch das update wurde gemacht.
Allerdings reagiert er auf rs.supports(sdUpdate + adAddNew)
positiv weshalb ich nicht dachte, dass es Probleme geben
könnte.
Als Alternative habe ich wie gesagt eine Insert-Abfrage,
welche auch nicht funktioniert und leider nur einen HTTP
Fehler ausgibt.
jedesmal entweder bei rs.update (wenn ich es über die
AddNew-Funktion versuche) oder bei conn.Execute(SQL) (wenn ich
das Anlegen des Datensatzes über Insertabfrage versuche)
Kann es sein, dass Werte, welche aus einem Textfeld ausgelesen
werden aber als Zahl in der Tabelle stehen Probleme machen?
Oder wird das in der Datenbank automatisch umgewandelt?
Das wäre zumindest das einzige, was mir jetzt noch einfällt.
Werde es ersteinmal versuchen und dann das Ergebnis posten.

Leider keine Änderung, hatte versucht ein Feld des Datentyps Datum auf Text zu ändern, aber auch dann kam die Meldung „HTTP 500 interner Serverfehler“
Bin inzwischen leider ziemlich ratlos, da auch das Einfügen in der Datenbank (was ich ursprünglich als Lösung andachte) nicht das Problem behoben hat.
Daher muss ich ein weiteres Mal um Rat bitten und hoffe, dass mir geholfen werden kann.
Vielen Dank im Vorraus.
mit freundlichen Grüßen
Roman

Nocheinmal Hallo,
da ich leider keine Editierfunktion aufspüren konnte antworte ich nochmal
hierauf.
Konnte das Problem bis zum Autowert zurückverfolgen, da mir der ie zwischendurch mal eine genaue Fehlernummer von MS Access ausgab (komischerweise nur eine Weile, bei gleichen Einstellungen dann wieder nicht, weshalb ich mich noch mehr wundere)
Die Sache ist die:
zuerst erstelle ich mittels rs.AddNew einen neuen Datensatz, ID_USER wird angelegt
alle weiteren werte werden übergeben
dann mittels rs.update gespeichert…aaaaaber (!)
das Feld rs.fields(„ID_USER“) ist leer, daher entsteht der Fehler wohl bei dem Update, da ja Nullwerte im Primärschlüssel nicht zulässig sind.
Nun habe ich versucht den Cursortyp meines Recordsets zu ändern, um einen direkten Zugriff auf den Primärschlüssel zu erhalten und ihn auch auszulesen, allerdings scheint es da weiterhin ein Problem zu geben und durch oben beschriebene „willkürliche“ Fehlerausgabe konnte ich diesen noch nicht ermitteln.
Nun hoffe ich, dass mir dabei jemand helfen kann, sei es betreffs der Fehleranzeige oder bei dem Auslesen der ID direkt nach dem Erstellen mit AddNew und vor dem Update.

mit freundlichen Grüßen
Roman

PS: soweit ich gesehen habe gibt es hier auch ein ASP Forum, da ich aber keine Doppelposts machen möchte antworte ich hier. Sollte das trotzdem in das ASP-Forum gehören, so bitte ich u eine Benachrichtigung, werde dann meine Frage verschieben, danke.