Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

neue datensätze automatische einfügen

Begonnen von tismo, März 15, 2019, 07:56:54

⏪ vorheriges - nächstes ⏩

tismo

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

MzKlMu

Hallo,
und wo kommen die vordefinierten DS her?
Gruß Klaus

ebs17

ZitatWie lautet die vba?
Me.RecordSource = "AbfrageMitDatensaetzen"
Mit freundlichem Glück Auf!

Eberhard

tismo

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

ebs17

Zitatstellt sich die Frage
Ja, mit einem Button kann man eine Prozedur starten.
Mit freundlichem Glück Auf!

Eberhard

tismo

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?

datekk

#6
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.

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

huehnerbusch

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

datekk

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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

tismo

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.


MzKlMu

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.
Gruß Klaus

tismo

... 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.

datekk

#12
@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.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps