VB6.0でMSDEサーバのデータをコンボボックスに表示する方法

このQ&Aのポイント
  • VB6.0のフォームにコンボボックスを作り、MSDEサーバのデータベース内の部門テーブルの部門名を表示する方法について教えてください。
  • VB6.0のフォームにコンボボックスを作成し、MSDEサーバの部門テーブルの部門名を取得して表示する方法について教えてください。
  • VB6.0のフォームにコンボボックスを作り、MSDEサーバのデータベースから部門名を取得して表示する方法を教えてください。
回答を見る
  • ベストアンサー

VB6.0のフォームのコンボボックスにMSDEサーバーのデータを表示したい

会社で簡単なシステムを作ることになりましたが、全然プログラムがわからない初心者です。どうかご指導宜しくお願いいたします。  VB6.0のフォームにコンボボックスを作り、MSDEサーバの『部門テー ブル内の部門名』を表示したいです。データベースにアクセスするとこ ろまではできましたが、配列で取得する方法がわかりません。どのよう にしたらよろしいでしょうか。なんとなくで書いてみたのが下記内容で す。ご指導宜しくお願いいたします。 Private Sub Form_Load() Dim str_SQL As String Dim vntArray As Variant Dim 件数 As Long strConn="Provider=SQLOLEDB;SERVER=k;Database=L;UID=sa;PWD=s" Set objConn = CreateObject("ADODB.Connection") objConn.ConnectionString = strConn objConn.Open If objConn.State <> 1 Then '接続失敗 End If 'SQL文の作成 str_SQL = "SELECT [部門コード], 部門名" str_SQL = str_SQL & " FROM 部門" '//SQLの実行 Set vntArray = objConn.Execute(str_SQL) ↓ここらへんから特にわかりません。。。 ???????????????????????????????????????????????????????????? Combo_部門名.AddItem vntArray010(1) ???????????????????????????????????????????????????????????? End Sub

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

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

「Set vntArray = objConn.Execute(str_SQL)」の後に、 Do Until vntArray.Eof  Combo_部門名.AddItem vntArray("部門名").Value  vntArray.MoveNext Loop で出来ませんか。

関連するQ&A

  • vb コンボボックスのイベントについて

    こんばんわ。 コンボボックスで、 指定の値をマウス操作でクリックしたときと、 キーボードの上下で、移動後returnを押したときだけ、 MsgBox "処理実行" を実行したいです。 keystateを使ってみたのですが、前の情報が残っているのかうまくいきません。keystateの情報をクリアさせるか、シンプルに上記を動作させる何かよい方法はありますでしょうか。 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Dim flg1 As Boolean Private Sub form_load() Combo1.AddItem (11) Combo1.AddItem (22) Combo1.AddItem (33) Combo1.AddItem (44) End Sub Private Sub Combo1_Keyup(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then 'return flg1 = True Call Combo1_click End If End Sub Private Sub Combo1_click() If (GetKeyState(&H26) <> 0) Or (GetKeyState(&H28) <> 0) Then ' ↑↓ If flg1 = False Then Exit Sub End If End If MsgBox "処理実行" flg1 = False End Sub

  • フォームの再表示に関して

    過去の質問にも同じようなものがありましたので、参考にしながらやってみたのですが、うまくいかなかったので質問させて頂きます。 Windows2000・アクセス2000を利用しています。フォーム上で非連結のテキストボックス1つとサブフォームを作成しています。テキストボックスに[No]を入力で指定すると、テキストボックス更新時にサブフォームの内容が、その[No]のデータのみに抽出されて再表示するようにしたいと思っています。 SQLで並べ替えと抽出をしています。コードは下記のような感じで作成しています。 Private Sub 検索No_AfterUpdate() Dim Db As Database Dim Qd As QueryDef Dim No As Integer Dim Sql_Str As String Set Db = CurrentDb Set Qd = Db.QueryDefs("Q_抽出") No = [検索No].Value Sql_Str = "SELECT T_テンプレート明細.*" & _ " FROM T_テンプレート明細 INNER JOIN T_テンプレート ON T_テンプレート明細.テンプレートNo = T_テンプレート.テンプレートNo" & _ " WHERE [T_テンプレート明細].[テンプレートNo] = " & No & _ " ORDER BY [T_テンプレート明細].[テンプレートNo], [T_テンプレート明細].[テンプレートID];" Qd.Sql = Sql_Str サブフォーム名.Requery Qd.Close Db.Close End Sub サブフォームをrequeryすれば再表示するのかなと思っているのですが・・・・テキストボックスに更新をかけた後にクエリを確認するとSQLは一応指定出来ているようです。簡単な説明で分かりにくいかもしれませんがよろしくお願い致します。

  • ASP.NETでSQL-SERVERへの接続方法

    最近、ASP.NETの勉強をはじめました。テキストを見ながらサンプルプログラムを作成しているのですが、SQL-SERVERへのDB接続方法がうまくいきません。 Dim conn As String = "data source=????;user id=sa;password=;initial catalog=SampleDb" Try   Dim objConn As New SqlClient.SqlConnection   objConn.ConnectionString() = conn   Dim comm As New SqlClient.SqlCommand(sql, objConn)   objConn.Open() ソース一番上の????の部分に何と記述すればいいかわかりません。テキストには localhost と記述されています。コンパネの「ODBCデータソース」のDSNやサーバ名を記述しても無理でした。 ASP開発で使用していたDB接続 Conn = "PROVIDER=SQLOLEDB;SERVER=サーバ名;DATABASE=YUSODB;UID=sa;PWD=;" を試したりしたのですが、無理でした。 どなたかご教授お願いします。

  • コンボボックスの設定と選択された値の取得方法

    現在、データベース「SQL Server 2005」とVB.NETで開発をしています。 コンボボックスの設定と選択された値の取り方について教えて下さい。 やりたいことは、下記の2点です。 (1)コンボボックスに「T部門テーブル」の部門コード、部門名をセットし、部門名のみを表示する。 (2)コンボボックスが選択された時の、部門コードと部門名の取得の仕方。 コンボボックスの設定は下記のように記述しました。(一応、動作確認をすると、部門名が表示されています。) この記述方法で質問の内容ができますでしょうか? よろしくお願いします。 '// 部門コンボボックスのリスト作成 Public Function fnc部門コンボ設定( _ ByRef nObject As Object, _ Optional ByVal nInsertEmptyItem As Boolean = False _ ) As Boolean Dim strSql As String Dim wCode, wValue As String ' cSqlConnection から SqlCommand のインスタンスを生成する Dim hCommand As System.Data.SqlClient.SqlCommand = cSqlConnection.CreateCommand() Try 'リストの再描画 nObject.BeginUpdate() 'リストをクリア nObject.Items.Clear() 'データ抽出 strSql = "select 部門コード, 部門名 from T部門テーブル order by 部門コード" '実行する SQL コマンドを設定する hCommand.CommandText = strSql '指定した SQL コマンドを実行して SqlDataReader を構築する Dim cReader As System.Data.SqlClient.SqlDataReader = hCommand.ExecuteReader() '次のレコードに進める (次のレコードがない場合は False になるため実行されない) While cReader.Read() '列名を元に値を取得する If IsDBNull(cReader("部門コード")) Then wCode = "" Else wCode = cReader("部門コード") End If If IsDBNull(cReader("部門名")) Then wValue = "" Else wValue = cReader("部門名") End If nObject.Items.Add(New clsItemData(wValue, wCode)) End While 'cReader を閉じる cReader.Close() 'リストの再描画を再開 nObject.EndUpdate() 'コンボボックスに部門名を表示する設定 nObject.DisplayMember = "部門名" '部門名に対応した部門コードを SelectdValue で取得する設定 nObject.ValueMember = "部門コード" Catch ex As Exception Call subError(ex, True, pLogLocal) Exit Function Finally nObject.EndUpdate() End Try 'リソースの解放 hCommand.Dispose() Return True End Function

  • VB6.0でフォームをずらして表示したいのですが

    以下のコードを実行すると、メッセージボックスに10としか表示されません。 同じ場所にフォームが追加されていきます。 複数表示されているフォームを数える方法はないでしょうか? ご存知の方教えてください。 よろしくお願いします。 Private Sub CMD_drow_Click() Dim GraphForm As New Form2 Dim GraphNumber As Integer 'グラフカウント GraphNumber = Form2.Count MsgBox GraphNumber 'グラフ表示 GraphForm.Show '表示位置の設定 With GraphForm If GraphNumber <= 5 Then ' .StartUpPosition = 0 .Top = GraphNumber * 100 .Left = 0 Else ' .StartPosition = 0 .Top = (GraphNumber - 5) * 100 .Left = 300 End If End With End Sub

  • VB2008フォームのコンボボックスに、MSSQL2008のデータを表

    VB2008フォームのコンボボックスに、MSSQL2008のデータを表示させたい いつもお世話になっております。 以前、VB6を少しかじり、 最近、サンプルコードなどを見よう見まねでvb2008&MSSQL2008について勉強しております。 VB2008で作成したフォームからMSSQLサーバ2008に接続し、 フォームをロードした際、フォーム上にあるコンボボックス(Combobox1)に サーバの指定したテーブル・フィールドの値を表示させたいのですが、 データベースへの接続はできたものの、コンボボックスに表示させる方法がわかりません。 テーブル:社員マスタ フィールド:社員番号 のデータをコンボボックスに呼び出すにはどう処理を加えればよいでしょうか? 今現在、作成中のコードが下記になります。 ご教授お願いします。 Private Sub Frmjob_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'リモート接続に伴うパスを格納 Dim St As String Dim Cn As New System.Data.SqlClient.SqlConnection Dim sqlInsert As New SqlClient.SqlCommand Dim SQL As System.Data.SqlClient.SqlCommand Dim ServerName As String = "192.XXX.X.XX" 'サーバーのIPアドレス Dim UserID As String = "sa" 'ユーザーID Dim Password As String = "bluebird" 'パスワード Dim DatabaseName As String = "testDB" '接続先データベース St = "Server=" & ServerName & ";" St &= "User ID=" & UserID & ";" St &= "Password=" & Password & ";" St &= "Initial Catalog=" & DatabaseName Cn.ConnectionString = St SQL = Cn.CreateCommand 'データベースに接続 Cn.Open() 'サーバから呼び出し SQL = New SqlClient.SqlCommand("SELECT 社員番号 FROM 社員マスタ"'), Cn)     Me.ComboBox1.Items.Add(Item("JobCode")) Cn.Close() SQL.Dispose() Cn.Dispose() End Sub

  • .netでコンボボックスの設定方法

    最近、「Microsoft SQL Server 2005」と「Microsoft Visual Basic 2008 Express Edition」の勉強を始めた初心者です。 簡単なことだとは思うのですが、どなたかご教授お願いします。 <部門テーブル> コード 部門名 001   総務課 002   経理課 003   営業課 質問は、部門テーブルのをコンボボックスへセットするコーディング方法です。 やりたいこと↓↓↓ Private Sub frm一覧_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load   (1)テーブルOPEN    select コード, 部門名 from 部門テーブル order by コード      (2)データが存在すれば、コンボボックスにセット     End Sub また、コンボボックスには部門名だけを表示させたいと思います。 この時、選択されたデータのコードと部門名の取得方法も教えて下さい。 よろしくお願いします。

  • アクセス コンボボックスについて

    コンボボックス 印刷ボタンについて アクセス勉強中です。 フォームで作成した画面 だけを印刷する、コンボボックスを作成しています。 コンボボックスウィザードにてフォーム印刷ボタンを作成したのですが、 1000人くらいの、すべてのデーターが印刷されてしまい困っております。 どこを変更すれば1枚だけ印刷ができるのでしょうか? イベントプロジャという部分は下記です。 またプロジャー以外に何かしなければならないのでしょうか?? どうぞ宜しくお願いいたします。 Option Compare Database Private Sub リスト70_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[IDI] = " & Str(Me![リスト70]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[NO] = " & Str(Me![コンボ73]) Me.Bookmark = rs.Bookmark End Sub Private Sub コンボ73_BeforeUpdate(Cancel As Integer) End Sub Private Sub 生年月日_AfterUpdate() Me.年_____齢 = Int(DateDiff("d", [生年月日] - 1, Date) / 365.25) End Sub Private Sub 郵便番号_AfterUpdate() Me!現住所.SetFocus Me!現住所.SelStart = Len(Me!現住所) End Sub Private Sub コマンド121_Click() On Error GoTo Err_コマンド121_Click Dim stDocName As String Dim MyForm As Form stDocName = "顧客リスト" Set MyForm = Screen.ActiveForm DoCmd.SelectObject acForm, stDocName, True DoCmd.PrintOut DoCmd.SelectObject acForm, MyForm.Name, False Exit_コマンド121_Click: Exit Sub Err_コマンド121_Click: MsgBox Err.Description Resume Exit_コマンド121_Click End Sub

  • ADOでエクセルからSQL Serverへデータを移行するには

    エクセルvbaのADOを使って、 SQL Serverの「test」という名のデータベースの「Table_1」に 新規レコードを追加する事はできますか? エクセルからアクセスには Sub test() Dim データベース名 As String Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = New ADODB.Connection Set rs = New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & データベース名 rs.Open "Tテーブル1", cn, adOpenKeyset, adLockOptimistic rs.AddNew rs.Fields("フィールド1") = データ rs.Update rs.Close cn.Close Set rs = Nothing Set cn = Nothing End Sub で移行しています。 これをエクセルからSQL Serverへ移行させるにはどうすればいいのでしょうか? よろしくお願いします。

  • フォームを閉じないようにする VB6 SP6

    VB6 でプログラムを作成中です。 プログラムを実行して、フォームが立ち上がった所で右上の×を押し、画面を閉じようとします。 そこで以下のコードで、もし×が押されたらvbYesNoメッセージボックスを表示させ、もし「いいえ」が押されたらフォームを閉じないようにし、実行画面を維持したいのです。 しかし、Exit Sub ですとプログラムが終了してしまい、困っています。宜しくお願い致します。 Private Sub Form_Unload(Cancel As Integer) 'フォームを閉じる Dim last As String last = MsgBox(" プログラムを終了させますか?", vbYesNo, "終了確認1") If (last = vbYes) Then Dim last2 As String last2 = MsgBox(" 本当にプログラムを終了させますか?", vbYesNo, "終了確認2") If (last2 = vbNo) Then Exit Sub End If End If If (last = vbNo) Then Exit Sub End If End Sub

専門家に質問してみよう