August 06, 2020, 21:25:12

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Formular für Abfragen und neue Datensätze

Begonnen von tritium_2011, Juli 08, 2020, 10:08:31

⏪ vorheriges - nächstes ⏩

tritium_2011

Hallo liebe Mitglieder,

ich arbeite seit kurzem etwas mit Access und kenne mich daher noch nicht sehr gut aus. Habe aber schon einiges gelernt. :)

Ich würde gerne folgende Datenbank aufbauen:

Es handelt sich um eine Inventarliste von Geräten mit zugehörigen Überprüfungsterminen.
Ich habe nun eine Tabelle (TblEquipment) erstellt, die die Geräte auflistet. Folgende Spalten gibt es: IDEquipment, Manufacturer, Model, und SN; In einer zweiten Tabelle werden die Überprüfungstermine/Events gespeichert: TblEvents mit den Spalten IDEvent, Event, EventDate und RefEquipment; RefEquipment entspricht der IDEquipment und diese beiden habe ich über eine 1:n Beziehung zueinander verknüpft.
Nun habe ich ein Formular erstellt, in dem man über Kombinationsfelder (CboEquipmentType, CboManufacturer, CboModel und CboSN) das entsprechende Equipment auswählen kann. Die Kombinationsfelder sind ungebunden und bei Auswahl eines übergeordneten (z.B. Model) kann ich im nächsten (SN) nur mehr jene Einträge sehen, die dazu passen. Soweit so gut.
Was ich nun gerne hätte wären mehrere Buttons um Aktionen auszuführen. Zum Einen einen Button, mit dem man dann zum ausgewählten Equipment ein neues Event in die Datenbank hinzufügen kann. Weiters noch ein Button, der zum ausgewählten Equipment die TblEvents ausliest und somit alle Events auflistet.
Beim Öffnen des Formulars sollen die Button ausgegraut sein und die Kombinationsfelder leer.
Die Buttons sollen erst bei vollständiger Auswahl der Kombinationsfelder aktiv sein. Würde das über einen Code im AfterUpdate realisieren (Me!Button.Enabled = False bzw. Me!Button.Enabled = True beim letzten Kombifeld). Damit ist der Button dann auch bei einer Neuabfrage wieder grau, bis SN aktualisiert wird.

Button erstellen habe ich geschafft, jedoch nicht, dass ein neuer Datensatz angelegt wird und auch nicht, dass die Events (als Tabelle) angezeigt werden...

Ich hoffe hier kann mir jemand weiterhelfen. Habe bis jetzt nicht viel SQL Erfahrung (lese mich aber gerade etwas ein) und keine VBA/Makro Erfahrung. Also würde ich mich über Erklärungen und nicht zu komplizierte Lösungsvorschläge sehr freuen.

Vielen Dank.

DF6GL

Juli 08, 2020, 10:41:43 #1 Letzte Bearbeitung: Juli 08, 2020, 10:55:44 von DF6GL
Hallo,

ausgehend von den beiden in 1:n-Beziehung stehenden Tabellen wäre folgendes vorzuschlagen:

Einzelform (frmEquipment) mit Datenherkunft zu "tblEquipments" 
Endlosform (frmEvents) mit Datenherkunft zu "tblEvents"

Einbau von frmEvents als Unterformular (UFO-Steuerelement) in frmEquipment (HFO, Hauptformular)
Eigenschaften "Verknüpfen von/nach" auf die Schlüsselfelder setzen



ZitatZum Einen einen Button, mit dem man dann zum ausgewählten Equipment ein neues Event in die Datenbank hinzufügen kann.

Ein Button ist hierfür nicht nötig. Ein neuer Event kann gleich im UFO als neuer DS angelegt werden.

ZitatWeiters noch ein Button, der zum ausgewählten Equipment die TblEvents ausliest und somit alle Events auflistet.

Ebenfalls unnötig, weil die Events automatisch zum angezeigten Equipment sichtbar sind.

tritium_2011

Hallo, danke für die Antwort.

Wie kann ich dann eine Auswahl treffen über Kombifelder? Und wenn nichts ausgewählt wird, würde ich gerne auch keine Tabellen usw sehen....

Die Buttons sind unnötig ja, aber für Enduser wären diese angenehmer - somit könnte man erreichen, nur die Eventtabelle anzuzeigen, ohne, dass etwas änderbar wäre...
Und Event anlegen, dann eben für einen neuen Event.

Danke.

Beaker s.a.

@tritium_2011
ZitatWie kann ich dann eine Auswahl treffen über Kombifelder?
Genauso wie bisher auch.
ZitatUnd wenn nichts ausgewählt wird, würde ich gerne auch keine Tabellen usw sehen....
Dann setze einfach einen Filter, der immer "False" ergibt
Me.Filter = "1=0"
Me.FilterOn = True
Musst du nur ein passendes Ereignis finden.
Zitatsomit könnte man erreichen, nur die Eventtabelle anzuzeigen, ohne, dass etwas änderbar wäre...
Wenn du es willst, sperre das UFo
Me.UFOControl.Lockes = Trueund öffne ein PopUp mit der gleichen DS-Herkunft wie das UFo
DoCmd.OpenForm FormName:="NameDesPopups", WhereCondition:="EquipementID_F = " & Me.txtEquipementID, WindowMode:=acDialogevtl. ergänzt du noch ein
, DataMode:=acFormAdd
'an dieser Stelle hält der Code an, und wird erst nach dem
'Schliessen fortgesetzt mit
'UFo aktualisieren
Me.UFoControl.Form.Requery
(Namen musst du natürlich anpassen)

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.