![]() |
VB Problem - Endlosschleife.... (Bug in Access?)
Folgendes Problem, auf das ich gerade drauf gekommen bin:
Ich hab ein Kombinationsfeld, wo ich auch Eingaben zulasse. Wenn jetzt jemand etwas eingibt, überprüfe ich bei jedem Buchstaben, ob das, was im Feld drin steht, not "" bzw. not null ist um ein anderes Feld zu Aktivieren. Das ist die Funktion dazu: Code:
Private Sub cboLieferant_Change() 'wenn sich etwas in dem Feld ändert - nachsehen ob Kontakt gesperrt werden soll/oder aktiviert wird Dann setze ich mit cboLieferant.SelStart = ... den Cursor wieder an das Ende - sonst steht das eingegeben genau verkehrt, da bei requery der Cursor am Anfang stehen würde. Wenn man jetzt Text eingibt, und dann ein bzw. mehrer Lehrzeichen tippt, verschwindet Access in einer Endlosschleife (da läuft kein Programmcode mehr von mir - hab ich mit Einzelschritten geprüft) Es reicht eigentlich die Zeile me.requery um Access mit ein paar Leerzeichen abschmieren zu lassen. Hat irgendwer eine Idee woran das liegt - bzw. wie ich das ganze umgehen könnte. Weil da bin ich etwas überfragt. |
Könnte es sein, daß:
So wie ich das jetzt verstanden habe, aktualisiert Me.Requery alle Felder was wiederum cboLieferant_Change() aufruft, welches wieder Me.Requery ... also der Me.Requery einen Change-Event auslöst, welcher cboLieferant_Change() aufruft? |
Zitat:
Weil in cboLieferant_change() hab ich einen Haltepunkt. Von dort aus bin ich dann mittels Einzelschritten die Codezeilen durch gegangen. Er springt in keine von mir programmierte Funktion mehr rein. Sobald ich meinen Programmcode "verlasse" (bei End Sub) startet die Endlosschleife. Und das auch nur, wenn ich Leerzeichen eingebe. Sonst ists mir noch nicht aufgefallen. Also ich kann normal reinschreiben - per Maus etwas markieren und löschen etc.... Darum riecht das sehr stark nach Access Bug. Ich könnte natürlich erst beim Verlassen des Steuerelements überprüfen ob noch etwas drin steht oder nicht. Nur is das net so schön, da als nächstes "logisches" Feld für den User eigentlich cboKontakt kommen müsste. PS: ist bei Access XP und 2000 das gleiche. Das habe ich schon probiert. :) |
Bug oder nicht Bug,
das ist hier nicht die Frage ;) Ich würde es mal mit folgendem Code probieren: ---------------------------------------------- Private Sub cboLieferant_Change() If Me.cboLieferant.Text <> "" Then cboKontakt.Enabled = True Else cboKontakt.Enabled = False End If End Sub ---------------------------------------------- |
Zitat:
Weil da bin ich eh kurz angestanden, weil nix in dem Feld drin gestanden is (vor dem Refresh) Werds morgen ausprobieren. War heut eh a bissl peinliche Gschicht: der "Ansprechpartner" in der Firma, für den ich das bastel war grad da, weil ich noch ein paar Sachen klären wollte. Und grad da isses zum ersten Mal passiert (und ich hab natürlich zuerst an einen Programmierfehler von mir gedacht) edit: bin grad drauf gekommen, dass ich eh eine Kopie der DB mit hab. So wies ausschaut, funkts. Werde es morgen noch einmal ausführlicher probieren. Was würd ich nur ohne den Seidl machen. :confused: ;) :D |
Am Me.Objektname liegt's in dem Fall nicht. Me.Objektname sagt eigentlich nichts anderes aus als Objektname, nur gibt das Me eben explizit das Parent-Objekt an.
Das Problem ist entstanden, weil die Combobox Value als Default-Property definiert hat. Wenn man also auf eine Combobox zugreift ohne eine Property anzugeben, so bekommt man das selbe wie mit me.cboMeinFeld.Value. Value ändert sich für die Combobox aber nicht sofort mit der Eingabe. Direkt verändert sich nur der Text me.cboMeinFeld.Text. Der Nachteil an .Text ist nur, das man es nur auf Felder anwenden kann, die den Focus besitzen. In diesem Fall ist das aber kein Problem. |
nochmals Danke.
Habs jetzt etwas ausführlicher "getestet" (eigentlich gibts ja fast gar nix zum testen, is ja eh alles total logisch) Funkt natürlich. Und die Erklärung ist auch logisch. Das mitn Focus stimmt - drum hab ich mir irgendwie abgewöhnt .Text zu nehmen. Es ist zwar kein Problem immer ein .SetFocus davor zu geben, wenn man es auslesen möchte, aber irgendwo doch "lähmend" beim Programmieren, weil ma da (ich zumindest) immer wieder drauf vergisst. Außerdem hab ich mir nicht gedacht, dass .Text einen Unterschied macht. :) |
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag