Zum Inhalt springen

Access - Datensätze kopieren


bongcrusher

Empfohlene Beiträge

Ich brauch schon wieder ´nen Schubs.

Ich suche nach ´ner Möglichkeit, Datensätze möglichst simpel zu kopieren(mit VBA). Die Sätze sind bereits mit Daten gefüllt und die ID muß geändert werden(kein Autowert verwendet).

Die Felder explizit zu benennen entfällt aufgrund der Masse (ca. 2500 und es werden immer mehr).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin Wolle, schönes Wochenende gehabt?

ca. 2500 Datenfelder!!! (in Entwicklung, deshalb nur ca. 10 Datensätze)

entwickle eine Kalkulationsdatenbank für Einfamilienhäuser. Musste die Daten pro Projekt auf mehrere Thementabellen aufteilen -> zu viele Felder pro Tabellenobjekt :(

Um nicht bei jedem neuen Projekt komplett neue Daten eingeben zu müssen, sollen die Daten (Datensatz) eines bestehenden Projektes in einen neuen Datenatz eingefügt werden. Anschließend muß die Projekt_ID auf den Neuesten Datensatz in allen Thementabellen (der aufgeteilte Sch***) angeglichen werden. Die originale Projektnummer ist ein AutoWert, alle anderen sind entsprechend frei wählbare Zahlen (indiziert etc.).

Die Verknüpfung aller Tabellen war nicht möglich, da der Speicher für ein Verknüpfungsobjekt nicht ausreichte (entspr. Fehlermeldung).

Ist alles nicht so einfach - war aber auch mein Abschlußprojekt :)

Sind die Infos jetzt ausreichend?

CU

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

hat ein bischen gedauert, aber ich hatte heute Mittag kaum Zeit und hab auch erstmal probieren müssen.


Private Sub Befehl0_Click()

Dim db As Database

Dim rst As Recordset


Set db = CurrentDb

Set rst = db.OpenRecordset("Select * from users")

rst.MoveFirst

While Not rst.EOF And Not rst.BOF

rst.Edit

For i = 0 To rst.Fields.Count - 1

    MsgBox (rst.Fields.Item(i).Name)

    If i = 1 Then

        rst.Fields.Item(i) = "hghgjhgjhgj"

    End If

Next

rst.Update

rst.MoveNext

Wend


End Sub

Über 2 Recordset's könntest du das lösen. In dem Beispiel oben zählst du mit der For-Next Schleife durch die Felder (in einem Datensatz). Die MsgBox gibt die Namen der Felder aus. In der If-Abfrage weise ich dem 2. Feld (Fängt ja bei 0 an) einen neuen Wert zu.

Wenn du jetzt 2 Recordset's laufen lässt (einer in der alten Tabelle und einer in der neuen) und dem 2. Recordset mit rst2.Fields.Item(i) = rst1.Fields.Item(i) die Werte zuweist müßte es klappen. Statt rst.Edit mußt du dann halt rst.AddNew nehmen.

ACHTUNG: Wenn du das Beispiel oben nimmst kommst du wegen der MsgBox bei sovielen Feldern fast nicht mehr raus. Ich mußte auch mit Task Beenden raus, weil ich viele Datensätze in der Tabelle hatte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...