2016-10-10 11 views
0

ADODBを使用してクローズドブック内のデータを検索し、チーム(A、B、C、Dと考える)と日付で絞り込み、閉じられたブックからのデータを含むアクティブなブック。私の最初の問題は、接続文字列を取得することで、私が到達しようとしているファイルは同じディレクトリにありますが、ThisWorkbook.Pathは動作していないようです。私が引き出そうとしているデータは、チーム、日付、製品、スタッフ、処理の問題、およびパッケージの問題です。また、私はそれを選択した後、データをどのように使用するのか不明です。これは私のニーズに合った問題を抱えている別の答えから取られたコードです。2つの条件に基づいて閉じたブックのデータでユーザーフォームを入力してください

Sub ADOGetRange() 

Dim lastRow As Long, x As Long 

Const adOpenKeyset = 1 
Const adLockOptimistic = 3 
Dim conn 
Dim EmployeeData 

Set conn = CreateObject("ADODB.Connection") 
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Workbooks(ThisWorkbook.Path) & "\Line 1 - EOS Database Rev A.xlsm[Line 1 Database$]";Extended Properties=""Excel 12.0 Xml;HDR=YES"";" 
conn.Open 

' On Error GoTo CloseConnection 

Set L1EOSData = CreateObject("ADODB.Recordset") 

With L1EOSData 
    .ActiveConnection = conn 
    .CursorType = adOpenKeyset 
    .LockType = adLockOptimistic 
    .Source = "SELECT * FROM [Line 1 Database$] WHERE [Team]='" & cboL1Team.Value & "" And [Date] = "#" & DateValue(cboL1Date.Value) & "#" 
    .Open 
'  On Error GoTo CloseRecordset 

End With 

CloseRecordset: 

L1EOSData.Close 
Set L1EOSData = Nothing 

CloseConnection: 
conn.Close 
Set conn = Nothing 
End Sub 
+0

はちょうどこのように私は私が)(一部 –

+0

はまだエラーを取得する必要があると思いますあなたはどういう意味ですか? – Shawnaby

答えて

0

フィールド名を適宜調整する必要があります。

Private Sub cboL1Date_Change() 
' If cboL1Team.ListIndex > -1 Then ReadWriteRecord enReadRecord 
    If cboL1Team.ListIndex > -1 Then ADOGetRange 
End Sub 

Private Sub cboL1Team_Change() 
' If cboL1Date.ListIndex > -1 Then ReadWriteRecord enReadRecord 
    If cboL1Date.ListIndex > -1 Then ADOGetRange 
End Sub 

Sub ADOGetRange() 
    Const adOpenKeyset = 1 
    Const adLockOptimistic = 3 
    Dim conn 
    Dim L1EOSData 

    Set conn = CreateObject("ADODB.Connection") 
    conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Line 1 - EOS Database Rev A.xlsm;Extended Properties=""Excel 12.0 Xml;HDR=YES"";" 
    conn.Open 

    ' On Error GoTo CloseConnection 

    Set L1EOSData = CreateObject("ADODB.Recordset") 

    With L1EOSData 
     .ActiveConnection = conn 
     .CursorType = adOpenKeyset 
     .LockType = adLockOptimistic 
     .Source = "SELECT * FROM [Line 1 Database$] WHERE [Team]='" & cboL1Team.Value & "' And [Date] = #" & DateValue(cboL1Date.Value) & "#" 
     .Open 
     '  On Error GoTo CloseRecordset 


     If Not .BOF Or Not .EOF Then 
      cboL1Product.Value = .Fields("Product").Value 
      cboL1Staffing.Value = .Fields("Staffing").Value 
      txtL1Pounds.Value = .Fields("Pounds").Value 
      txtL1Processing.Value = .Fields("Processing").Value 
      txtL1Packaging.Value = .Fields("Packaging").Value 
     End If 

    End With 

CloseRecordset: 

    L1EOSData.Close 
    Set L1EOSData = Nothing 

CloseConnection: 
    conn.Close 
    Set conn = Nothing 
End Sub 
+0

ワークブックを取るときにThisWorkbook.Path&「\ライン1ワークブックの必要がない()www.connectionstrings.com – Shawnaby

+0

あなたは天才の男です!私の一週間を作りました。 – Shawnaby

+0

天才の場合、あなたはもっと長くプログラミングしていて、もっとたくさんのことをしています私は天才です...笑。参考:あなたはまた、あなたが使用することができるブックを読むことに制限されていませんUpdateとInsertは、ADOを照会します。現在のコードを少し変更するだけで、ADODBレコードを更新して挿入するために作成したレコードです。デート、レコードの追加と削除、レコードセット](http://www.accessallinone.com/updating-adding-and-deleting-records-in-a-recordset/) –

関連する問題