Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Primärschlüssel per VBA löschen

320 views
Skip to first unread message

Uwe Gawehn

unread,
Sep 7, 2000, 9:00:07 AM9/7/00
to

Hi Folks,
ich versuche seit zwei Tagen vergeblich per VBA den Primärschlüssel einer
Tabelle zu löschen, und anschliessend wieder neu zu setzen. Sinn des Ganzen
soll ein Reset des Autowert-Anfangswertes sein. Ich habe bereits (erfolglos)
folgendes probiert:

dbengine.compactdatabase - Methode => Kein exklusiver Zugriff möglich (wie
auch).

<Datenbank>.execute "ALTER TABLE <Tabelle> DROP COLUMN
<Primärschlüsselfeld>;" => Ein vom System oder als Index genutzes Feld kann
nicht gelöscht werden. Den Index für dieses Feld gibt es schon lnge nicht
mehr, da ich mit Hilfe von DROP INDEX diesen erfolgreich löschen kann.

Gibt es ausser dem Aufruf des Menüpunktes Datenbank komprimieren noch eine
andere Möglichkeit, den Autowert zurückzusetzen????

Vielen Dank im Voraus.

Uwe


Chr. Schmidt

unread,
Sep 7, 2000, 9:30:03 AM9/7/00
to
In article <OaOb3tM...@cppssbbsa02.microsoft.com>,
"Uwe Gawehn" <Uwe.G...@t-online.de> wrote:
Hi Uwe,

Einfach die Datenbank komprimieren bringt Dir das gewünschte Ergebnis.

Gruß
Chris


Sent via Deja.com http://www.deja.com/
Before you buy.

Jochen Rieseberg

unread,
Sep 7, 2000, 10:17:42 AM9/7/00
to
Hallo Uwe,

so gehts:

Public Function index()
Dim qdf As QueryDef, td As TableDef, fld As Field, ind As index
Dim db As Database
Set db = CurrentDb()
Set td = db.TableDefs![Tabellenname]
td.Indexes.Delete "PrimaryKey"
td.Fields.Delete "Feldname"
Set fld = td.CreateField("Feldname", dbLong)
fld.Attributes = dbAutoIncrField
td.Fields.Append fld
Set ind = td.CreateIndex("PrimaryKey")
ind.Name = "PrimaryKey"
ind.Fields = "Feldname"
ind.Primary = True
ind.Unique = True
td.Indexes.Append ind
End Function

Gruß Jochen Rieseberg
http://www.rieseberg.de


Philipp Stiefel

unread,
Sep 7, 2000, 3:15:01 PM9/7/00
to
Hi Uwe,

eine sicher funktionierende Lösung hat Jochen ja schon geposted. Unten noch
eine Möglichkeit, wie dein Code auch funktionieren könnte.

Uwe Gawehn schrieb kürzlich:

><Datenbank>.execute "ALTER TABLE <Tabelle> DROP COLUMN
><Primärschlüsselfeld>;" => Ein vom System oder als Index
><genutzes Feld kann
>nicht gelöscht werden. Den Index für dieses Feld gibt es
>schon lnge nicht mehr, da ich mit Hilfe von DROP INDEX diesen
>erfolgreich löschen kann.

Schon probiert vor deinem Code oben noch ein:

<Datenbank>.TableDefs.Refresh

ausführen zu lassen?

>Gibt es ausser dem Aufruf des Menüpunktes Datenbank
>komprimieren noch eine andere Möglichkeit, den Autowert
>zurückzusetzen????

Du kennst FAQ 6.6 (Link in der Sig)?

Gruß
Phil

--
Ich beantworte keine technischen Fragen per Email
Richtig zitieren: http://www.afaik.de/usenet/faq/zitieren/
Mein Codekabinett: http://www.codekabinett.com/
Karl Donaubauer's Access-FAQ: http://www.donkarl.com

Uwe Gawehn

unread,
Sep 7, 2000, 4:11:22 PM9/7/00
to
DANKE!!! Es geht ... und funktionieren tuts auch noch.


"Jochen Rieseberg" <Na...@energie.rwe.de> schrieb im Newsbeitrag
news:01c018d6$07b738d0$d17a16ac@a0200367...

0 new messages