VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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
で、実際のグリッドを見ると、日付が新しい順(降順)に出てしまう。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -