プロが教えるわが家の防犯対策術!

VB2005です。

表題の通りですがやり方がよくわかりません。
データベースに接続し、
SQLで重複しない値を取り出すところまではできています。

SQL=SELECT DISTINCT FieldName FROM TableName

VB6の時はこんなソースでした
Do Until rs.EOF
   Combo1.AddItem.Fields("FieldName")
   rs.MoveNext
Loop

VB2005ではどう書くのでしょう?
よろしくご教授ください。

A 回答 (3件)

DataReaderを使用したサンプルです


※DBMSが記述されていないので、接続文字列はアクセスの場合です
※テキスト書きなので試験していません
※DataSetを使用する方法もありますが、コンボボックスに表示する程度ならDataReaderで大丈夫でしょう
※VB2005ならば、TableAdapterという便利なクラスがあるそうです
※VisualStudio2005 まださわってません orz

  Dim dbFilePath As String = "C:\testdb.mdb"
  Dim connectionString As String = String.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}", dbFilePath)
  Dim sql As String = "SELECT DISTINCT FieldName FROM TableName"
  Dim conn As New OleDbConnection(connectionString)
  Dim query As New OleDbCommand(sql, conn)

  Try
    conn.Open()
    Dim reader As OleDbDataReader = query.ExecuteReader()
    While (reader.Read())
      Me.ComboBox1.Items.Add(reader.Item("FieldName"))
    End While
    reader.Close()
  Catch ex As Exception
    MessageBox.Show(ex.Message)
  Finally
    conn.Close()
  End Try

この回答への補足

ご親切にありがとうございます。
早速試してみます。
VS2005は書籍が全くないので悪戦苦闘しています。(VB6.0からの乗り換えです)
また改めてお礼させていただきます。

補足日時:2006/03/13 15:33
    • good
    • 0
この回答へのお礼

以下のソースでいけました。ほとんどAlexSunsさんのと一緒です。
Dim connectionstring As String = String.Format("provider=microsoft.jet.oledb.4.0;data source=" & My.Application.Info.DirectoryPath & "\test.mdb")
Dim SQL As String = "SELECT DISTINCT aa FROM test"
Dim conn As New OleDb.OleDbConnection(connectionstring)
Dim query As New OleDb.OleDbCommand(sql, conn)

conn.Open()
Dim reader As OleDb.OleDbDataReader = query.ExecuteReader()
While (reader.Read())
Me.ComboBox1.Items.Add(reader.Item("aa"))
End While
reader.Close()

conn.Close()

End Sub

まじで勉強になりました。本当に感謝しています。
TableAdapterというのも試してみます。
ありがとうございました。

お礼日時:2006/03/14 08:58

こんにちは。



値を取り出すところまでできているということなので
SQLに値が格納されているのなら

ComboBox1.Items.AddRange(SQL) というような感じでできないでしょうか。

実際に試していないのでこれから試してみます。

VB2005はまだまだヘルプが頼りです。私もかなり苦戦しています。ExcelVBAの経験しかないので。
    • good
    • 1
この回答へのお礼

やはりヘルプが頼りですか。
(ヘルプ嫌いなんですが)
ありがとうございました。

お礼日時:2006/03/14 08:59

VB2003です。



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Cn As ADODB.Connection
Dim rs As ADODB.Recordset

Cn = New ADODB.Connection
rs = New ADODB.Recordset

Cn.ConnectionString = "DSN=MySQL;UID=Name;PWD=pass;"
Cn.Open()
rs.Open("select field from test", Cn)

Do Until rs.EOF
ComboBox1.Items.Add(rs.Fields("field").Value)
rs.MoveNext()
Loop

rs.Close()
Cn.Close()
MsgBox("終了しました。")

End Sub

この回答への補足

早速のご回答ありがとうございます。
このソースでいけそうな気がします。
また改めてお礼いたします。

補足日時:2006/03/13 13:38
    • good
    • 0
この回答へのお礼

参考になりました。
どうもありがとうございます。

お礼日時:2006/03/14 09:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A