投稿日 | : 2003/04/07(Mon) 11:03 |
投稿者 | : むろむろ |
Eメール | : |
URL | : |
タイトル | : Re^2: レコードセットをグリッドに表示 |
> MSHFlexGridに表示される内容が、ORDER BYで指定した順序になっていない、という意味でしょうか。
その通りです。
> もし、ORDER BYで指定した通りに表示されないのだとしたら、問題の切り分けのために、
> 「Recordset取得時に、既に並び順が異なっている」のか、それとも
> 「グリッドにDataSouceとして渡すと、並び順が異なってしまう」のかを確認してください。
レコードセット取得後、MsgBoxにてadoRs.Fields(0).Valueは一番若い日付が表示されますので、
レコードセット取得時はあっていると思います。
それをグリッドに渡すと並び順が異なってしまいます。
> Clipプロパティに、RecordsetのGetStringメソッドの戻り値を渡すようにすれば、
> 複数のセルに、値を一括して代入できるかと思います。
すいません。やり方がわかりませんでした。
> まず、サーバー側カーソルを利用している場合は、それをadUseClientに変更してみてください。
すいません。やり方がわかりませんでした。
> それで駄目なら、さらにSortプロパティを使って、ローカルソートをかけてみてください。
Sortをしたのですが、他のフィールド年齢などはソートがかかって昇順・降順ともできるのですが
日付のみうんともすんとも言いません。
下記がコードサンプルです。
Dim adoCn As ADODB.Connection
Dim adoRs As ADODB.Recordset
Dim strSQL As String
strSQL = "SELECT 日付, 氏名, 年齢, 性別 FROM Kokyaku " & _
"WHERE 氏名 = '" & .txtName.Text & "' " & _
"ORDER BY 日付 ASC"
Set adoCn = New ADODB.Connection
Set adoRs = New ADODB.Recordset
adoCn.Open CS
adoRs.Open strSQL, adoCn, adOpenStatic
Msgbox adoRs.Fields(0).Value ←この時点はOK
If adoRs.RecordCount > 0 Then
With .MSHFlexGrid1
Set .DataSource = adoRs
.Refresh
Set .DataSource = Nothing
.Visible = True
End With
Else
MsgBox "該当顧客が見つかりません"
End If
End With
で、実際のグリッドを見ると、日付が新しい順(降順)に出てしまう。