2017-01-05 6 views
-1
Sub Access() 

Dim filepath As String 

Dim oConn As ADODB.Connection 

Dim RS As ADODB.Recordset 

Dim ssql As String 

Dim strMyPath As String, strDBName As String, strDB As String 

'Getting workbook path 

Path = Application.ActiveWorkbook.Path 

'Finding complete address of the database 

filepath = Path & "\TBS.accdb" 

sConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 

          "Data Source=" & filepath & ";" & _ 

          "Jet OLEDB:Engine Type=5;" & _ 

          "Persist Security Info=False;" 

'Open a connection. 

Set oConn = New ADODB.Connection 

oConn.Open sConn 

ssql = Range("query ") & Sheets("backened").Range("F3") 

'query is a named range containing sql query 

MsgBox (Sheets("backened").Range("F3")) 

Set RS = New ADODB.Recordset 

      Set RS.ActiveConnection = oConn 

      RS.Open ssql, oConn, adOpenStatic, adLockReadOnly, adCmdText 

With RS 

       Sheets("sheet3").Select 

       Sheets("Sheet3").Range("F10").CopyFromRecordset RS 

       .Close 

End With 

End Sub 

를 통해 VBA를 통해 액세스, 데이타베이스에서 데이터를 얻으려고 노력하고있는 쿼리는 "선택 *에서"때마다 그것을 실행 미세하지만 특정 열을 선택하거나 조작으로 모든 그룹을 수행 할 때이 오류가 발생합니다 - 실행 오류 '-2147467259이 (8000405)' 방법 객체 _recordset '의'개방 '실패나는 데이터베이스 이름이 "파일 경로"</p> <p>에 저장된과 함께 위의 코드 파일 경로에서 SQL 쿼리

+0

vb-code에는 문제가 없지만 ... ssql = Range ("query") & Sheets ("backened"). 범위 ("F3")는 실제로 원하는 것을 반환합니다. . 기회는'ssql'에'Blank' /'vbCrLf'가 없습니다. 'Debug.Print ssql'을 실행하고 결과 SQL 문자열을 게시하십시오. –

+0

@martin dreher 나는 다음 결과를 얻습니다. Cardiology_Pradaxa에서 구역을 선택하고 위에서 언급 한 것과 동일한 디버그 오류를 진행하십시오. –

답변

0

귀하의 필드 이름 zone가있다 sql-92 standard에 예약어. SQL의 경우 [zone]을 대신 사용하십시오. microsoft error description을 참조하십시오.

일반적으로 SQL 쿼리에서 필드 이름을 대괄호 [ ] 안에 넣는 것이 좋습니다. 이렇게하면 예약어, 날짜 및 공백을 포함한 문자열을 필드 이름으로 사용할 수 있습니다.

+0

감사합니다. –

+0

다행이었습니다. 게시물에 응답으로 게시물을 닫았는지 확인하십시오 –