Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: tismo am März 15, 2019, 07:56:54

Titel: neue datensätze automatische einfügen
Beitrag von: tismo am März 15, 2019, 07:56:54
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
Titel: Re: neue datensätze automatische einfügen
Beitrag von: MzKlMu am März 15, 2019, 08:20:32
Hallo,
und wo kommen die vordefinierten DS her?
Titel: Re: neue datensätze automatische einfügen
Beitrag von: ebs17 am März 15, 2019, 09:11:15
ZitatWie lautet die vba?
Me.RecordSource = "AbfrageMitDatensaetzen"
Titel: Re: neue datensätze automatische einfügen
Beitrag von: tismo am März 15, 2019, 10:16:41
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
Titel: Re: neue datensätze automatische einfügen
Beitrag von: ebs17 am März 15, 2019, 11:31:00
Zitatstellt sich die Frage
Ja, mit einem Button kann man eine Prozedur starten.
Titel: Re: neue datensätze automatische einfügen
Beitrag von: tismo am März 15, 2019, 12:09:45
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?
Titel: Re: neue datensätze automatische einfügen
Beitrag von: datekk am März 15, 2019, 12:10:41
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.

Titel: Re: neue datensätze automatische einfügen
Beitrag von: huehnerbusch am März 15, 2019, 12:20:10
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
Titel: Re: neue datensätze automatische einfügen
Beitrag von: datekk am März 15, 2019, 12:26:35
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.
Titel: Re: neue datensätze automatische einfügen
Beitrag von: tismo am März 15, 2019, 12:46:18
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.

Titel: Re: neue datensätze automatische einfügen
Beitrag von: MzKlMu am März 15, 2019, 12:57:45
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.
Titel: Re: neue datensätze automatische einfügen
Beitrag von: tismo am März 15, 2019, 13:13:34
... 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.
Titel: Re: neue datensätze automatische einfügen
Beitrag von: datekk am März 15, 2019, 13:23:55
@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.