eisblume Geschrieben 1. März 2010 Geschrieben 1. März 2010 Hallo zusammen! Ich hänge schon seit einiger Zeit an einem Problem und ich hoffe, dass ihr mir helfen könnt: Ich hab eine Access-Datenbank mit mehreren Tabellen und diese will ich nun auf einen SQLServer 2008 migrieren. Die Tabellen sind alle unterschiedlich aufgebaut und unterschiedlich groß. Das Auslesen der Daten funktioniert einwandfrei. Mein Problem ist nun der 'INSERT INTO'-Befehl. Kann mir da jemand bitte helfen?! Vielen Dank!! Zitieren
eisblume Geschrieben 1. März 2010 Autor Geschrieben 1. März 2010 (bearbeitet) Hui! Danke für die schnelle Reaktion!! Mein Problem genau ist, dass mein bei dem INSERT INTO ja mit Parametern arbeiten muss. Das hab ich im Internet gefunden: insertCmd.Parameters.Add("@FirstName", SqlDbType.NVarChar, 10, FirstName") Ich hab keine Ahnung, wie ich die einzelnen Typen ermitteln kann, da sich in den unterschiedlichen Tabellen unterschiedliche Spalten und Werte befinden. Bearbeitet 1. März 2010 von eisblume Zitieren
lbm1305 Geschrieben 1. März 2010 Geschrieben 1. März 2010 Mein Problem genau ist, dass mein bei dem INSERT INTO ja mit Parametern arbeiten muss. Das hab ich im Internet gefunden: Die Aussage ist so nicht richtig. Die eigentliche SQL-Anweisung lautet (ein Beispiel): INSERT INTO Personen (Name, Vorname) VALUES ('Mustermann','Max'); Zur Not kann man(n) sich das Schema der Tabelle(n) auslesen. Darüber kommt man an die Datentypen der Spalten. Zitieren
eisblume Geschrieben 1. März 2010 Autor Geschrieben 1. März 2010 So hab ich mir das ursprünglich auch gedacht, aber dann bekomm ich folgende Fehlermeldung: "Ungültiger Objektname 'neueTabelle' ". Aber der Name der Tabelle stimmt . Hast du mir ein Code-Beispiel dazu? Zitieren
lbm1305 Geschrieben 1. März 2010 Geschrieben 1. März 2010 So hab ich mir das ursprünglich auch gedacht, aber dann bekomm ich folgende Fehlermeldung: "Ungültiger Objektname 'neueTabelle' ". Aber der Name der Tabelle stimmt . Hast du mir ein Code-Beispiel dazu? Die neue Tabelle existiert auch? Ein INSERT fügt in eine bestehende Tabelle ein. Code gebe ich nicht gern vor, wo wäre denn da der Lerneffekt? ;-) Außerdem gibt es da eine große Suchmaschine, die Dir bei den passenden Suchbegriffe mehr als eine Antwort geben wird. Zitieren
eisblume Geschrieben 1. März 2010 Autor Geschrieben 1. März 2010 Ja, die Tabelle existiert!! - Darüber hinaus besitzt die neue Tabelle auch die gleich Struktur wie die alte... . Als ich nach Lösungen geschaut hab, bin ich auf die Sache mit den Parametern gekommen, aber damit kann ich auch nichts anfangen. Bin am Rand der Verzweiflung :'( Zitieren
lbm1305 Geschrieben 1. März 2010 Geschrieben 1. März 2010 Kannst Du den Code vom Erstellen der Connection bis hin zum Absenden des Commands posten? Passwörter können ausgeblendet werden. Funktioniert der INSERT Befehl auf dem Server (SQL Management Console)? Zitieren
TDM Geschrieben 2. März 2010 Geschrieben 2. März 2010 (bearbeitet) Leerpost. Bearbeitet 2. März 2010 von TDM Verlesen... Zitieren
eisblume Geschrieben 2. März 2010 Autor Geschrieben 2. März 2010 Das ist nicht so einfach, da das Ganze ein bisschen komplexer aufgebaut ist... Aber das Aufbauen der Connection, sowie das Auslesen der Daten funktiontiert. An dieser Stelle hängt es nun (zur Info strFields und strValues sind String() ): Dim strInsert As String = "INSERT INTO " & getDatenbankname() & ".tbl" & Tabellenname & " (" & strFields & ") VALUES (" & strValues & ");" Debug.Print(strInsert) und herauskommt: INSERT INTO Projekt.tblKunde ('Name', 'Vorname', 'Telefon', 'BLZ', 'Bank') VALUES ('Maier', 'Peter', '0801/1234', '12345608', 'Test Bank eG'); und dazu die schöne Fehlermeldung: Ungültiger Objektname 'Projekt.tblKunde' Zitieren
TDM Geschrieben 2. März 2010 Geschrieben 2. März 2010 Ist der Datenbankname "Projekt" oder der Owner? (Bin etwas verwirrt, durch die Funktion "getDatenbankname") Funktioniert es vielleicht mit einem voll qualifierten Objektnamen (DATENBANKNAME.OWNER.TABELLENNAME)? Zitieren
lbm1305 Geschrieben 2. März 2010 Geschrieben 2. März 2010 Ist der Datenbankname "Projekt" oder der Owner? (Bin etwas verwirrt, durch die Funktion "getDatenbankname") Funktioniert es vielleicht mit einem voll qualifierten Objektnamen (DATENBANKNAME.OWNER.TABELLENNAME)? Dem würde ich mich jetzt erst mal anschließen. Zusätzlich noch die Frage(n): 1.) Funktioniert dieser String (INSERT INTO...) auch auf dem Server, wenn Du Ihn per Management-Konsole eingegeben bzw. kopiert hast? 2.) Zweiter Weg wäre, dieses Insert-Kommando als Stored Procedure auf dem Server abzulegen. Übergabe-Parameter wären da der Tabellenname und die zuzufügenden Values :-) Zitieren
eisblume Geschrieben 2. März 2010 Autor Geschrieben 2. März 2010 Ich habs.... so viel Dummheit sollte bestraft werden... *kopfschlag* :upps Ich darf die Feldbezeichnung nicht in Hochkommata setzen. Trotzdem Danke an alle ! :valen Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.