|
| |

ADO.NET / Datenbanken| einen Primärschlüssel einer Tabelle im Nachhinein ändern .... wo ist der fehler? | |  | | Autor: tzgvfr | | Datum: 24.11.10 17:05 |
| ich habe eine Tabelle angelegt in Access. Dabei hatte ich auch schon mal einen Primärschlüssel vergeben ...
nun habe ich eine neue Anforderung: ich soll eine zusätzliche Spalte in die vorhandene Tabelle einfügen (Name= Datum) und soll jetzt auch den Primärschlüssel erweitern. Da hab ich mir gedacht definiere ich einfach mal einen komplett neuen Objektedatensatz und les die Tabelle ein. Und dann kann man ja eigentlich auch etwas an den Schlüsseln ändern (dachte ich *g*). [code unten]
Dim Verbindung As ADODB.Connection = New ADODB.Connection
Dim Katalog As ADOX.Catalog = New ADOX.Catalog
Dim Tabelle1 As ADOX.Table = New ADOX.Table
Dim sConn As String = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data" & _
"source=H:\...PFAD...\Daten.accdb;"
Katalog.Create(sConn)
Verbindung.Open(sConn)
Katalog.ActiveConnection = Verbindung
Tabelle1.ParentCatalog = Katalog
Tabelle1.Columns.Append("Abteilung", ADOX.DataTypeEnum.adInteger, 50)
Tabelle1.Columns.Append("Mitarbeiter", ADOX.DataTypeEnum.adInteger, 50)
Tabelle1.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "Abteilung")
'auf vorhandene Tabelle zugreifen und versuchen den Schlüssel zu erweitern
Dim Verbindung2 As ADODB.Connection = New ADODB.Connection
Dim Katalog2 As ADOX.Catalog = New ADOX.Catalog
Dim Tabelle2 As ADOX.Table = New ADOX.Table
Dim Feld As ADODB.Field
Dim Schlüssel2 As ADOX.Key = New ADOX.Key
Katalog.Create(sConn)
Verbindung.Open(sConn)
Katalog.ActiveConnection = Verbindung
Dim datum As System.DateTime = System.DateTime.Today
Katalog2.Tables(2).Columns.Append("Datum", ADOX.DataTypeEnum.adDate, 50)
'2.Tabelle die Spalte "Datum" zufügen > geht
Katalog2.Tables(2).Keys.Delete(0)
'den aktuellen PS löschen > geht
Schlüssel2.Name = "PrimaryKey"
Schlüssel2.Type = KeyTypeEnum.adKeyPrimary
Schlüssel2.Columns.Append("Datum")
Schlüssel2.Columns.Append(Katalog2.Tables(2).Columns(0).Name)
'soll die erste Spalte der alten Tabelle nehmen > geht NICHT
Try
Katalog2.Tables(2).Keys.Append(Schlüssel2)
Katalog2.Tables.Append(Katalog2.Tables(2))
Schlüssel2 = Nothing
Catch ex As Exception
sw2.WriteLine(ex.ToString) 'hier schmeißt er mir die Fehlermeldung [UNTEN
' gepostet]
End Try
' dann füge ich mittels Adorec noch die aktuellen Datumswerte in die Spalte ein
' > das geht wiederSystem.Runtime.InteropServices.COMException (0x80004005): Beim Aufruf einer COM-Komponente wurde ein HRESULT E_FAIL-Fehler zurückgegeben.
bei ADOX.Keys.Append(Object Item, KeyTypeEnum Type, Object Column, String RelatedTable, String RelatedColumn)
bei DATEIPFAD-ZEILE
Kann mir jemand helfen?? Ich komme absolut nicht weiter und finde auch in anderen Suchmaschinen und Foren nichts. Vielen Dank und viele Grüße
Beitrag wurde zuletzt am 24.11.10 um 17:16:09 editiert. |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
sevOutBar 4.0 
Vertikale Menüleisten á la Outlook
Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. Weitere InfosTipp des Monats Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|