投稿者 るきお  (社会人) 投稿日時 2009/2/22 07:26:43
こんにちは。

カロリーメートチーズ味さんのプログラムでは、値をとってくるのにExecuteScalarメソッドを使用しているので、せっかく並び替えをしても先頭の値以外すべて捨ててしまいます。

2番目の値を先頭にするようにSQL文をいじることもできますが素直ではありません。
複数の値が必要な場合は、ExecuteScalarではなく、OleDbDataAdapterクラスのFillメソッドなどを使ってごっそり持ってくるのが楽です。

以下の例では先頭の値と、その次の値を表示します。
取得したデータはすべてTableの中に入っており、Table.Rows(0)が1行目、Table.Rows(1)が2行目…とあらわしています。

   
 '▼データ取得  
    Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Database\Animals.mdb")
    Dim SQLCm As OleDbCommand = Cn.CreateCommand
    Dim Adapter As New OleDbDataAdapter(SQLCm)
    Dim Table As New DataTable

    '説明の五十音順に並び替える。  
    SQLCm.CommandText = "SELECT 説明 FROM T_目マスタ ORDER BY 説明"
    Adapter.Fill(Table)

    '▼値の表示  
    Dim Value As String

    '先頭の値を表示  
    Value = Table.Rows(0)("説明")
    MsgBox(Value)

    '2番目の値を表示 
    Value = Table.Rows(1)("説明")
    MsgBox(Value)

    '▼後処理  
    Table.Dispose()
    Adapter.Dispose()
    SQLCm.Dispose()
    Cn.Dispose()


>SQLCm.CommandText = "select name(1) from keibayosou order by 点数 desc"でできると思っ
>てたんですがエラーが出てしまいました 
>式に未定義関数  'name' があります。
name(1)という書き方はなにを参考にされたのでしょうか???
あてずっぽうだとしたらある程度経験がないと無理だと思います。経験がないうちはヘルプや書籍などをちゃんとよんで基本的な構造や構文を理解した方が早いですよ。