collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 63
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 2
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13808
  • stats Beiträge insgesamt: 64173
  • stats Themen insgesamt: 8680
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Cursor springt nach Eingabe wieder auf die erste Zeile  (Gelesen 4751 mal)

Offline Alex_80

  • Newbie
  • Beiträge: 38
Cursor springt nach Eingabe wieder auf die erste Zeile
« am: Februar 24, 2015, 17:33:31 »
Hallo,

ich habe folgendes Problem bei einem Formular:

Kurz zu dem Aufbau des Formulars: Das Formular ist aufgeteilt in zwei Endlosformulare, ein Hauptformular (Kundendaten) und ein Unterformular (Rechnungsnummer etc.) In diesem Unterformular ist nochmal ein Unterformular (Leistungserfassung) als Tabelle angelegt. Die Verknüpfungen zu den einzelnen Formularen funktioniert alles prima. Das eigentliche Problem ist, dass in dem Unterformular für die Leistungserfassung, der Cursor nach Eingabe der Leistung immer wieder nach oben auf die erste Zeile springt. Das heißt, wenn ich als zweite Leistung "Beratung" erfasse, springt er wieder zurück auf den Anfang.

Kann mir jemand sagen, wieso? Oder wie kann ich es unterbinden?

Ich habe schon diverse Sachen versucht, dass das Textfeld nach Fokusverlust oder beim Verlassen zum neuen Datensatz gehen soll, was aber nicht richtig funktionierte. Hat hier vielleicht einer eine Idee?

Danke!
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 7016
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #1 am: Februar 24, 2015, 17:38:06 »
Hallo,
gibt es VBA Code in dem betreffenden Ufo ?
Wenn ja, welchen ?
Gruß
Klaus
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3107
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #2 am: Februar 24, 2015, 17:45:26 »
Hallo,
Zitat
Das heißt, wenn ich als zweite Leistung "Beratung" erfasse, springt er wieder zurück auf den Anfang.
dafür wird wohl ein Requery verantwortlich sein.
Freundliche Grüße
MaggieMay
 

Offline Alex_80

  • Newbie
  • Beiträge: 38
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #3 am: Februar 25, 2015, 07:16:50 »
Hallo,

also es gibt mehrere VBA Codes in dem betreffenden Ufo:

1. Berechnung des Gesamtbetrages in dem übergeordneten Ufo:
Private Sub Form_AfterUpdate()
Me.Parent.Recalc
Me.Parent!Betrag = Me.Summe_Gesamtpreis
End Sub

2. Berechnung des Gesamtpreises bei Erhöhung der Anzahl der erbrachten Leistung:
Private Sub Anzahl_AfterUpdate()
Me.Gesamtpreis = Me.Anzahl * Me.Einzelpreis
End Sub

3. Automatische Übernahme des Leistungsdatums vom Vorgänger:
Private Sub Leistungsdatum_BeforeUpdate(Cancel As Integer)
Me.Leistungsdatum.DefaultValue = Str(CDbl(Me.Leistungsdatum))
End Sub

4. Automatische Ergänzung der Tarifziffer bzw. Leistung und Berechnung:
Private Sub Tarifziffer_AfterUpdate()
Me.Text_der_Tarifziffer = Tarifziffer.Column(2)
Me.Einzelpreis = Tarifziffer.Column(3)
Me.Anzahl = 1
Me.Gesamtpreis = Me.Anzahl * Me.Einzelpreis
End Sub

Ich wüßte aber nicht, welcher der Codes das Ufo Leistungserfassung dazu bewegt, immer auf den Tabellenanfang zu springen.

Und wo kann ich prüfen, ob eine "Requery" verantwortlich ist?

Was mir noch aufgefallen ist: Öffne ich die beiden Ufo gerennt (ich habe die extra als ein Formular angelegt, damit diese einfach in ein Hfo intigiert werden können), dann springt der Cursor nicht in die erste Zeile zurück, sonder geht normal weiter. Hängt es vielleicht auch mit dem Hfo zusammen?
« Letzte Änderung: Februar 25, 2015, 07:52:33 von Alex_80 »
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3107
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #4 am: Februar 25, 2015, 11:32:40 »
Hi,

dann kann ja eigentlich nur das Me.Parent.Recalc verantwortlich sein.
Freundliche Grüße
MaggieMay
 

Offline Alex_80

  • Newbie
  • Beiträge: 38
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #5 am: Februar 25, 2015, 13:52:55 »
Hallo,

das schien tatsächlich das Problem zu gewesen zu sein. Wenn ich jedoch Me.Parent.Recalc deaktiviere, rechnet er mit den Gesamtbetrag der ersten Zeile nicht mit ein (bleibt leer). Das Gesamtergebnis wird auch komplett falsch zusammengerechnet. Muss ich hier was umändern, damit das wieder funktioniert?
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3107
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #6 am: Februar 25, 2015, 14:04:35 »
Hi,

wenn es um Datenerfassung geht, könntest du nach dem Recalc auf einen neuen Datensatz im Ufo springen. Oder du stellst fest, was genau überhaupt neu berechnet werden muss. Möglicherweise genügt es auch, den Datensatz im Ufo explizit zu speichern, bspw. mit Me.Dirty = False.
Freundliche Grüße
MaggieMay
 

Offline Alex_80

  • Newbie
  • Beiträge: 38
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #7 am: Februar 25, 2015, 14:18:06 »
Also das verstehe ich gerade gar nicht....sorry.

Meinst Du so?

Private Sub Form_AfterUpdate()
Me.Parent.Recalc
Me.Dirty = False
Me.Parent!Betrag = Me.Summe_Gesamtpreis
End Sub

Wobei das nicht klappt und er wieder nach oben springt. Zudem handelt es sich zwar um eine Datenerfassung einer Leistung, aber es soll ja auch die Gesamtsumme im übergeordneten Formular übernommen werden.                             
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3107
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #8 am: Februar 25, 2015, 14:24:56 »
Sorry (mea culpa), das mit dem Speichern ist im Form_AfterUpdate ziemlich sinnfrei, aber was hältst du hiervon:
Private Sub Form_AfterUpdate()
Me.Parent!Betrag = Me.Summe_Gesamtpreis
Me.Parent.Recalc
DoCmd.GotoRecord , , acNewRec
End Sub

Es wäre aber sinnvoll, erstmal alle Fragen zu beantworten...
Was genau soll im Parent aktualisiert werden?
Freundliche Grüße
MaggieMay
 

Offline Alex_80

  • Newbie
  • Beiträge: 38
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #9 am: Februar 25, 2015, 14:51:31 »
Also ich habe den Code probiert, aber es hat leider auch nicht funktioniert. Er springt immer noch hoch.

Es ist so: In dem Unterformular (Rechnungsdaten) befindet sich ein Feld "Betrag", wo nach Eingabe der Leistungen die Summe automatisch stehen soll. In dem Unterformular (Rechnungdaten) befindet sich ein Ufo "Leistungserfassung" in Tabellenform, wo die Leistung- bzw. die Tarifziffer eingeben wird. Daraufhin holt sich Access die Bezeichnung und die Preise aus einer anderen Tabelle automatisch und ergänzt diese. Somit muss ich nur die Tarifziffer eingeben und nach jeder Eingabe berechnet er in einem Textfeld die Summe der Gesamtpreise. Das befindet sich in der Fußzeile des Ufo "Leistungserfassung". Jetzt soll dieser Betrag einfach in das Feld "Betrag" im Ufo "Rechnungsdaten" gesetzt werden.

Im Parent soll somit der Gesamtbetrag immer sofort berechnet und aktualisiert, damit dies an das Feld "Betrag" weitergegeben werden kann.

Ich hoffe ich konnte es einigermaßen verständlich rüber bringen?!

Ich habe auch mal einen Screenshot angehangen in der Anlage
« Letzte Änderung: Februar 25, 2015, 14:56:21 von Alex_80 »
 

Offline MaggieMay

  • Global Moderator
  • Access Guru
  • *****
  • Beiträge: 3107
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #10 am: Februar 25, 2015, 15:10:18 »
Am einfachsten löst du das, indem du in den Steuerelementinhalt des Textfeldes einen Verweis auf das berechnete Feld im Unterformularfuß schreibst.
Beispiel:
=frmLeistungserfassung.Form!txtSummeGesamt
Ein gebundenes Feld brauchst du dafür nicht, berechnete Werte werden nicht gespeichert sondern stets aktuell berechnet.

PS:
Es wäre auch gar kein Recalc erforderlich gewesen, weil im Parent ja gar keine berechneten Felder vorhanden waren.
Freundliche Grüße
MaggieMay
 

Offline Alex_80

  • Newbie
  • Beiträge: 38
Re: Cursor springt nach Eingabe wieder auf die erste Zeile
« Antwort #11 am: Februar 26, 2015, 06:45:35 »
Passt danke :-)!

Ich hatte auch nochmal Deinen Code ausprobiert:

Private Sub Form_AfterUpdate()
Me.Parent.Recalc
Me.Parent!Betrag = Me.Summe_Gesamtpreis
DoCmd.GotoRecord , , acNewRec
End Sub

Keine Ahnung, warum der beim ersten Mal nicht klappte, aber der funktioniert jetzt auch super!

Also nochmals vielen Dank für die Hilfe!