Announcement

Collapse
No announcement yet.

INSERT klappt nicht

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

  • INSERT klappt nicht

    tach zusammen,

    ich grüble jetzt schon seit paar stunden über folgendem problem, und hoffe ihr könnt mir helfen.

    ich arbeite an einer kleinen Applikation in C# die mit einer Access 2007 db verbunden ist.
    in dieser DB hat es unteranderem 3 tabellen

    computer (computer_ID "PK", software_ID "FPK", hardware_ID "FPK", computername, etc)
    hardware (hardware_ID "PK", hardware_dummy, hardware_prozessor, etc)
    software (software_ID "PK", software_dummy, software_Betriebssystem, etc)

    nun will ich in der applikation über 1 sql string erstellen, mit dem ich den computernamen erstelle. der INSERT von computernamen klappt nicht wenn nicht die beiden FPKs gefüllt werden, doch diese IDs gibt es in denn entsprechenden tabellen ja noch nicht.

    die frage ist nun, wie erstelle ich einen INSERT der mir eine ID in der Tabelle: software und hardware erstellt, diese auch in die FPKs kopiert wird, damit ich den computernamen erstellen kann ? wird dafür mehr als ein sql befehl gebraucht ?

    Momentane nicht funktionierender SQL string:
    Code:
    INSERT INTO Computer ( computer_computername, software_ID, hardware_ID )
    SELECT Computer.computer_computername, Software.software_dummy, Hardware.hardware_dummy
    FROM Software INNER JOIN (Hardware INNER JOIN Computer ON Hardware.hardware_ID = Computer.hardware_ID) ON Software.software_ID = Computer.software_ID
    WHERE (((Computer.computer_computername)="testname") AND ((Software.software_dummy)="1") AND ((Hardware.hardware_dummy)="1"))
    EDIT:wenn ich das ganze WHERE weglasse, kopiert er mit alle vorhandenen tabellen, ohne einträge in software bzw hardware zu machen.

    mfg kroete

  • #2
    mit deinem sql string kannst du nur daten in die Tabelle Computer einfügen. Wenn du dies machst kannst du jedoch nur daten in die computername schreiben.
    Die anderen beiden Felder können nur einträge annehmen, die schon in den jeweiligen Tabellen vorhanden sind. Das heißt, wenn die tabellen software und hardware leer sind, dann kannst du auch keine daten in die betreffenden felder in der Computertabelle schreiben.
    Es ist also zwingend erforderlich, dass du zuerst die Tabellen Software und Hardware füllst. Dies ist die Folge von der Fremdschlüsselbenutzung in der Tabelle Computer.

    die frage ist nun, wie erstelle ich einen INSERT der mir eine ID in der Tabelle: software und hardware erstellt, diese auch in die FPKs kopiert wird, damit ich den computernamen erstellen kann ? wird dafür mehr als ein sql befehl gebraucht ?
    dein befehl kann dies nicht, da du ihm ja gesagt hast, dass er die Tabelle Computer benutzen soll!!!!
    Soweit ich mich recht entsinne gibt es die Möglichkeit, den Tabellen einen Updatebefhl zu geben, der alle daten immer anpasst sobald sie geändert werden.
    Allerdings ändert es auch nur die ID in der Tabelle computer, wenn du die verknüpfte ID in Software änderst, dann erscheind die neue ID automatisch in der Computertabelle.


    Nur kurz zur erklärung:
    Die Tabelle Computer enthält also nur die ID's der Software und Hardware. Zum Schluss, wenn du dann eine Abfrage auf Computer machst und dir anzeigen lassen willst, was dieser PC beinhaltet, so löst er die ID's automatisch in die zugehörigen Informationen aus und holt sich die Daten aus den anderen Tabellen von selber, dafür hast du ja fremdschlüssel gesetzt.
    Entspricht dem Prinzip von Master und Detail Tabelle.

    ich hoffe es hilft dir ein bissel weiter!?

    mfg

    Comment

    Working...
    X