Hallo,
ich habe folgende Frage:
Kann Access , sagen wir mal durch drücken auf einen Schalter, automatisch mehrere vordefinierte Datensätze in ein Unterformular einfügen?
Wie lautet die vba?
Gruß,
Lars
Hallo,
und wo kommen die vordefinierten DS her?
ZitatWie lautet die vba?
Me.RecordSource = "AbfrageMitDatensaetzen"
Also ich hatte mir dass so vorgestellt:
Ich habe ein Unterformular als Endlosformular in dem mehrere Datensätze (Artikel) mit den Steuerlementen Artikelnummer, Artikelname, Einzelpreis enthalten sind.
Ich kann zwar aus einen anderen Datensatz in dessen Unterformular gehen und mehrere Datensätze mit den Steuerelemeneten kopieren und in meinen neuen Datensatz im Unterrformular einfügen, da es es sich allerdings sehr oft um die gleichen Datensätze handelt, stellt sich die Frage, ob durch einen Button einige bestimmte Datensätze automatisch durch anklicken eingefügt werden können.
Bsp. Datensatz 1 hat 10 Datensätze (Artikel) im Unterformular (Rechnung)
Datensatz 2 bekommt wieder die selben 10 Artikel in der Rechnung.
Diese 10 Artikel sind allerdings ich zwingend in allen Datensätzen (aber in den meisten), sondern können durch weitere Artikel ergänzt werden.
Gruß,
Lars
Zitatstellt sich die Frage
Ja, mit einem Button kann man eine Prozedur starten.
Nun, das habe ich mir schon deacht, dass das auch mit einem Button funtioniert :)
Kann mir irgendjemand ein 'Starthilfe' geben, da ich RecordSource noch nicht angewendet habe?
Ja das geht. Befass dich mal mit Anfügeabfragen. Also Insert Into... Diese Abfrage kannst Du mit Klick auf eine Schaltfläche ausführen und so die Datenquelle des UFOs bedienen.
Also angenommen Du hast eine Tabelle mit Artikeln und eine Tabelle mit Rechnungsinhalten. Dann füge der Artikeltabelle eine Spalte zu, in der Du die zu übertragenden Artikel irgenwie kennzeichnest.. z.B. mit einem Boolean Feld (z.B. 'isStandard')
Dann z.B. so die SQL Syntax aufbauen:
Insert Into tblRechnungsInhalt (RechnungRefId, ArtikelRefId, Preis, ... [weitere Zielfelder])
Select 1000 As RechnugRefId, IdArtikel, Preis, [weitere Quellfelder]
From tblArtikel
Where tblArtikel.isStandard = True
Das Ganze kannst in eine VBA Sub packen (Ereignis bei Klicken) und die Rechnungsnummer (hier im Beispiel die 1000) dynamisch aus einem Feld in deinem Formular übergeben und der richtigen Rechnung zuordnen:
Luftcode:
Private Sub BefUebernahme_Click()
Dim sql as String
sql = "Insert Into tblRechnungsInhalt (RechnungRefId, ArtikelRefId, Preis) " _
& "Select " & me.IdRechnung & "As RechnungRefId, IdArtikel, Preis " _
& "From tblArtikel " _
& "Where tblArtikel.isStandard = True"
currentdb.execute sql
' ggf. noch ein Me.UFOName.Requery zum aktualisieren des (Unter)Formulars
End Sub
Hierbei wird aus dem Feld me.IdRechnung deines Formulars die RechnungsId in die Abfrage integriert und die mit 'isStandard' markierten Datensätze aus der tblArktikel in die tblRechnungsinhalte kopiert bzw. dort angefügt.
Nur mal zum Verständnis auf Tabellenebene: Du hast eine Tabelle mit Artikeln und eine Tabelle mit Rechnungen. Zu einer Rechnung gehören mehrere Artikel (1:n). Da du in neuen Rechnungen etwa die gleichen Artikel aufnehmen willst, wie in einer bereits vorhandenen Rechnung, möchtest du die Artikel quasi von einer bestehenden Rechnung in eine neue Rechnung kopieren. Richtig?
Beste Grüße vom Steinhuder Meer,
Heiko
Man braucht minimum eine Tabelle Rechnungen mit Rechnungsnummer(ID), Datum und so... Weiterhin eine Tabelle für die Rechnungsinhalte also die Artikelliste und dann noch eine Tabelle für die Artikel selbst.
Zitat von: ebs17 am März 15, 2019, 09:11:15
ZitatHallo,
und wo kommen die vordefinierten DS her?
die Datensätze kommen aus der Tabelle Artikel (mit Artikelbez. Einzel-Preis usw.) und werden dann im Unterformular (dem die Tabelle ArtikelUnterformular (mit Rechnungsnummer, Menge usw.) zugrunde liegt) abgelegt.
Hallo,
das kann doch so nicht sein. In der Artikeltabelle gibt es je Artiekl einen Datensatz, welche willst Du da jetzt anfügen?
Das Vorhaben ist ohnehin mehr als fragwürdig. In die RechnungsArtikeltabelle käme bei richtigem Aufbau ohnehin nur die ArtikelID als einziges Feld in je einem Datensatz.
... wieso fragwürdig ???
Ich schreibe eine Rechnung. In jeder Rechnung kommt die Position Grundgebühr (z.B), Position Artikel 1, Artikel 2 ... 10 vor.
Variieren kann bei jeder Rechnung die Menge der einzelnen Artikel und es kommen weiter Artikel hinzu, die nicht bei jeder Rechnung gleich sind.
Deshalb wollte ich einen Button erstellen, der mir die ersten 10 Artikel im Unterformular einfügt, ich die Menge der einzelnen Artikel (Positionen) ggf. ändern und weitere hinzufügen kann.
Die Positionen kommen aus der Tabelle Artikel und werden in der Tabelle ArtikelUnterformular gespeichert.
@MzKIMu... da hast natürlich recht... Code ist angepasst. Natürlich wird nur die ArtId übernommen - plus ggf. veränderlichen Daten wie evtl. Preis - falls dieser individuell angepasst wird.