Neuigkeiten:

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

Mobiles Hauptmenü

Feldinhalt Formular beim ersten Öffnen unsichtbar

Begonnen von Morgi, März 16, 2015, 14:39:51

⏪ vorheriges - nächstes ⏩

Morgi

Hallo zusammen.
Meine DB bringt mich mal wieder an den Rand des Wahnsinns und ich hoffe, hier Hilfe zu finden. Nachdem ich seit Jahren anonym hier mitlese, traue ich mich nun mal selbst.  ;)
Access-Version ist 2010
Beim Öffnen eines Formulars mit der Detailansicht zu einem Datensatz erscheint das erste Feld (ein Memo-Feld) leer. Erst nachdem ich ein anderes Feld angeklickt habe, wird der im ersten Feld vorhandene Text sichtbar.
Danach bleiben auch alle Feldinhalte sichtbar. Erst wenn das Formular neu geöffnet wird, ist der Inhalt des ersten Feldes wieder unsichtbar.
Wenn ich in der Aktivierungsreihenfolge ein anderes Feld als erstes Feld setze (bei meinem Versuch ein Textfeld), passiert dort dasselbe.
Habt Ihr eine Idee, wo da der Haken sein kann? Vielen Dank schon mal...
Beste Grüße
Morgi

el_gomero

Hallo Morgi,

wie lautet denn der Code zum Öffnen des Formulars? Und gibt es im Ereignis Form_Open Einträge?
Gruß
Jürgen


Hilfe nach bestem Wissen, ohne Anspruch auf Richtigkeit und Vollständigkeit.
*feedback erwünscht*
Bitte Tipps lesen

Morgi

#2
Hallo Jürgen. Folgenden Code habe ich mir Internet zusammengesucht und "erbastelt".

Private Sub cmdOpenDetailansicht_Click()
'Gleicher Datensatz nach Requery
    Dim lngStore As Long
    lngStore = Me!entID
    'Bildschirmflackern reduzieren
    Me.Painting = False
    DoCmd.Requery
    DoCmd.RunCommand acCmdSaveRecord
    Me.Recordset.FindFirst "entID = " & lngStore
    Me.Painting = True
    'springe zum aktuellen Datensatz im Formular frmEntscheidungenEingabe
    Dim frm As Form
    Dim rec As Recordset
    DoCmd.OpenForm "frmEntscheidungenEingabe"
    Set frm = Forms("frmEntscheidungenEingabe")
    Set rec = frm.RecordsetClone
    With rec
        .FindFirst "entID=" & Me.entID
        If Not .NoMatch Then
        frm.Bookmark = rec.Bookmark
        End If
    End With
    Set rec = Nothing
    Set frm = Nothing
End Sub


Ich bin leider immer noch im Bereich des "denn sie wissen nicht so wirklich, was sie tun", aber grundsätzlich funktionierts. ;-)

Gruß Morgi

MaggieMay

Hi,

eine Ursache für das Verhalten ist wohl eher nicht in dem Code zu finden, sondern in dem dort geöffneten Formular.

Man könnte ihn aber folgendermaßen einkürzen:
Private Sub cmdOpenDetailansicht_Click()
    DoCmd.RunCommand acCmdSaveRecord

    ' öffne  Formular frmEntscheidungenEingabe und springe zum aktuellen Datensatz
    DoCmd.OpenForm "frmEntscheidungenEingabe"
    Forms!frmEntscheidungenEingabe.RecordSet.FindFirst "entID=" & Me.entID
End Sub


Hinweise:
Nach einem Requery gibt es nichts mehr zu speichern (und wenn überhaupt dann vorher), das passiert automatisch.
Allerdings möchte ich den Sinn des Requery in Frage stellen, dann also lieber nur speichern.
Der Nomatch-Fall kann ausgeschlossen werden, es handelt sich ja um die aktuelle Datensatz-ID, nach der gesucht werden soll.

Als Alternative zum Sprung auf den Datensatz könnte man das Formular auch direkt beim Öffnen filtern, wodurch der ursprüngliche Code zu einem Zweizeiler wird:
Private Sub cmdOpenDetailansicht_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.OpenForm "frmEntscheidungenEingabe", , , "entID=" & Me.entID
End Sub
Freundliche Grüße
MaggieMay

Morgi

Hi MaggieMay,
vielen Dank schonmal für Deine Anregungen.
Ich habe mich nun nochmal an den Code gesetzt und viele verschiedene Möglichkeiten durchprobiert. Folgendes ist dabei herausgekommen, was die Anforderungen erfüllt.
Private Sub cmdOpenDetailansicht_Click()
    DoCmd.RunCommand acCmdSaveRecord
    ' öffne  Formular frmEntscheidungenEingabe und springe zum aktuellen Datensatz
    DoCmd.OpenForm "frmEntscheidungenEingabe"
    DoCmd.Requery
    Forms!frmEntscheidungenEingabe.Recordset.FindFirst "entID=" & Me.entID
End Sub

Ich kann nicht erklären, warum es so funktioniert und vor allem nicht warum das Requery an der Stelle steht, aber bei allen Versuchen klappte es nur so, dass in dem Formular zu dem ich wechsle, auch ein ggf. neu angelegter Datensatz schon da ist. Und ich gebe zu, der ursprüngliche Code war sehr verschwurbelt - ich habe anscheinend einiges dazugelernt, dass mir das inzwischen auch auffällt.

Bezüglich meines eigentlichen Problems habe ich einen Verdacht:
In dem Formular frmEntscheidungenEingabe befindet sich ein Webbrowserelement, mit dem ich PDF's anzeige. Dessen Steuerelement ist ein Textfeld mit dem Pfad darin. Dieses Konstrukt läuft in einer anderen Datenbank von mir ganz hervorragend. Nun fiel mir auf, dass bei den Test-Datensätzen, die ich beim Probieren generiert habe und in denen das Feld für den Pfad leer ist, das Unsichtbarkeits-Problem nicht auftaucht...
Liegt es an dem PDF-Vorschau-Konstrukt? Gibt es da schlauere Lösungen? Mich verwirrt nur, dass genau dieser Weg in der anderen DB läuft wie geschnitten Brot... Jemand eine Idee?

Bastelgrüße
Morgi