| |
VB & DatenbankenTextfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Git-Git | Datum: 04.09.15 14:48 |
| Hallo, ich hab ein Problem mit meinem Textfeld.
In meinem Textfeld soll ein Filterkriterium eingegeben werden, das lese ich dann so aus:
Dim str as String
str = Me.TextBox Hab bei meiner Sub schon andere Probleme gehabt, aber bei dem ist es so, dass es funktioniert hat, dann nichtmehr, dann doch wieder und jetzt wieder nicht... Ich komm nicht drauf was es da hat.
ich gebe eine zahl in das TF ein und die Sub wird bei Änderung des TF ausgeführt, in der Sub sagt er aber dann, dass Me.TextBox = Null. Jemand eine Idee warum? | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: OGGI | Datum: 04.09.15 15:47 |
| Howdy Git-Git
Du dimensonierst den VB-Befehl str als Stringvariable!
Beitrag wurde zuletzt am 04.09.15 um 15:50:54 editiert. | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Git-Git | Datum: 04.09.15 15:55 |
| Ja, es wird ja auch ein string eingegeben, hab das textfeld auch entsprechend definiert. (bei den Eigenschaften)
Ich habs jetzt in eine public function geschrieben mit Forms!Formular.TextBox, jetzt gehts grad wieder.
Aber ganz was anderes. Wie gesagt hab ich die Ereignisprozedur bei "Änderung" rein geschrieben, wenn ich in das TF jetzt 3 Ziffern eingib, dann macht es logischer weise 3 mal die Prozedur aber die dritte ziffer wird nicht berücksichtigt, da kann i aber nix tun oder? | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: OGGI | Datum: 04.09.15 16:06 |
| Hallooo, man darf keinen Visual-Basic-Befehl als Variable verwenden! Sonst fängt das Proggi an zu spinnen, grad so wie bei dir | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Franki | Datum: 05.09.15 05:21 |
| Hallo,
ein Textfeld kann wie der Name schon sagt erst mal nur Texte erfassen. Dabei spielt es keine Rolle, ob da Ziffern, Zahlen oder sonst was eingegeben wird. Alles wird als String behandelt.
Wenn du die im Textfeld gemachte Eingabe weiter verarbeiten möchtest, musst du sie zuerst auf Plausibilität prüfen, d.h. ob der "Text" auch für die Weiterverarbeitung geeignet ist.
Das OnChange Ereignis kann auch bedeuten, dass gar kein Text/Inhalt vorhanden ist oder auch dass z.B. über die Zwischenablage mehrere Zeichen eingefügt werden usw. usw.
Den Inhalt kannst du auf Kritierien prüfen z.B. so als Beispiel:
Private Sub Text1_Change()
If Len(Me.Text1.Text) > 0 Then
If Trim(Me.Text1.Text) = "" Then
MsgBox "Textbox enthält nur " & Len(Me.Text1.Text) & " Leerzeichen"
Exit Sub
End If
If IsNumeric(Me.Text1.Text) Then
MsgBox "Textbox enthält eine Ziffer oder Zahl"
Exit Sub
Else
MsgBox "Textbox enthält Text"
Exit Sub
End If
Else
MsgBox "Textbox ist leer"
End If
End Sub Und erst dann, wenn der Inhalt deiner Textbox den Plausibilitätskriterien entspricht darfst du ihn an eine Funktion weiter geben. Grade bei OnChange wird ja jeder Tastendruck ausgewertet, d.h. das wird oft aufgerufen ohne dass der User z.B. bei einer PLZ Eingabe die 5 Ziffern vervollständigt hat.
Ansonsten kannst du uns ja mal etwas Code posten.
Gruß
Frank
| |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Git-Git | Datum: 07.09.15 08:01 |
| Hallo Franki, danke für deine Antwort. Wie gesagt, soll der Code bei jeder eingabe bzw Änderung des eingegebenen Textes ausgeführt werden. Wie gesagt er liest es jetzt aus aber immer das was als letztes eingegeben wurde wird nicht berücksichtigt. Schreibe ich z.B. 1 tut er ersmal nix, bei 12, dann berücksichtigt er die 1 bei 123 die 12 bei 1234 die 123 usw.
So sieht mein Code aus.
Public Function fcFilter()
Dim sql As String
Dim eing As String
Dim DB As DAO.Database
Dim i As Integer
Dim s As String
i = Forms!F_Komponentendetail.Filterwahl_LF.ItemsSelected(0)
If IsNull(Forms!F_Komponentendetail.Eingabe_TF) Then
Else
eing = Forms!F_Komponentendetail.Eingabe_TF
If i = 0 Then
sql = "SELECT * FROM Datenbank WHERE ((Datenbank.[TT-Nr]) LIKE '" & _
eing & "*') ORDER BY Datenbank.[TT-Nr];"
Set DB = CurrentDb
DB.QueryDefs("A_Komponentendetail").sql = sql
Set DB = Nothing
ElseIf i = 1 Then
sql = "SELECT * FROM Datenbank WHERE ((Datenbank.[Referenztest])" & _
"LIKE '" & eing & "*') ORDER BY Datenbank.[Referenztest];"
Set DB = CurrentDb
DB.QueryDefs("A_Komponentendetail").sql = sql
Set DB = Nothing
End If
End If
End Function | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Git-Git | Datum: 07.09.15 08:53 |
| ah, nein hab ich nicht, das war nur ein beispiel in meinem Code heißt die Variable "eing" | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: whisky1108 | Datum: 07.09.15 12:20 |
| Führe das Statement nicht im Change sondern im KeyUp aus. | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Git-Git | Datum: 07.09.15 12:57 |
| leider genau das gleiche....
Er startet zwar jetzt gleich mit "1"...
Eingabe - Filter
1 - "1"
12 - "1"
123 - "12"
1234 - "123"
Beitrag wurde zuletzt am 07.09.15 um 13:16:36 editiert. | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: whisky1108 | Datum: 08.09.15 09:03 |
| Kannst du mal deinen Code posten? | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: whisky1108 | Datum: 08.09.15 09:11 |
| Private Sub Eingabe_TF_KeyUp(KeyCode As Integer, Shift As Integer)
fcFilter Eingabe_TF.Text
End Sub
Public Function fcFilter(ByVal sEing As String)
Dim sql As String
Dim DB As DAO.Database
Dim i As Integer
If Trim(sEing) = "" Then Exit Function
i = Forms!F_Komponentendetail.Filterwahl_LF.ItemsSelected(0)
If i = 0 Then
sql = "SELECT * FROM Datenbank WHERE ((Datenbank.[TT-Nr]) LIKE '" & _
sEing & "*') ORDER BY Datenbank.[TT-Nr];"
Set DB = CurrentDb
DB.QueryDefs("A_Komponentendetail").sql = sql
Set DB = Nothing
ElseIf i = 1 Then
sql = "SELECT * FROM Datenbank WHERE ((Datenbank.[Referenztest])" & _
"LIKE '" & sEing & "*') ORDER BY Datenbank.[Referenztest];"
Set DB = CurrentDb
DB.QueryDefs("A_Komponentendetail").sql = sql
Set DB = Nothing
End If
End Function
Beitrag wurde zuletzt am 08.09.15 um 09:21:22 editiert. | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: Git-Git | Datum: 08.09.15 10:51 |
| Uiiiii super, danke!!!!!!!!
funktioniert einwandfrei super Danke für die Hilfe!!!!!!! | |
Re: Textfeld auslesen, manchmal gehts manchmal nicht??? | | | Autor: whisky1108 | Datum: 08.09.15 12:22 |
| Wenn du keinen Rückgabewert aus der Funktion erwartest, solltest du es formhalber als Sub deklarieren.
Private Sub Eingabe_TF_KeyUp(KeyCode As Integer, Shift As Integer)
subFilter Eingabe_TF.Text
End Sub
Public Sub subFilter(ByVal sEing As String)
Dim sql As String
Dim DB As DAO.Database
Dim i As Integer
If Trim(sEing) = "" Then Exit Sub
i = Forms!F_Komponentendetail.Filterwahl_LF.ItemsSelected(0)
If i = 0 Then
sql = "SELECT * FROM Datenbank WHERE ((Datenbank.[TT-Nr]) LIKE '" & _
sEing & "*') ORDER BY Datenbank.[TT-Nr];"
Set DB = CurrentDb
DB.QueryDefs("A_Komponentendetail").sql = sql
Set DB = Nothing
ElseIf i = 1 Then
sql = "SELECT * FROM Datenbank WHERE ((Datenbank.[Referenztest])" & _
"LIKE '" & sEing & "*') ORDER BY Datenbank.[Referenztest];"
Set DB = CurrentDb
DB.QueryDefs("A_Komponentendetail").sql = sql
Set DB = Nothing
End If
End Sub | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|