vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

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 wieder
System.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.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
einen Primärschlüssel einer Tabelle im Nachhinein ändern ......1.737tzgvfr24.11.10 17:05
Re: einen Primärschlüssel einer Tabelle im Nachhinein ändern...885ModeratorFZelle24.11.10 18:00

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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