私はこのフォーラムを初めて使用するので、既に質問されていて見つけられなかった場合、または間違った場所に投稿している場合は申し訳ありません。
SQL からのデータに基づいてコンボボックスにデータを入力する、何年も使用してきたルーチンがあります。2 つのコンボボックスを含むスプレッドシートがあります。最初のコンボボックスは正常に機能し、SQL テーブルから直接フォルダ名のリストを表示します。2 番目のコンボボックスには、最初のコンボボックスで選択されたフォルダーに関連付けられているすべてのコントラクトが取り込まれます。ただし、コードを自動入力することはできません。コンボボックスを更新するには、最初にドロップダウンリストから項目を選択する必要があり、その後値が保持されません。以下にコードを貼り付けました。
Private Sub CB_Company_Change()
With Application
.Calculation = xlManual
.EnableEvents = False
.ScreenUpdating = False
End With
Dim stSQL As String, sBook As String, rst As ADODB.Recordset, k As Integer, vaData As Variant
Dim objConn As ADODB.Connection
Dim ConnectionString As String
ConnectionString = "Provider=sqloledb.1;data source=sql-server;Initial catalog=sql-db;Integrated Security = SSPI;"
Set objConn = New ADODB.Connection
sBook = CB_Book.Value
CB_Company.Clear
stSQL = "EXEC('SELECT Name FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.ID = TABLE2.ID WHERE TABLE2.NAME = ''" & sBook & "'' ORDER BY TABLE1.NAME')"
With objConn
.CursorLocation = adUseClient
.Open ConnectionString
Set rst = .Execute(stSQL)
End With
With rst
Set .ActiveConnection = Nothing
k = .Fields.Count
vaData = .GetRows
End With
CB_Company.List = Application.Transpose(vaData)
objConn.Close
Set rst = Nothing
Set objConn = Nothing
bClear = True
With Application
.Calculation = xlAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
実行時にこれが自動入力されない理由についての助けをいただければ幸いです。
ここで要求されているのは、簿価を与える最初のコンボボックスのコードです。
Option Explicit
Public bClear As Boolean
Private Sub CB_Book_Change()
With Application
.Calculation = xlManual
.EnableEvents = False
.ScreenUpdating = False
End With
Dim stSQL As String, rst As ADODB.Recordset, k As Integer, vaData As Variant
Dim objConn As ADODB.Connection
Dim ConnectionString As String
ConnectionString = "Provider=sqloledb.1;data source=SQL-SERVER;Initial catalog=SQL-DB;Integrated Security = SSPI;"
Set objConn = New ADODB.Connection
stSQL = "EXEC('SELECT NAME FROM TABLE2')"
With objConn
.CursorLocation = adUseClient
.Open ConnectionString
Set rst = .Execute(stSQL)
End With
With rst
Set .ActiveConnection = Nothing
k = .Fields.Count
vaData = .GetRows
End With
CB_Book.List = Application.Transpose(vaData)
objConn.Close
Set rst = Nothing
Set objConn = Nothing
bClear = True
With Application
.Calculation = xlAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub