2017-08-15 9 views
1

私はrec.movenextを追加しようとしているが、最初の行のみを更新しようとしているので、Visual Basic 6を使用してデータグリッドの次のレコードを更新する方法を教えてください。私のコード:VBを使用してデータグリッドの次の行を更新する方法6

rec.Close 
rec.Open "SELECT * FROM Salary WHERE UserID like '%" & Combo1.Text & "%'" 

If rec.EOF Then 
    rec.AddNew 
Else 
    rec.Update 
    rec!Number = Text1.Text 
    rec.MoveNext 
End If 

End Sub 
+0

あなたは何をしようとしているのか分かりませんが、Elseのステートメントが逆転しているようです。次のレコードを更新する場合は、MoveNextを呼び出して値を設定し、Updateを呼び出す必要があります。 1つのレコードだけを返すクエリがあれば、MoveNextを呼び出すとEOFが返されることに注意してください。 – Marc

+0

私はID番号を探していますが、3つのレコードを見つけて、別の値を定義して各行を別々に更新したいのですが、コードが最初に更新されているだけなので、それは問題を解決する –

答えて

0

ループの各レコードを更新する必要があります。このようなもの

While Not rec.EOF 
    rec!Number = Text1.Text 
    rec.Update 
    rec.MoveNext 
Wend 
+0

Marcさんに感謝しますが、同じ値を持つすべての行を更新するコード!多分select文で何か問題があります。あなたはそれを見て、問題を解決するのを助けることができますか? –

+0

Text1.Textに値を設定しています。それはあなたの例ではすべてです。各レコードのNumberフィールドを何に設定したいのか分かりません。 rec!Number = Text1.Textをループの各反復で設定したいものに変更する必要があります。 – Marc

+0

特定のレコードのみを更新する必要がある場合は、必要なif文をwhileループ内に配置します。たとえば「もしrec!fieldname = 'xyz' then ...」とした場合、そのまま残したいものを更新しないでください。 –

関連する問題