Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Jochen1 am Juli 13, 2016, 15:29:34

Titel: Datensatzvorlage
Beitrag von: Jochen1 am Juli 13, 2016, 15:29:34
Hallo,

ich nutze Access 2010 und habe eine DB mit verschiedenen Formularen, u.a. für das Anlegen eines neuen Datensatzes (einschliesslich Unterformular).

Nun treten bei der Neuanlage eines Datensatzes manche Konstellationen/Feldinhalte in den Datensätzen in ihrer Kombination regelmässig erneut auf, und ich muss die Daten jedesmal erneut eingeben, auch wenn ich mir mit Drop-Down Listen schon viel vereinfacht habe.

Gibt es evtl. eine Möglichkeit, sich "Datensatzvorlagen" anzulegen, die ich dann bei der Neuanlage eines Datensatzes über ein Makro o.ä. aufrufen kann (ich meine damit nicht die Hinterlegung von Standardwerten in den Feldern der Tabelle).

Vielen Dank für Eure Unterstützung !

Titel: Re: Datensatzvorlage
Beitrag von: Lachtaube am Juli 13, 2016, 16:01:33
Für Textfeld-, Kombifeld- etc.-Steuerelemente kann man Standardwerte (auch mittels Programmsteuerung) vorgeben. Eine Möglichkeit wäre, auf dem Formular einen Knopf zu implementieren, der dann die von Dir festgelegten Werte als Standardwerte übernimmt und danach einen neuen Datensatz erscheinen lässt.

Hier ist etwas VBA-LuftcodePrivate Sub CloneValuesAsStandardAndGotoNewRecord_Click()

   Me.MeinLongIntegerfeld.DefaultValue = Me.MeinLongIntegerfeld
   
   Me.MeinTextfeld.DefaultValue _
         = Chr$(34) & Replace(Me.MeinTextfeld, Chr$(34), _
                              Chr$(34) & Chr$(34)) & Chr$(34)
   
   Me.MeinDatumUhrzeitfeld.DefaultValue _
         = Format(Me.MeinDatumUhrzeitfeld, "\#yyyy-mm-dd hh:nn:ss\#")
   
   Me.MeinNachkommastellenfeld.DefaultValue _
         = Str(Nz(Me.MeinNachkommastellenfeld, 0))
   
   DoCmd.RunCommand acCmdRecordsGoToNew
End Sub
Titel: Re: Datensatzvorlage
Beitrag von: Jochen1 am Juli 13, 2016, 16:57:48
Hallo Lachtaube,

danke für die Antwort - grundsätzlich verstehe ich die Vorgehensweise, aber im Detail brauche ich mangels Programmierkenntnis bitte noch etwas Hilfestellung:

- wenn ich die Anweisung einem "Knopf" hinterlege, wird dann der so gesetzte Standardwert nur für diesen einen neuen Datensatz hinterlegt oder gilt dieser dann -was ich vermute- für alle neuen Datensätze der DB ?

Ich möchte nur einige Vorlagen erstellen, die ich erst nach Aufruf nutze- ansonsten sollen weiterhin standardmässig die "leeren" Felder angezeigt werden.

Müsste daher nicht erst ein neuer Datensatz angesteuert werden und dann die Felder mit den zu hinterlegenden Vorlageninhalten gefüllt werden ?

- Heisst z.B.
ZitatMe.MeinLongIntegerfeld.DefaultValue = Me.MeinLongIntegerfeld
für mich "übersetzt":

Me.Feldname.DefaultValue = Me.DerWertfürdasFeldimneuenDatensatz ?

Vielen Dank für die Hilfe.
Titel: Re: Datensatzvorlage
Beitrag von: Lachtaube am Juli 13, 2016, 18:05:55
Diese Einstellungen gelten dann für die Sitzung (solange das Formular offen ist). Mit einem anderen Knopf kann man die Standardwerte auch wieder entfernen, indem überall "" oder gleichwertig vbNullString bei DefaultValue hinterlegt wird.

Wenn Du Versionen fixer Standardwerte speichern willst, kann dies in einer Tabelle geschehen. Dazu benötigst Du zumindest einen Bezeichner oder einen Dir bekannten Zahlenwert in einem Feld, ein Textfeld sollte den Namen des Steuerelements beinhalten und in einem dritte Textfeld wird der Standardwert abgelegt. Wichtig: in diesem Feld müssen Zahlenwerte einen Punkt (.) als Dezimaltrennzeichen aufweisen, falls Nachkommastellen existieren. Texte müssen in einfache (') oder doppelte Hochkommata (") eingeschlossen sein, ein Datum ist zwischen Rauten im ISO- oder US-Format abzulegen, Ja/Neinwerte können als -1 bzw 0 oder als True bzw. False verwendet werden.

Eine Auswahl wäre dann z. Bsp. in einem Kombi- oder Listenfeld, in dessen Nach Aktualisierung Ereignis man das Setzen der Standardwerte vornimmt, realisierbar. In der Prozedur selbst kann ein Recordset mit dem gewählten Identifier geöffnet werden, und es wird für jeden gefundenen Eintrag der Standardwert im Steuerelement des Formulars gesetzt.

Wenn das die angestrebte Version sein soll, könnte man einen Beispielcode basteln.
Titel: Re: Datensatzvorlage
Beitrag von: MzKlMu am Juli 13, 2016, 18:20:43
Hallo,
man könnte auch Vorlage wörtlich nehmen und eine Hilfstabelle erstellen mit verschiedenen Datensätzen für die entsprechenden Vorlagenwerte.
Und dann einfach per Anfügeabfrage die gewünschte Vorlage als neuen Datensatz an die Datentabelle anhängen.
Titel: Re: Datensatzvorlage
Beitrag von: Lachtaube am Juli 13, 2016, 18:35:27
Was dann allerdings vorraussetzt, dass alle Pflichtfelder vorhanden sein müssen.
Titel: Re: Datensatzvorlage
Beitrag von: Jochen1 am Juli 13, 2016, 19:06:27
Hallo,

puh, das klingt nicht einfach. Ich denke aber, dass für mich der von Lachtaube vorgeschlagene Weg sinnvoller wäre als eine Hilfstabelle mit den Vorlagedatensätzen, da meine Grundtabelle recht umfangreich ist und ich Änderungen in dieser dann vermutlich auch in der Hilfstabelle nachziehen müsste, damit die Felder der Tabellen "synchron" sind.

Ein Kombinations-/Listenfeld für die Vorlagen mit anschliessender Aktualisierung dieses neuen Datensatzes wäre natürlich eine Superlösung.

Ich brauche z.B. Vorlagen 1-4 nur mit einzelnen Textfeldern, keine Zahlen, Datumsfelder etc. (andere Daten werden dann im Formular im Datensatz noch ergänzt). Es geht also um eine Art "Vorausfüllen" mehrerer Felder innerhalb eines Datensatzes.

Z.B.:

SteuerelementA mit 'Name1' als Identifizierer der Vorlage1; SteuerelementB mit 'Text1', SteuerelementC mit 'Text1;

SteuerelementA mit 'Name2' als Identifizierer der Vorlage2; SteuerelementB mit 'Text2', SteuerelementC mit 'Text2

Ich hoffe, ich habe es richtig verstanden.

Und wie steuere ich, dass entweder die "normalen" Standardwerte oder die des Kombinations-/Listenfeldes verwendet werden ?

Hättest Du einen generischen (Beispiel-) Code für mich, damit ich mich daran probieren kann ?

Vielen Dank für die Hilfe !
Titel: Re: Datensatzvorlage
Beitrag von: MzKlMu am Juli 13, 2016, 19:13:41
Hallo,
bei solchen Aktionen stellt sich oft auch die Frage ob das grundsätzlich richtig ist.
Insbesonders auch durch die Bemerkung, dass die Grundtabelle recht umfangreich ist. Umfangreiche Tabelle machen immer hellhörig.
Was macht denn die Grundtabelle so umfangreich ?
Wie viele Felder sind das ?
Enthält die Grundtabelle auch Werte die sich bei einem neuen Datensatz nie ändern ?
Was sind das für Felder die Standardwerte brauchen ?

Kannst Du das mal bitte ausführlicher beschreiben?
Titel: Re: Datensatzvorlage
Beitrag von: Lachtaube am Juli 13, 2016, 23:48:57
Ich habe mal ein kleines Beispiel mit dynamischer Zuweisung von Standardwerten im Formular gebastelt.
Titel: Re: Datensatzvorlage
Beitrag von: Jochen1 am Juli 14, 2016, 13:46:15
@Lachtaube:

Vielen Dank, das sieht nach Erfüllung meiner geheimsten Wünsche aus ! Allerdings kann ich das Formular nicht als Entwurf aufrufen, obwohl ich schon eine Kopie der DB gespeichert habe. Woran kann das nun wieder liegen ? Manchmal scheitere ich bereits an Kleinigkeiten....

@Klaus

Ich verstehe Deine Bedenken. Die Tabelle ist so umfangreich, da sie rund 100 Felder enthält (hat mich selber erschreckt), und über die Jahre neue Felder hinzugekommen sind. Es handelt sich um eine Wertpapierdatenbank, in der Transaktionen geplant, Positionen vorab berechnet, und deren anschliessenden Ausführungen gespeichert werden, so dass sich Performanceauswertungen über die Zeit vornehmen lassen. Ich habe bereits Aufteilungen in weitere Tabellen (z.B. Teilausführungen, Erträge etc.) vorgenommen.

Alle Felder ändern sich bei einem neuen Datensatz, ausser der Standardwert wird verwendet; der verändert sich aber hin- und wieder für künftige Datensätze (z.B. Risikomanagement-Parameter). Diese Standardwerte werden dann z.B. für Berechnungen im Formular verwendet, die auch in dem Datensatz gespeichert werden. Auf diese Weise sind alle erforderlichen Daten in einem Datensatz vorhanden und lassen sich dann historisch nachvollziehen. Man kann sicher noch weiter aufteilen (nach Modulen), aber am Ende müsste ich das dann wieder über Abfragen für jede Transaktion zusammensetzen, und das ist nicht minder kompliziert und vor allem fehleranfällig. Ich habe auch Angst, das noch weiter aufzuteilen, weil es sehr viel Zusatzaufwand bedeuten würde und ich den Mehrwert (noch) nicht erkennen kann.

Es funktioniert jedenfalls recht gut, auch wenn die DB sicher zweifellos professioneller gestaltet werden kann.  Ursprünglich hatte ich das mal mit Excel begonnen, aber das war bei weitem nicht so leistungsfähig und komfortabel wie mit Access.

Die Vorlage resultiert also aus dem Wunsch, bei erneuten Transaktionen mit dem gleichen Instrument Werte nicht immer erneut eingeben zu müssen, z.B. eine Wertpapier-ISIN. Die Lösung von Lachtaube erscheint mir hier sehr zielführend, und alleine kann ich das leider nicht -aber ich kann es mit dieser Hilfe zur Selbsthilfe weiter umbauen und bin für diese Unterstützung sehr dankbar.

Vielen Dank und Grüße,
Jochen
Titel: Re: Datensatzvorlage
Beitrag von: MaggieMay am Juli 14, 2016, 17:42:38
Hallo,
Zitat von: Jochen1 am Juli 14, 2016, 13:46:15Allerdings kann ich das Formular nicht als Entwurf aufrufen
doch, das kannst du schon, du siehst es nur nicht. ;-)

Schau mal nach unten auf den Scrollbalken, das Formular befindet sich vermutlich außerhalb des sichtbaren Teils deines Fensters.
Titel: Re: Datensatzvorlage
Beitrag von: Jochen1 am Juli 14, 2016, 18:40:38
Jetzt habe ich es - über die Navigationsleiste, denn das Formular öffnet sich als Pop-Up, und weder in der Menü- noch der Symbolleiste unten rechts kann ich auf Entwurf umschalten.

Das muss ich mir in Ruhe ansehen, und vor allem, wie ich es in mein bestehendes System einbauen und nutzbar machen kann.

Erst einmal vielen Dank, tolle Unterstützung !

Jochen
Titel: Re: Datensatzvorlage
Beitrag von: Beaker s.a. am Juli 14, 2016, 19:38:14
Hallo Jochen,
Zitatdenn das Formular öffnet sich als Pop-Up, und weder in der Menü- noch der Symbolleiste unten rechts kann ich auf Entwurf umschalten.
Rechtsklick auf die Titelleiste.
gruss
Titel: Re: Datensatzvorlage
Beitrag von: Jochen1 am Juli 14, 2016, 21:30:12
Danke für den Tip !

... und ich habe es mir angesehen, aber es scheint -wie befürchtet- alles andere als trivial zu sein...ich muss da mal etwas am Wochenende  "herumspielen", um es zu verstehen....

Viele Grüße,
Jochen