2017-02-01 6 views
0

VFP 6では「車」という表があり、ボタンの中にその名前に基づいてIDを探したいと思っています。私は何を間違えたのですか?Locateからレコードデータを取得する方法は?

... code 
SELECT cars 
LOCATE FOR ALLTRIM(UPPER(name)) = variable_read_from_textbox 
IF NOT FOUND() 
    messagebox("not found") 
ELSE 
    messagebox(cars.id_car) 
ENDIF 

コードを実行すると、名前が見つからない場合でもエラーが検出されたときに正常に動作します。

ありがとうございます!

答えて

4

あなたのコードは一般的に正しいです。若干の修正安全のため、エラーの修正:私が覚えている限りでは

SELECT cars 
* this implies an exact match, regardless of set exact, and makes casing same 
* remember this wouldn't use an index unless there is an index with the same signature 
LOCATE FOR ALLTRIM(UPPER(name)) == ALLTRIM(UPPER(m.variable_read_from_textbox)) 

IF NOT FOUND() 
    messagebox("not found") 
ELSE 
    messagebox(transform(cars.id_car)) 
ENDIF 

、VFP6で、メッセージボックス()は、(あなたのための文字列に値を変換し、まだことができませんでしたし、文字列を期待し、あなたは何を教えてくれませんでしたエラーはそれであるはずですが)。

検索に少し注意してください。

ALLTRIM(UPPER(name)) 

キー "ALLTRIM(UPPER(name))"のインデックスがない限り、インデックスは使用されません。もしあれば、それは使用されるだろうが、そのような指数はalltrim()のために実際には役に立たない。

Upper(name) 

、その後あなたの検索は次のようになります:より良い指標は単純になり

variable_read_from_textbox = ALLTRIM(UPPER(m.variable_read_from_textbox)) 

SET EXACT ON 
SELECT cars 
LOCATE FOR UPPER(name) = m.variable_read_from_textbox 
IF NOT FOUND() 
... 
+0

ありがとうございました!それを固定する "変換"。他のヒントをありがとう、私はVFPデベロッパーではなく、友人が商取引コースのプロジェクトを行うのを手伝っています。 –

関連する問題