プログラミング質問広場 |
本掲示板は、プログラミングに関する情報を作者様同士で共有・議論していただく場として用意いたしました。 JV-Link、JV-Dataに直接関連しない(一般論としてのプログラミング方法やAPI・メソッドの利用法などの)スレッドはこちらに立ててください。
|
|
- 教えて下さい - 素人以前 12/21-07:28 No.31
|
タイトル | : 教えて下さい |
記事No | : 31 |
投稿日 | : 2007/12/21(Fri) 07:28 |
投稿者 | : 素人以前 |
|
以前提供されていた出馬表サンプルの中の
Dim dbRS As ADODB.Recordset Dim dbFld As ADODB.Fields
Dim strSQL As String 'strSQL = "SELECT distinct Year, MonthDay FROM RACE O RDER BY Year desc, MonthDay desc" ' 地方・海外レース(データ区分"A","B" )を除外 strSQL = "SELECT distinct Year, MonthDay FROM RACE WHERE n ot DataKubun in ('A','B') ORDER BY Year desc, MonthD ay desc"
' コンボボックスのクリア cmbYMD.Text = "" cmbYMD.Items.Clear()
' レコードセットのオープン dbRS = New ADODB.Recordset() dbRS.Open(strSQL, gCon, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockPessimistic)
While Not dbRS.EOF ' フィールドの取得 dbFld = dbRS.Fields
cmbYMD.Items.Add(dbFld("Year").Value() + dbFld(&q uot;MonthDay").Value())
dbRS.MoveNext()
End While
この部分で ComboBoxに年月日が表示されると思うのですが ソースをRecordsetではなくDataTableとした場合 一つのComboBoxに年月日プラスJyoCDを表示させるには どうコーディングすれば良いのでしょうか。
VB2005を使用しています。 |
|
タイトル | : Re: 教えて下さい |
記事No | : 33 |
投稿日 | : 2008/01/07(Mon) 21:38 |
投稿者 | : 通りすがり |
|
まず、RecordSetのままJyoCDを表示するのであれば、SQLを strSQL = "SELECT distinct Year, MonthDay FROM RACE WHERE not DataKubun in ('A','B') ORDER BY Year desc, MonthDay desc" ↓ strSQL = "SELECT distinct Year, MonthDay, JyoCD FROM RACE WHERE not DataKubun in ('A','B') ORDER BY Year desc, MonthDay desc" のように変更して、さらにcmbYMD.Items.Addを cmbYMD.Items.Add(dbFld("Year").Value() + dbFld("MonthDay").Value() + " " + dbFld("JyoCD").Value()) とかにすればできると思いますが、これをDataTableで行うっていうのは、ADODBをADO.NETに書き換えるということですよね?(違っていたらすみません。) だとすれば2つは別物なので、ソースをほとんど書き直すっていうことになると思います。
開発体験教室の6と7を理解していれば簡単なのでしょうが…。
で、私もちゃんと理解できていない為、勉強がてら書いてみました。 前提として ・OleDbDataAdapter1をData.mdbを接続対象として構成しておく ・同、上記でSQLステートメントに適切なSQLを設定しておく ・OleDbDataAdapter1のデータセットをDataSet1として生成しておく という作業が行われている必要がありますが、当方の環境であれば以下で動作しました。
ADODBのコーディングをADO.NETで書き換えているつもりですが誤りがありましたら識者の方ご指摘いただけると助かります。 --------------------------------------- 'Dim dbRS As ADODB.Recordset 'Dim dbFld As ADODB.Fields Dim dbds As New DataSet1() Dim dr As DataRow
'Dim strSQL As String 'strSQL = "SELECT distinct Year, MonthDay FROM RACE O RDER BY Year desc, MonthDay desc" ' 地方・海外レース(データ区分"A","B")を除外 'strSQL = "SELECT distinct Year, MonthDay, JyoCD FROM RACE WHERE not DataKubun in ('A','B') ORDER BY Year desc, MonthDay desc"
' コンボボックスのクリア cmbYMD.Text = "" cmbYMD.Items.Clear()
' レコードセットのオープン 'dbRS = New ADODB.Recordset() 'dbRS.Open(strSQL, gCon, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockPessimistic) OleDbDataAdapter1.Fill(dbds)
'While Not dbRS.EOF For Each dr In dbds.RACE.Rows ' フィールドの取得 'dbFld = dbRS.Fields
'cmbYMD.Items.Add(dbFld("Year").Value() + dbFld("MonthDay").Value() + " " + dbFld("JyoCD").Value()) cmbYMD.Items.Add(dr("Year") + dr("MonthDay") + " " + dr("JyoCD"))
'dbRS.MoveNext()
'End While Next --------------------------------------- (ちなみに当方VB2002ですが、大きな違いはないと思います、多分) |
|
タイトル | : Re^2: 教えて下さい |
記事No | : 34 |
投稿日 | : 2008/01/10(Thu) 08:58 |
投稿者 | : 素人以前 |
|
通りすがりさん、有り難う御座います。 そうです、ADOをADO.NETに書き換えるという事です。(説明が変で申し訳ない です) 本当に、有り難う御座いました。 |
|
|
|
copyright ©2007 JRA SYSTEM SERVICE CO.,LTD. All Rights Reserved.
|
|
|