Neuigkeiten:

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

Mobiles Hauptmenü

Erster Datensatz Ladefehler

Begonnen von Student17, November 11, 2017, 16:41:31

⏪ vorheriges - nächstes ⏩

Student17

Hallo zusammen, ich hab ein Problem bei einem meiner Formulare.

Das Formular basiert auf einer Abfrage. Mithilfe eines Listenfeldes kann ein Datensatz gewählt werden, und in den zugehörigen Feldern wird dann der Datensatz angezeigt. Das halt bisher immer funktioniert, auch bei diesem Formular.

Jetzt hab ich wohl vor einigen Tagen - hab seit dem ziemlich viel gemacht - einen Fehler gemacht. Das Listenfeld ist zwar passend gefühlt, aber der erste Datensatz wird nicht mehr automatisch geladen.

Hat jemand eine Ahnung was sich geändert hat das es jetzt nicht mher funktioniert und wie ich das Rückgängig machen kann ?

Ich habe relative viele Änderungen gemacht, eine davon war - an die ich mich erinnere - das ich ein Marko nach der Microsoft Anleitung eingebaut hab das die letzte Änderung des Datensatzes abspeichert.

Vielen Dank im vorraus :)


MzKlMu

Hallo,
Access macht so was nicht automatisch. Es muss Code gegeben haben der den Datensatz anzeigt. Und den hast Du vermutlich gelöscht, deaktiviert oder geändert.
Das musst Du wieder richtig machen.

Welcher Code ist denn zum Listenfeld hinterlegt ?


PS:
Zu Makros wirst Du relativ wenig Hilfe bekommen, die will keiner und somit ist auch wenig Erfahrung da.
Gruß Klaus

Student17

Hi, also in meinem listenfeld - das einwandfrei funktioniert - steht unter "Nach Aktualisieren" ein eingebettetes Marko:

SuchenNachDatensatz

Objekttyp           (leer gelassen)
Objektname        (leer gelassen)
Aufnahme            Erster
Bedingung     = ="[PC-ID]=" &Str(Nz(Screen.ActiveControl;0))

Das hab ich nicht selbst erstellt sondern Access.

Das Problem liegt darin das das rechtige Formular nicht den ersten Datensatz aufruft beim öffnen - wie früher.
Sondern erst wenn ich einen Datensatz im Listenfeld auswähle, dann auf Aktualisieren drücke.
Allerdings ab dem Zeitpunkt funktioniert wieder alle wie immer, also liegt der Fehler wo beim Laden des ersten Datensatzes beim öffnen :)

MzKlMu

Hallo,
wie gesagt, zu Makros wirst Du kaum Hilfe bekommen. Ich habe von den Dingern auch keine Ahnung.
Gruß Klaus

steffen0815

#4
Hallo,
ich denke das liegt nicht am Makro, dies sollte ja erst nach einer Aktualisierung wirken.

Zitataber der erste Datensatz wird nicht mehr automatisch geladen
Was wird denn angezeigt? Gar kein Datensatz oder ein "falscher"?
Gruß Steffen

Lachtaube

Das Ablaufprinzip wäre, beim Laden des Formulars zu prüfen, ob das Lstenfeld Zeilen enthält, die erste, letzte oder eine irgendwo hinterlegte Zeile auswählen und anschließend die Aktion anstoßen, die im Nach Aktualisierung Ereignis des Listenfelds abläuft.

In VBA könnte der Code dazu wie folgt für ein Formularmodul aussehen:Option Compare Database
Option Explicit

Private Sub Form_Load()
   Const LBX_Name As String = "DeinListenfeldName" '<== anpassen
   
   With Me.Controls(LBX_Name) 'oder kürzer: With Me(LBX_Name)
      'gibt es Zeilen?
      If .ListCount > 0 Then
         'erste Zeile auswählen (Zählung beginnt beo 0)
         .Value = .ItemData(0)
         'oder: letzte Zeile auswählen
         '.Value = .ItemData(.ListCount - 1)
         'Datensatznavigation mit dem ausgewählten Wert anstossen
         Call ShowPC(.Value)
      End If
   End With
End Sub


Private Sub DeinListenfeldName_AfterUpdate()
   'auch hier den natürlich den Namen anpassen
   Call ShowPC(Me.DeinListenfeldName)
End Sub

Private Sub ShowPC(ByRef PC_ID As Variant)
   If IsNull(PC_ID) Then Exit Sub 'sollte im Normalfall nicht eintreten
   
   'Datensatz suchen (...und hoffentlich finden)
   Me.Recordset.FindFirst BuildCriteria("[PC-ID]", dbLong, PC_ID)
End Sub
Grüße von der (⌒▽⌒)

Student17

hi, ich glaube auch nicht das das marko etwas damit zu tun hat.

Um auf die Frage von steffen0815 zu antworten hab ich hier mal zwei Screenshots angefügt. Der erste zeigt wie es Mal war und wie es sein sollte. Auf dem zweiten sieht man wie es jetzt auf einmal ist. Wie man sieht ist das Listenfeld in beiden Fällen gefüllt nur rechts - in meiner "Detailansicht" - ist kein Datensatz zu sehen beim zweiten. So wie ich das beim Öffnen jetzt allgemein für das Formular kein Datnsatz am Anfang gewählt.

Erst durch Auswahl und Aktualisieren bekomm ich den gleichen Zustand wie früher, der auch dem Bild 1 entspricht. Ab dann funktioniert alles einwandfrei :)

Für leihen wo müsste ich diesen VBA einfügen zum Testen Lachtaube ?

:)


DF6GL

#7
Hallo,

schau mal die Datensatzherkunft des Listenfeldes an.  Dort sollte eine Abfrage, bzw. ein SQL-String stehen.
In dieser/m  steht  vermutlich das "Letzte Kontrolle:"-Feld (Spalte) nicht in der Select-Liste....

Oder das Tabellenfeld (Spalte) mit Alias-Name "Letzte Kontrolle:"  ist nicht das gewünschte Datumsfeld
oder  die Tabellenspalte ist grundsätzlich "Leer"  (NULL)

Weiterhin sollten die Eigenschaften des Listenfeldes "Spaltenanzahl", "Spaltenbreiten" ,etc.  überprüft werden.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

steffen0815

Hallo,
ich vermute du stehst beim Öffnen auf einem neuen Datensatz, oder der erste Datensatz ist leer.
Wenn du auf einem neuen DS stehst, muss das irgend ein Code auslösen.

Welche Formularereignisse sind bei dir mit Code "belegt"?
Gruß Steffen

Frithjiof


Unter Formulareigenschaften kann im Reiter Daten z.B. ein Filter oder eine Sortierung für das Formular eingetragen sein.
Oder die Abfrage enthält  im Eigenschaftsblatt noch Filter oder Sortierungen.

Frithjof

Beaker s.a.

Hallo Steffen,
ZitatWenn du auf einem neuen DS stehst, muss das irgend ein Code auslösen.
Nicht unbedingt. Die Eigenschaft/-Einstellung "Daten eingeben = Ja"
erzwingt das ohne Code.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

steffen0815

Hallo,
ZitatNicht unbedingt. Die Eigenschaft/-Einstellung "Daten eingeben = Ja"
Mag sein, wäre auch mein erster Ansatz gewesen, allerdings wird ja das "Gehe zu Datensatz" im späteren Verlauf ausgeführt, deshalb kann weder ein Filter noch ein "Daten eingeben = Ja" das Verhalten erklären/auslösen.
Gruß Steffen

Beaker s.a.

Ich bezog mich auf
Zitatich vermute du stehst beim Öffnen
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Student17

Hallo erstmal alle miteinander, vielen vielen Dank für eure Antworten. Leider hab ich im Moment nicht die gelegenheit sie zu testen, den das Formular hat sich jetzt komplett zerschossen.

Seit neuestem behauptet es beim öffnen das es die Felder - die ich als Kriterien in der Abfrage verwende - nicht mehr findet, womit sich das Formular quasi nicht öffnen lässt. Sobald ich die Ursache dafür gefunden hab werd ich alles Ausprobieren und euch schreiben ob und wenn ja wie es sich lösen hat lassen:

Aktuell hab ich geschaut:

DF6GL - Alles geschaut und da ist alles wie es sein müsste. Das Marko "Letzte Kontrolle:" hab ich wieder entfernt. Es gab nähmlich auf einmal Laufzeit Probleme.

steffen0815 - Ich glaube nicht das es auf einem neuen Datensatz steht. Habe mal die "ID" (Den Autowert / Primärschlüssel) eingeblendet und daran müsste man es ja eigentlich erkennen, doch das Feld war nur leer.




Student17

Hallo miteinander. Ich hab nun die gelegenheit gehabt alle eure Sachen auszuprobieren und leider hilft nix davon :(

Hat noch jemand eine Idee, würds helfen wenn ich euch die Datei mal gebe. Hab wirklich wenig Lust noch mal 20h dieses Formular zu erstellen xD