Sie koennen die metoden und eigenschaften eines Steuerelementes...

13/07/2009 - 16:09 von Volker Neurath | Report spam
Hallo zusammen,

ich àrgere mich schon wiedermal über Access -- weil es mich mit einer
ziemlich sinn- und hilfsbefreiten Felermeldung bombardiert:

"Sie können die Eigenschaften und Methoden eines Steuerelementes nur
dann auswerten, wenn das steuerelement den Focus hat"

Bitte was soll DAS denn heissen?

Mussich wirklich vor dem zugriff auf irgendeine eigenschaft/Methode
eines Steuerelementes vorher <control>.setfocus angeben?
Oder was will mir Access hier sagen?
(und wenn ja: was soll denn der Schwachfug?!)

Hintergrund:

ich habe versucht, diesen Tipp von Allen Browne:

http://www.allenbrowne.com/ser-32.html

auf eine meiner drei Combo-Boxen (Distributoren, Hàndler, Endkunden)
anzuwenden - klappt auch, aber wenn ich im Form_Current

Call ReloadCustomer(Me!cboDirectCustomer, conDirectMin)

einsetze, kommt obige Fehlermeldung.



Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
 

Lesen sie die antworten

#1 Volker Neurath
13/07/2009 - 16:18 | Warnen spam
Volker Neurath wrote:

Hallo zusammen,

ich àrgere mich schon wiedermal über Access -- weil es mich mit einer
ziemlich sinn- und hilfsbefreiten Felermeldung bombardiert:

"Sie können die Eigenschaften und Methoden eines Steuerelementes nur
dann auswerten, wenn das steuerelement den Focus hat"

Bitte was soll DAS denn heissen?

Mussich wirklich vor dem zugriff auf irgendeine eigenschaft/Methode
eines Steuerelementes vorher <control>.setfocus angeben?
Oder was will mir Access hier sagen?



Tatsàchlich.

schreibe ich vor meinen SUB-Aufruf

Me!<meinebox>.setFocus

dann entfàllt die Meldung.

Bleibt die Frage:

(und wenn ja: was soll denn der Schwachfug?!)



Außerdem bleibt die Frage, wie ich nun bewerkstellige, dass mir bei
bestehenden DS der entsprechende Kunde auch wieder im ComboFeld
angezeigt wird - diese antwort bleibt Allen in seinem Beitrag leider
schuldig :(

Kann aber auch sein, dass es daran liegt, dass ich die SUB veràndert
habe:
ich übergebe ihr nicht nur den Inhalt des Kombinationsfeldes, sondern
gleich das ganze Feld und werte es innerhalb der SUB aus.

Private Sub ReloadCustomer(cbo As ComboBox, charLim As Integer)
Dim db As DAO.Database
Dim qdf As QueryDef

Dim newStub As String
Dim cboName As String, strSQL As String
Dim strWHERE As String, strOrder As String

Set db = CurrentDb

cboName = cbo.Name

Select Case cboName
Case "cboDirectCustomer"
Set qdf = db.QueryDefs("qryCboDirectCustomer")
strWHERE = " WHERE strDirectName "
Case "cboIndirectCustomer"
Set qdf = db.QueryDefs("qryCboIndirectCustomer")
strWHERE = " WHERE strIndirectName "
Case "cbpfinalCustomer"
Set qdf = db.QueryDefs("qryCboFinalCustomer")
strWHERE = " WHERE strFinalName "
End Select

strSQL = qdf.sql
strSQL = Replace(strSQL, ";", " ")
strOrder = Mid(strSQL, InStr(strSQL, "ORDER BY"), Len(strSQL))
strSQL = Left(strSQL, InStr(strSQL, "ORDER BY") - 1)

newStub = Nz(Left(cbo.Text, charLim), "")

If newStub <> Stub Then
If Len(newStub) < charLim Then
cbo.RowSource = strSQL & " WHERE (false);"
Stub = ""
Else
strWHERE = strWHERE & " LIKE """ & newStub & "*"" ORDER BY
SapNR;"
cbo.RowSource = strSQL & strWHERE
Stub = newStub
End If
End If

End Sub

Die Variable "Stub" ist als Formular-Globale Variable im
Deklarationsbereich des Forms deklariert.
Der Parameter charLim enthàlt den Wert einer von drei Konstanten, je
nachdem, welche Kombobox ich übergebe - wobei mir gerade auffàllt, dass
ich auch das innerhalb der Sub regeln kann ;) -- àndere ich noch.

Volker

Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.

Ähnliche fragen