Datensätze mit Ähnlichem Inhalt
Karl Donaubauer
Gesendet: 19.12.11 19:07
Betreff: RE: Datensätze mit Ähnlichem Inhalt



Elite Veteran

Beiträge: 685
500100252525
Ort: Wien
Peter - 18.12.11
In einer Literatur Datenbank möchte ich gerne Datensätze mit gleichem Inhalt (Ein Buch ist 50 mal vorhanden) automatisch einer gewählten Anzahl x mal am Ende einfügen.
Das ist nötig, da ich für jedes Buch eine eigene Kennung benötige und hinterher jedes EINZELNE Buch verbuchen können muss (Buch ist defekt, ausortiert, ...)
Also brauch ich eine Funktion, die mir folgendes erlaubt.
Füge den markierten Datensatz x mal am Ende an!

An sich geht das per VBA-Code mit einer Schleife, die so oft durchlaufen wird, wie du kopieren willst, und die jedesmal eine Anfügeabfrage ausführt.
Die Details sind wieder entscheidend dafür, wie das genau aussehen kann.
Z.B. Wo soll die Anzahl der Kopien eingegeben werden?
Wie sieht der Primärschlüssel (bzw. eindeutige Indizes) der Tabelle aus? Die kann man wegen der verpflichtenden Eindeutigkeit nicht so einfach in die Kopieraktion miteinbeziehen.

Eine der möglichen Varianten sieht so aus:

- Erstelle dir eine Anfügeabfrage, die alle Felder so anfügt, wie du es möchtest.
- In der Abfragespalte, die die Datensätze eindeutig kennzeichnet, schreibst du ein Kriterium das angibt, welcher Datensatz kopiert werden soll. Also wenn du z.B. einen Primärschlüssel namens "BuchId" hast, dann halt dort sowas wie: 4711
- Teste, ob du die Abfrage erfolgreich ausführen kannst. Danach ersetzt du das Kriterum durch einen Formularbezug:
Forms!frmBuchliste!BuchId
"frmBuchliste" musst du natürlich durch deinen echten Formularnamen ersetzen.
- Speichere die Abfrage, z.B. unter dem Namen "qryBuchKopieren".
- In deinem Formular kannst du dann z.B. ein Textfeld "txtAnzahlKopien" einfügen, in dem ebendiese eingegeben wird.
- Dann brauchst du dort noch z.B. eine Schaltfläche bei deren Klick-Ereignis folgender Code ausgeführt wird:

On Error GoTo myError

Dim i As Long

'Warnmeldungen ausschalten
DoCmd.SetWarnings False

'Abfrage txtAnzahlKopien-mal ausführen
For i = 1 To Me!txtAnzahlKopien
DoCmd.OpenQuery "qryBuchKopieren"
Next i


myExit:
'Warnmeldungen einschalten
DoCmd.SetWarnings True
Exit Sub

myError:
MsgBox "Problemchen: " & Err.Message & " " & Err.Number
Resume myExit

-----
Servus
Karl
*********
Internationale Access-Konferenz: http://www.AccessDevCon.com
Access-Entwickler-Konferenz: http://www.donkarl.com/?aek
Top of the page Bottom of the page