Neuigkeiten:

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

Mobiles Hauptmenü

Navigationsformular

Begonnen von gsaccess, Januar 20, 2023, 00:02:06

⏪ vorheriges - nächstes ⏩

gsaccess

Ich habe ein Navigationsformular "frmNaviAuftragsverwaltung". In diesem werden über verschiedene Abfragen, in den einzelnen Navigationsschaltflächen Angebote, offene Aufträge, abgeschlossene Aufträge, abgerechnete Aufträge,... in den einzelnen Navigationsunterformularen angezeigt. Alle Navigationsunterformulare haben als erstes Feld "Auftrag_nr_h".
Ich möchte nun im Navigationsformular in einem eigenen Textfeld "txtausgewaehlterAuftrag" vom jeweils aktuell markierten Datensatz die Auftrag_nr_h anzeigen/auslesen damit ich diese Auftragsnummer in anderen Formularen weiterverwenden kann.
Ich habe schon in verschiedensten Foren nach einer Lösung gesucht, aber keine hat funktioniert.

zb. Steuerelementinhalt =[Navigationsunterformular].[Formular]![Auftrag_Nr_h]

in VBA ist mir unklar welches Ereignis dem Focus auf jeweils einen bestimmten = der aktuelle Datensatz entspricht.
Hat jemand eine Idee? Was mache ich falsch?
  •  

andyfau

Hallo,

Du könntest die Auftragnummer jeweils beim Aufruf eines Unterformulars in eine globale Variable ablegen und dann das Textfeld mit dieser Variable befüllen.
Beste Grüße
Andreas
  •  

Beaker s.a.

Hallo,
Zitatin VBA ist mir unklar welches Ereignis dem Focus auf jeweils einen bestimmten = der aktuelle Datensatz entspricht.
Das ist das Ereignis "Beim Anzeigen" (zugehörige Prozedur: Form_Current).
Globale Variable ist schon der richtige Ansatz, die sind aber nicht so
prickelnd, z.B. verlieren sie ihren Wert bei einem Laufzeitfehler. Ich
kapsele solche in einer öffentlichen Property
(Luftcode)
Private m_AuftragsNr As Long 'oder String falls nötig

Public Property Let AuftragNr (Nummer As Long/String) 's.o.
    m_AuftragsNr = Nummer
End Property
Public Property Get AuftragNr() As Long/String 's.o.
    AuftragsNr = m_AuftragsNr
End Property
im ersten Formular
Private Sub Form_Current()
    AuftragNr = Me.Auftrag_nr_h
End Sub
In den Folgeformularen
Private Sub Form_Open()
    Me.Filter = "Auftrag_nr_h = " & AuftragNr  'bei Text "Auftrag_nr_h = '" & AuftragNr & "'"
    Me.FilterOn = True
End Sub

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

gsaccess

Vielen Dank für deine Unterstützung aber es kommen laufend Fehlermeldungen.
das Feld auftrag_nr_h ist ein double
Mein Versuche:

beim anzeigen des Hauptnavigationsformulars
Private m_AuftragsNr As Double

Public Property Let auftragNr(Nummer As Double)
    m_AuftragsNr = Nummer
End Property
Public Property Get auftragNr() As Double
    AuftragsNr = m_AuftragsNr
End Property

Private Sub Form_Current()
    auftragNr = Me.Auftrag_Nr_h - hier Meldung, Methode oder Datenobjekt nicht gefunden


bei den UnterNavigationsformularen:
Private Sub Form_Open(Cancel As Integer)
Me.Filter = "Auftrag_nr_h = " & auftragNr  - Fehler beim Kompilieren Variable nicht definiert
    Me.FilterOn = True
End Sub

Was mache ich hier falsch?
  •  

gsaccess

Hier noch ein Bild der Navigationsschaltflächen und der in einem UnterNavigationsformular angezeigten Datensätze.
Immer wenn ich auf einen Datensatz klicke sollte im Textfeld "ausgewaehlterAuftrag" aktualisert werden
  •  

andyfau

Mal ehrlich. Was bringt ein Feld "ausgewählte Auftragsnummer" im Kopf des Formulars, wenn der Datensatzmarkierer im darunter liegenden Endlosformular eh auf den ausgewählten Satz und somit direkt auf die Auftragsnummer zeigt?
Beste Grüße
Andreas
  •  

gsaccess

Ich müsste zu dem ausgewählten Auftrag einen Bericht (Basis sind div. Abfragen aus verschiedenen Tabellen) drucken.
  •  

Beaker s.a.

@gsaccess
Wozu braucht man bei einer Auftragsnummer Nachkommastellen?
Der Code sollte so richtig sein, sonst hätte es sicher schon
Korrekturen "geregnet" (hoffe ich jedenfalls).
Wahrscheinlich ist dein Problem die Sichbarkeit der Variablen.
Die Properties und die Member-Variable gehören in ein allgemeines
Modul, damit sie von überall verfügbar sind.
ZitatPrivate Sub Form_Current()
Welches Form ist das?
Meine Idee war, dass das das erste (Unter)Form ist, das aktiv ist,
wenn du das Naviform öffnest.
Persönlich halte ich eh nicht viel von dem Navi-Form. Ich bevorzuge
das Register-Control wenn ich mehrere UFo mit gruppierten DS habe.

Noch was zur Auftragsnummer. Wenn eine "sprechende" Nummer gewünscht
ist wird die nicht als PK verwendet. Eine AutoWert-ID ist einfach praktischer,
 - um die muss ich mich nicht kümmern, Filtern und Joinen eingeschlossen.
Aber auch dann würde ich nur den nummerischen Anteil im Feld speichern, die
"sprechenden" Teile erst bei der Anzeige dazu basteln.

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

gsaccess

Nochmals vielen Dank für die Unterstützung.
Ich habe es jetzt direkt mit dem Steuerelementinhalt gelöst.
Textfeld=[Formulare]![frmNaviAuftragsverwaltung]![UFNaviAuftragsverwaltung].[Formular]![Auftrag_Nr_h]
das funktioniert problemlos
  •