Neuigkeiten:

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

Mobiles Hauptmenü

Neueste Beiträge

#1
Formular / updates kb5002813 und kb500291...
Letzter Beitrag von 41211 - Heute um 15:36:16
Seit den updates bekommen Textfelder in Formularen immer wieder willkürlich weißen Hintergrund obwohl transparent eingestellt ist. Es ist wohl gemäß Internet und verschiedener KI fraglich, ob Microsoft das für access 2016 repariert. Hat jemand genauere Informationen? Und kann man diese updates bedenkenlos deinstallieren?
Danke für Eure Hilfe.
#2
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Knobbi38 - September 05, 2026, 14:54:55
Nach einem Autowert zu sortieren, gibt oft wenig Sinn - meistens wird der sogar gar nicht angezeigt. Ich dachte dabei eher an die üblichen Verdächtigen, wie z.B. Name, allg. Bezeichnungen usw. In der Praxis kommt es auch seltener vor, dass mehrere DS mit einem  Dialog-Formular erfasst werden. Bei  Unterformularen kann ich mit das schon eher vorstellen, aber dann wird dabei eigentlich nicht immer auf den neuesten DS  positioniert, wenn überhaupt.
Ein paar Möglichkeiten, zu positionieren, sind ja jetzt aufgezeigt worden, alles andere ergibt sich dann aus der konkreten Problemstellung.

Gruß
Ulrich
#3
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Bitsqueezer - September 05, 2026, 14:30:19
Hallo,

für gewöhnlich sind IDs AutoIDs und PKs Clustered und daher wird auch die Sortierung zumeist auf ID eingestellt. In dem Fall ist der letzte Datensatz immer der Neueste.

Wenn man das Endlosformular nach einem anderen Feld sortiert, dann natürlich nicht, dann würde das Positionieren auf den zuletzt eingegebenen Datensatz vielleicht Sinn machen, wobei die anderen gleichzeitig eingegebenen dann "wild verstreut" sein können.

Gruß

Christian

#4
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Knobbi38 - September 05, 2026, 09:53:44
Zitat von: Bitsqueezer am September 04, 2026, 14:36:47und auf den letzten Datensatz springen.
Hier ist genau das Problem. Der letzte DS muss nicht der aktuellste sein.

Zitat von: Bitsqueezer am September 04, 2026, 14:36:47Immerhin könnte man in einem "Add"-Formular ja auch mehr als einen Datensatz eingeben.
Richtig und dann würde man die ID des zuletzt hinzugefügten DS zurückgeben, was ja nicht so falsch sein kann.

Knobbi38
#5
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Bitsqueezer - September 04, 2026, 14:36:47
Hallo,

ich würde in diesem Fall die ID hier überhaupt nicht zurückgeben. Sie ist eh die neueste ID, also einfach im aufrufenden Formular Requery und auf den letzten Datensatz springen. Immerhin könnte man in einem "Add"-Formular ja auch mehr als einen Datensatz eingeben.

Gruß

Christian
#6
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Knobbi38 - September 04, 2026, 13:40:49
Zitat von: Beaker s.a. am September 04, 2026, 12:58:47Das ist aber an der Stelle doch schon geschlossen.
Die Aufrufende Instanz öffnet und schließt das Dialog-Formular. Das Dialog-Formular schließt sich nicht selbst, sondern es blendet sich nur selbst aus ("hidden"), wodurch es den Fokus veriert. Dadurch wird der aufrufende Code weiter fortgesetzt und kann auf das versteckte Dialogformular zugreifen.

Es ist übrigens "Best Practice", wenn sich geöffnete Objekte, in diesem Fall das Formular, nicht selbst schließen.

Mit DMax den neuesten DS zu ermitteln kann funktionieren, muss aber nicht, denn bei konkurrierenden Zugriffen in einer DB kann schon zwischenzeitlich eine anderer DS hinzugefügt worden sein. Außerdem ist der PK nicht immer ein Autowert und könnte auch alphanumerisch sein. Ob DMAX dann die geeignete Funktion ist, muss abgeklärt werden. Da die Dialogform aber auf jeden Fall selber weiß, welchen PK der zuletzt hinzugefügte DS hat, braucht man keinen weiteren Zugriff auf die Tabelle machen.

Mal abgesehen davon, könnte das Hinzufügen ja auch abgebrochen werden und dann? 

Gruß
Ulrich
#7
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Beaker s.a. - September 04, 2026, 12:58:47
Hallo Ulrich,
ZitatNein, das funktioniert so nicht,
Daher auch mein einschränkender Kommentar.
ZitatNormalerweise würde man eine Property im Dialog-Formular dafür verwenden.
Das ist aber an der Stelle doch schon geschlossen. Wie wäre es mit
.Requery

'navigieren zum neuen DS
lUFoLastID = DMax("IDImUfo", "DsHerkunftDesUFo")
.Recordset.FindFirst "FKFeld = " & lUFoLastID

Wenn ich es aber in einem der anderen Posts des OP richtig gelesen habe,
hat er sein Projekt wohl inzwischen aufgegeben, und wir müssen uns damit
nicht mehr beschäftigen.

gruss ekkehard
#8
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Knobbi38 - September 04, 2026, 09:55:45
Zitat von: Beaker s.a. am September 03, 2026, 12:23:21DoCmd.GoToRecord acDataForm, .Name, acLast
'hier bin ich mir nicht sicher ob das zuverlässig ist *)
Nein, das funktioniert so nicht, weil hier "nur" zum letzten DS eines Recordset, einer Abfrage oder Tabelle positioniert wird, was nicht zwangsläufig der aktuellste sein muss.

Um das Ganze zuverlässig zu gestalten, muss der zuletzt hinzugefügte PK aus dem Dialog-Formular an die aufrufenden Instanz zurückgegeben werden, wofür es mehrere Möglichkeiten gibt. Dieser Wert wird dann zum Positionieren herangezogen, aber wie gesagt, ganz so einfach wie in deinem Beispiel geht es dann doch nicht.

Im Anhang ein älteres kleines Beispiel, wo vielleicht etwas ungewöhnlich, eine Tempvar zur Übergabe der ID verwendet wird. Normalerweise würde man eine Property im Dialog-Formular dafür verwenden.

Knobbi38

#9
Bericht / Re: Filterung anhand der ID's ...
Letzter Beitrag von jens05 - September 03, 2026, 17:31:47
Hallo
ZitatWozu steht in der folgende Zeile eine "- 2"?
strFilter1 = strFilter1 & "'" & ctl1.ItemData(varItem) & "', "Beim zusammensetzen der IN() Bedingung wird hinten immer "', " als Separator drangehängt für den nächsten Filterwert. Am Ende der Schleife wird die Länge des Strings um 2 Stellen gekürzt, also ", " abgeschnitten.

Zu deiner UND / ODER Umschaltung, würde ich ein Optionsfeld nehmen
ungetestet
    dim strCond as string
    '....
    If Me!NamederOptionsgruppe = 1 then
      strCond = " AND "
     else
      strCond = " OR "
    end if
    ' Alle Filter mit AND verknüpfen
    If strFilter1 <> "" And strFilter2 <> "" And strFilter3 <> "" And strFilter4 <> "" Then
        strTotalFilter = strFilter1 & strCond  & strFilter2 & strCond  & strFilter3 & strCond  & strFilter4
#10
Access Programmierung / Re: Formular aktualisiert nich...
Letzter Beitrag von Beaker s.a. - September 03, 2026, 12:23:21
Hallo,
ZitatWeil der neue Eintrag über ein Popup hinzu gefügt werden soll
Dann kannst du das Vorhaben direkt vom UFo aus steuern. Voraussetzung:
HFo und UFo sind über die ID im HFo verknüpft, PKs sind AutoWerte.

Platziere einen Button im UFo (Kopfbereich), - Name: cmdNeuerDS
Das Popup hat die gleiche DS-Herkunft wie das UFo.

(Luftcode, ungetestet)
Private Sub cmdNeuerDS_Click()
    Dim lHFoID As Long
    Dim lUFoLastID As Long

    With Me   
        lHFoID = .Parent.NameDesIDFeldes

        DoCmd.OpenForm _
            FormName:="NameDesPopups", _
            DataMode:=acFormAdd, _
            WindowMode:=acDialog, _
            OpenArgs:=lHFoID

        'nach dem Schliessen des Popups
        'UFo aktualisieren
        .Requery

        'navigieren zum neuen DS
        DoCmd.GoToRecord acDataForm, .Name, acLast
'hier bin ich mir nicht sicher ob das zuverlässig ist *)

    End With
End Sub
acFormAdd = Form wird mit neuem, leerem DS geöffnet
acDialog = Codeausführung wird an das Popup übergeben,
und erst nach Schliessen hier fortgeführt
OpenArgs: Da das Popup ja keine Verknüpfung zum UFo hat
muss der FK im Popup per Code gesetzt werden:

Private Sub Form_Open(Cancel As Integer)
   
    Me.NameDesFKFeldes = Me.OpenArgs       'ID im HFo

End Sub

*) Du könntest das UFo nach der ID absteigend sortieren, dann
hättest du den letzten (neuen) DS immer in der ersten Zeile,
und das Springen dorthin entfällt.

gruss ekkehard