コントロール使わずDB項目をdropdownlistに設定する方法

このQ&Aのポイント
  • OleDbConnectionや、OleDbDataAdapterのコントロールを使わずに、dropdownlistにDBにある列の値を設定する方法を教えてください。
  • 自分のコードで実行しても、コンボボックスには空のままです。
  • 詳しい設定方法を教えてください。
回答を見る
  • ベストアンサー

コントロール使わずdropdownlistにDB項目設定

OleDbConnectionや、OleDbDataAdapterのコントロールを使わずに dropdownlistにDBにある列の値を設定したいとき、どうしたらいいでしょうか。 自分のコード ' 接続 Dim conn As New System.Data.OleDb.OleDbConnection( _ "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Database Password=;Data Source=""C:\Inetpub\Database\情報DB.mdb"";Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;Extended Properties=;Mode=Share Deny None;Jet OLEDB:New Database Password=;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;User ID=Admin;Jet OLEDB:Encrypt Database=False") strTerminal = "SELECT * FROM [コード]" Dim dt1 As New System.Data.DataSet ''端末コードデータコピーする If Not IsPostBack Then adapterTerminal.Fill(dt1) ddl1.DataSource = dt1 ddl1.DataMember = "[コード]" ddl1.DataTextField = "[名称]" ddl1.DataBind() end If 実行しても、コンボボックスには空のまま>< 設定方法くわしい方教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> なにかの設定間違ってるんでしょうか > よろしくお願いします。 DropDownList コントロールの DataSource プロパティに DataSet を設定しているようですが、DataSet は複数の DataTable 等を含むコンテナですので、DataTable を設定するようにしてみてください。 ddlTerminalAssortment.DataSource = dsTerminal.Tables(0) ただこういう単純なデータアクセスでは、DataSet を使うよりも DataReader を使った方が高速であると言われています。 Dim cmd As New System.Data.OleDb.OleDbCommand(strSql, conn) cmd.Connection.Open() Dim rd As System.Data.OleDb.OleDbDataReader = cmd.ExecuteReader() DropDownList1.DataSource = rd DropDownList1.DataMember = "m02" DropDownList1.DataTextField = "m03" DropDownList1.DataBind() cmd.Connection.Close()

sinomori
質問者

お礼

ありがとうございます。 うまく表示できました。

その他の回答 (2)

回答No.2

> コンボボックスとデータベースの連結は一般どんな方法使うのでしょうか バージョンにもよるのですが、 <ASP.NET 2.0 以前> Connection オブジェクトを生成して接続文字列を設定。 Command オブジェクトを生成してデータを取得する SELECT コマンドを設定。(場合によっては Parameter を使って検索条件を指定したりも) DataReader オブジェクトに Command オブジェクトの実行結果を突っ込む。 DropDownList コントロールの Items.Add で DataReader を ListItem に変換したものを追加する。 http://yunet.2.pro.tok2.com/contents/aspnet_db/ix003.html <ASP.NET 2.0> DataSource コントロールを使う。 http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review04/asp2review04_01.html http://msdn2.microsoft.com/ja-jp/library/66xcbb9k(VS.80).aspx

sinomori
質問者

補足

回答ありがとうございます。 こちらは Dim conn As New System.Data.OleDb.OleDbConnection("Jet OLEDB:Database Password=;Data Source=""C:\Inetpub\wwwroot\Database\情報表DB.mdb"";Password=;Jet OLEDB:Engine Type=5;Jet OLEDB:Global Bulk Transactions=1;Provider=""Microsoft.Jet.OLEDB.4.0"";") ページロードイベント strSql= "SELECT * FROM[テーブル名]" ''抽出したデータを取り出す Dim adapterTerminal As New System.Data.OleDb.OleDbDataAdapter(strSql, conn) Dim dsTerminal As New System.Data.DataSet Dim adapterTerminal As New System.Data.OleDb.OleDbDataAdapter(strSql, conn) adapterTerminal.Fill(dsTerminal) ddlTerminalAssortment.DataSource = dsTerminal ddlTerminalAssortment.DataMember = "コード" ddlTerminalAssortment.DataTextField = "名称" dlTerminalAssortment.DataBind() で表示できませんでした。 なにかの設定間違ってるんでしょうか よろしくお願いします。

回答No.1

> OleDbConnectionや、OleDbDataAdapterのコントロールを使わずに > dropdownlistにDBにある列の値を設定したいとき、どうしたらいいでしょうか。 ちょっとその真意が理解できないのでコレについては飛ばします。 試せる環境が手元にないので何とも言えないのですが、 DataAdapter の Select コマンドに SQL 文(strTerminal) や Connection (conn)を設定してないようですが?

sinomori
質問者

補足

Dim adapterTerminal As New System.Data.OleDb.OleDbDataAdapter(strTerminal, conn)は設定していました。 記入漏れです。すみません。 コンボボックスとデータベースの連結は一般どんな方法使うのでしょうか

関連するQ&A

  • EXCELのVBAでACCESSにアクセスすると「My Documen

    EXCELのVBAでACCESSにアクセスすると「My Documents」フォルダに.odcファイルが多数生成される。 (1)ACCESS(業務DB.mdb)にあるAテーブルのデータをEXCELのシートに取り込みたいために、EXCELで「外部データの取り込み」から業務DB.mdbのAテーブルとリンクしています。 (2)EXCELをオープン時に自動で業務DB.mdbのAテーブルのデータを更新させたいため、以下のVBAで更新処理をしています。  ---------------------------------------------- With Selection.QueryTable .Connection = Array( _ "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" & ThisWorkbook.Path & "\業務DB.mdb;" _ , _ "Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=5;Jet OLEDB:" _ , _ "Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password" _ , _ "="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLE" _ , "DB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False") .CommandType = xlCmdTable .CommandText = Array(シート.Name) .Refresh BackgroundQuery:=False End With  ---------------------------------------------- (3)上記(2)を実行するたびに「My Documents」の下にある「My Data Sources」フォルダに業務DB.odcファイルが生成されます。  具体的には、処理1回目で「業務DB.odc」が生成され、2回目で「業務DB(1).odc」、3回目で「業務DB(3).odc」というように.odcファイルが処理毎に生成されてしまいます。 この.odcファイルを処理毎に生成されるのを防ぎたいのですが、手法がわかりません。 .odcファイルは1ファイルだけで十分です。 ご存知の方、ご教授宜しくお願い致します。m(_ _)m

  • DBパスワードありVBAアクセスについて

    Access2010を使用しております。 Excel2010からAccessにVBAからSelect文でデータセット取得しようとしております。 接続には以下の記述で接続しようとしてますが、オートメーションエラーになります。 Set con = New ADODB.Connection con.Provider = "Microsoft.Ace.OLEDB.12.0" con.Properties("Jet OLEDB:Database Password") = Password con.Open "C:\\Directory" または con.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Directory;Jet OLEDB:Database Password=Password" con.Open などいろいろ試してますがうまくいきません。 パスワードがなければ以下の記述で開けるのですが。 con.Provider = "Microsoft.Ace.OLEDB.12.0" con.Open "c:\\Directory" アドバイス等お願いします。

  • MDBパスワード設定済みDBへ接続

    MDBパスワード設定済み(排他オープンからの設定)のDBへ接続を試みているのですが、うまく 接続できません。 ご教授ください。 ASP vbscript <ソース> set objCon=ServerCreateObject("ADODB.Connection") cn1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "DataSource=" & Server.path("db.mdb") & ";Jet OLEDB:Database Password=password;" objCon.Open cn1 <エラー> Microsoft JET Database Engine エラー '80040e4d' パスワードが正しくありません。

  • アクセスDbのテーブル名の取得(VB2005)

    再度の質問です アクセスDBのテーブル名を取得したのですが、方法をご教示ください。DAOでは tabledefsでとれたのですが・・ 以下のコードで先に進めません。 OpenFileDialog1.Filter = "アクセス ファイル (*.mdb)|*.mdb" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName <> "" Then Dim St As String Dim Cn As New System.Data.OleDb.OleDbConnection Dim SQL As System.Data.OleDb.OleDbCommand Dim UserID As String = "Admin" Dim Password As String = "" Dim MDBFile As String = OpenFileDialog1.FileName Dim N As String = Microsoft.VisualBasic.Right(MDBFile, 9) St = "Provider=""Microsoft.Jet.OLEDB.4.0"";" St &= "Data Source=""" & MDBFile & """;" St &= "User ID=" & UserID & ";" St &= "Jet OLEDB:Database Password=" & Password Cn.ConnectionString = St SQL = Cn.CreateCommand Cn.Open() Dim tbl As DataTable tbl = Cn.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) ここでtblを見ると TABLE_CATALOG _SCHEMA _NAME _TYPE ・・・DATE_MODIFIED などは見えるのですが、これがDB内のテーブル数だけ繰り返されます。 取得したいのは、TABLE_NAME に ある 例えば "Pub-ID"に相当する内容なのですが、HELPで探しても、その方法がわかりません、ぜひ教えてください。よろしくお願いいたします。

  • VB2005でDB接続後、DBを後からパスワードを付けた時のVB設定を教えて下さい。

    VB2005が超初心者ですがよろしくお願いいたします。 VB2005でACCESSのDBに接続後、後からパスワードをDBにつけた時のVB設定を教えて下さい。 -------------------------------- Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Accessファイルの絶対パス;Persist Security Info=False;Jet OLEDB:Database Password=パスワード 上記の事もやりましたが下記のエラーが出ます。 If (Me._connection Is Nothing) Then Me.InitConnection End If -------------------------------- 初心者の私ではこれ以上はいじれません。 簡単に設定出来ないでしょうか? よろしくお願いいたします。

  • SQL Server 2005 CLR VB2005 DBアクセス方法

    SQL Server 2005 CLR ですが VB2005でOleDbConnection.Openできないのですが、、、 VB2005のWinAppから呼び出すとちゃんとOPENするのですが、 SQL Server 2005 から呼び出すとOPENでこけます。 ソースは以下です ---- Imports System.Data.OleDb connStr = "Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security Info=True;User ID=sa;Initial Catalog=tbl_1;Data Source=SV01" m_conn = New OleDbConnection(connStr) m_conn.Open() ---- System.Data.OleDb が使えないのでしょうか? OS:WinXPSP2 VS2005Developer

  • datagridviewからexcelへエクスポートしたい

    datagridviewからexcelへエクスポートしたい アクセス2000に接続をして、クエリから得られる結果をdatagridviewに表示は出来たのですが、 それをエクセルに吐き出す事が出来ずに苦慮しております。 Public Class form1 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim cn As OleDb.OleDbConnection _ = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\VB2008\xxxxx.mdb;") Dim cmd As New OleDb.OleDbCommand("Q1") cmd.CommandType = CommandType.TableDirect Dim da As New OleDb.OleDbDataAdapter() da.SelectCommand = cmd da.SelectCommand.Connection = cn Dim dt As New DataTable da.Fill(dt) DataGridView1.DataSource = dt End Sub 上記のコードでdatagridviewに表示は出来ました。 webで色々調べたのですが、サンプルとなるコードが見つからずの状態です。 サンプルとなるコードはありますでしょうか? そもそも、エクセルに吐き出す事は可能でしょうか? 可能であれば、どのようなコードを書けばよいでしょうか? 環境ですが、 XP(SP3)、 VB2008EXPRESS EDITION Access2000(SP3) Excel2007(SP2) 以上になります。 お忙しい所お手数をお掛けしますが、 ご教授下さい。 以上、宜しくお願いします。

  • VB2005でACCESSのADO.NETでのテーブル名取得

    VB2005 ACCESSのテーブル名を取得したいのですが、方法をご教示ください。以下のところで悩んでいます。 OpenFileDialog1.Filter = "アクセス ファイル (*.mdb)|*.mdb" OpenFileDialog1.ShowDialog() If OpenFileDialog1.FileName <> "" Then Dim St As String Dim Cn As New System.Data.OleDb.OleDbConnection Dim SQL As System.Data.OleDb.OleDbCommand Dim UserID As String = "Admin" Dim Password As String = "" Dim MDBFile As String = OpenFileDialog1.FileName Dim N As String = Microsoft.VisualBasic.Right(MDBFile, 9) St = "Provider=""Microsoft.Jet.OLEDB.4.0"";" St &= "Data Source=""" & MDBFile & """;" St &= "User ID=" & UserID & ";" St &= "Jet OLEDB:Database Password=" & Password Cn.ConnectionString = St SQL = Cn.CreateCommand    Cn.Open() この後テーブル名までたどり着けません DataTable  Cn.GetSchema Cn.GetOleDbSchemaTable( "restrictions") などヘルプなどから試みていますが、これらのコーディング法がわかりません。 テーブル名がわかっている(サンプルのPubs の "Publisher")場合はデータセットからはフィールド名が取得できたのですが・・・ よろしくお願いいたします。

  • エラーでつまってます・・・お助け下さい

    VS2003.NETで開発中の初心者です。 以下のコード(Form1.vb)を実行すると次のエラーがポップアップされ“oADP.Fill(oDS, "ROOT")”のラインで止まります。 <エラー> 'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。 どこがおかしいのかわかりません。 詳しい方がいましたら、ご教授下さいませ。 ---------------------------- Imports System.Data.OleDb Public Class Form1  Inherits System.Windows.Forms.Form  Private oConn As OleDb.OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0" & ";Data Source=..\USER.mdb") 「Windows フォーム デザイナで生成されたコード」   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load    '--DataAdapterの設定    Dim oADP As OleDb.OleDbDataAdapter    oADP = New OleDb.OleDbDataAdapter("SELECT *FORM TALK WHERE Node=0 ORDER BY No", oConn)    '--DataSetの設定    Dim oDS As New DataSet    oADP.Fill(oDS, "ROOT")        ・        ・        ・ ----------------------------

  • VB2008データベース

    非接続型データベースでUpdateをする文を書いていますがUpdateでエラーが出てしまいます。  OleDbCommandBuilder の参照をネットで確認等していますがエラーの内容がわかりません。 データベース参考書等にも下記と同じ文例でかいてあります。 どなたか教えてください。 *VB2008で開発しています。 Dim cn As OleDb.OleDbConnection Dim Buf As String Dim dAdp As OleDb.OleDbDataAdapter Dim dSet As DataSet Dim dTbl As DataTable Dim cBuild As OleDb.OleDbCommandBuilder Buf$ = DefCnSt$ & X_SystemFile$ & ";Jet OLEDB:Database Password=" & XdtPs$ cn = New OleDb.OleDbConnection(Buf$) dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM 物件", cn) dSet = New DataSet("物件") dAdp.Fill(dSet, "物件") dTbl = dSet.Tables("物件") dTbl.Rows(2)(1) = "ABC" cBuild = New OleDb.OleDbCommandBuilder(dAdp) dAdp.Update(dSet, "物件") <-ここでエラーが出ます。

専門家に質問してみよう