WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   jetzt VBA :) Problem mit stringübergabe (http://www.wcm.at/forum/showthread.php?t=139543)

Chrisi99 16.07.2004 13:42

jetzt VBA :) Problem mit stringübergabe
 
Ich habe mittels Stringverknüpfung meinen Suchstring für recordset.FindFirst gebastelt:

Code:

"P1Name LIKE 'D*' "

jetzt möchte ich diesen Suchstring an das Recordset übergeben.
Der String liegt auf der Variablen strSuch

also:

Code:

strfilter = strsuch
rst.FindFirst strfilter

'Ausgabe ins Feld txt_Filter
txt_filter = rst!P1NAME

leider fehlt da lt. VBA ein Argument ... sollte aber alles da sein.
Wenn ich den String manuel nach strfilter kopier (also strfilter="P1Name LIKE 'D*'") dann geht aber alles :(


was ist da falsch?

mfg

unicornat 16.07.2004 16:29

Abfrage
 
Hi !

habe in meinem Programm etwas Ähnliches:

Nummer = "ABC123"
rst.FindFirst "[Asset_Number] = '" & Nummer & "'"


umgewandelt bei
Nummer = "ABC*"
rst.FindFirst "[Asset_Number] Like '" & Nummer & "'"

Ich glaube das ist so ein Problem mit Variable nehmen oder deren Inhalt nehmen...

Versuchs mal so wie bei mir (also Variablenname rausnehmen aus dem String und per & verbinden)

wbendl 16.07.2004 18:59

Hi!

Ich verwende eigentlich nur diese Varianten

rst.Find "Feld = '" & strSuchbegriff & "'"
rst.Find strFeld & " = '" & strSuchbegriff & "'"

Es müßte aber auch funktionieren, wenn der ganze Ausdruck in einer Variablen steht.

Laß dir bei deinen beiden Version vor dem Aufruf von Find den String im Direktfenster ausgeben, und vergleiche die Inhalte. Achte besonders auf die Hochkommas.

mfg

WB

Chrisi99 19.07.2004 09:19

lansam werd ich verwirrt (siehe Bild!)

hier nochmal mein Code, mittlerweile bin ich schon durcheinander



Code:

Private Sub Befehl109_Click()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strfilter As String
Dim str As String
Dim such As String

Set db = CurrentDb()
Set rst = db.OpenRecordset("qryTest")

str = txt_suchnam 'man gibt zb D* in die Textbox ein

'Testweise Ausgabe in einer TXTBOX
txt_such = """P1Name LIKE" & " " & str & " """
'Ende

strfilter = "P1NAME = '" & txt_such & "'" 'Filterstring
rst.FindFirst strfilter

'Ausgabe an Textfeld
txt_filter = rst!P1NAME

While Not rst.NoMatch
Debug.Print rst("P1Name")
rst.FindNext strfilter
Wend
rst.Close
End Sub


wenn wer zeit hat

wbendl 19.07.2004 13:29

Hi!

Mit den Hochkommas stimmt wahrscheinlich etwas nicht.

Vor
'Ausgabe an Textfeld
txt_filter = rst!P1NAME
mußt du außerdem prüfen, ob die Suche erfolgreich war. Wenn die Suche nicht erfolgreich war, werden falsche Daten ausgegeben.

Schick mir deine Access-DB im 97er-Format.
Ich schau mir das morgen an. Das gibts doch nicht, daß das nicht funktioniert.

mfg

WB

unicornat 19.07.2004 13:49

txt_such = """P1Name LIKE" & " " & str & " """
'Ende

strfilter = "P1NAME = '" & txt_such & "'" 'Filterstring

Wozu weist Du in die Variable txt_such nochmals P1NAME zu?
Ausserdem geht das so sicher nicht, denn 2mal " hintereinander beendet ja schon wieder den String, d.h. in txt_such steht nur "" (also nix)

strfilter = "P1NAME LIKE '" & txt_such & "' "

reicht doch?
wobei txt_such = "D*" oder was auch immer

Chrisi99 19.07.2004 14:08

Zitat:

Original geschrieben von unicornat
txt_such = """P1Name LIKE" & " " & str & " """
'Ende

strfilter = "P1NAME = '" & txt_such & "'" 'Filterstring

Wozu weist Du in die Variable txt_such nochmals P1NAME zu?
Ausserdem geht das so sicher nicht, denn 2mal " hintereinander beendet ja schon wieder den String, d.h. in txt_such steht nur "" (also nix)

strfilter = "P1NAME LIKE '" & txt_such & "' "

reicht doch?
wobei txt_such = "D*" oder was auch immer

das war nur, weil ich daswoanders zur Kontrolle ausgegeben habe!

werd ich geich mal probieren, danke!

deleted_150216 19.07.2004 14:29

mein tipp

http://www.activevb.de/


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag