SQL Server 2008R2 백엔드에 연결된 테이블이있는 MS Access 2010 데이터베이스가 있습니다.SQL Server의 연결된 테이블에서 다른 Access.accdb를 삽입하십시오.
연결된 테이블에서 레코드를 선택하고 다른 Access .accdb에 삽입해야합니다.이 테이블에는 로컬 테이블이 있습니다.
이
는 내가 가지고있는 코드 :Const DbPath = "L:\path\"
Const DbBaseName = "FileTransfer OnSite"
Const DbExt = ".accde"
Const LockDbExt = ".laccdb"
Const ConString = "Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq="
Dim Con As ADODB.Connection
Dim RS As ADODB.Recordset
Dim DbOutName As String
Dim DbInName As String
Dim Overwrite As Integer
Dim PutStr As String
'do some sanity checking first, then
FileCopy DbInName, DbOutName 'make a physical copy of the blank on-site file
Set Con = New ADODB.Connection
Con.ConnectionString = ConString & DbOutName
Con.Open
PutStr = "INSERT INTO [;Database=" & DbOutName & "].[Loan] (Loan, FromFirm, ToFirm, Borrower, PropStreet, PropCity, PropState, PropZip, Judicial, Examiner) " & _
"SELECT Loan, FromFirm, ToFirm, Borrower, PropStreet, PropCity, PropState, PropZip, Judicial, Examiner " & _
" FROM Loans " & _
" WHERE FromFirm = '" & Me.cmbFrom & "' " & _
" AND ToFirm = '" & Me.cmbTo & "'"
Set RS = Con.Execute(PutStr)
참고 [; 데이터베이스 = ...] [대출] 대상 데이터베이스에 로컬 테이블이며, FROM Loans
참조 외부에서 연결된 테이블에서 해당. 소스 db (이 코드가 실행되고있는 곳).
INSERT INTO [;Database=L:\Path\FileTransfer OnSite-E-A.accde].[Loan] (Loan, FromFirm, ToFirm, Borrower, PropStreet, PropCity, PropState, PropZip, Judicial, Examiner)
SELECT Loan, FromFirm, ToFirm, Borrower, PropStreet, PropCity, PropState, PropZip, Judicial, Examiner
FROM Loans
WHERE FromFirm = 'E'
AND ToFirm = 'A'
내가 알리는 Set RS =
줄에 오류 메시지 (관련 회사의 개인 정보 보호를 위해 편집) :
Run-time error '-2147217865 (80040e37)':
[Microsoft][ODBC Microsoft Access Driver] The Microsoft Access
database engine cannot find the input table or query 'Loans'. Make
sure it exists and that its name is spelled correctly.
Loans
가 외부로 액세스에 정의되어
PutStr는로 확인 연결된 테이블을 SQL Server 백엔드에 연결합니다. db의 다른 코드는이 테이블에 잘 액세스하고 있습니다. 내가 생각한 한 가지는 테이블 Loans
이 SQL Server의 기본 스키마에 없지만 지금까지는 액세스가 신경 쓰지 않는다는 것입니다. 스키마 정보가 링크에 포함되어 있으므로 다른 곳에서 Loans
에서 선택할 수 있습니다. - 액세스는 단지 Loans
으로 알고 있습니다. 나는 Loans
을 [schema].[Loans]
으로 참조하려고 시도했지만, Access는 그 중 하나를 좋아하지 않았습니다.
Access가 코드가 실행되는 DB에 정의 된 Loans
테이블을 찾을 수없는 이유가 확실하지 않습니다. 나는 이것을 loans의 SELECT, 그리고 외부 .accdb에 삽입하는 루프로 나눌 수 있다고 생각했지만 가능하다면 단일 쿼리에서이를 깨끗하게 처리하고 싶습니다.
우수한 @HansUp! 고맙습니다. 이제는 Access에서 파일 이름을 좋아하지 않게 만드는 원인을 알아 내야합니다. 그러면 모두 잘 될 것입니다. 출력 이름은 다음과 같습니다. "L : \ Default \ Default Management \ 변호사 감독 \ 프로젝트 \ 회사 전송 \ Code \ FileTransfer OnSite-Lawye R. Name, P.A.- Other & Firm, P.A..accde". 출력 파일을 "test.accde"로 변경하면 답변이 완벽하게 작동합니다.이 파일 이름은'런타임 오류 '3126': 이름이 잘못되었습니다 ... '라는 메시지가 나타납니다. 파일이 묶여 있는지 여부를 알려줍니다 작은 따옴표 ('') 또는 대괄호 ([])로 묶습니다. – FreeMan
파일 이름에있는 모든 구두점 문자를 사용하면 제안한 접근 방식이 효과가 있다고 생각하지 않습니다. 그 코드가 처리 할 수있는 다른 이름을 사용해야하고, 완료된 후에 db의 이름을 변경해야합니다. 그게 효과가 있지만 얼마나 좋아할 지 확신 할 수 없습니다. – HansUp
예, 그 트릭을했습니다. 다행히도 일부 데이터의 오프 사이트 사본을 설정하면 이는 일회성 쓰기입니다. 고마워, 한샘, 내가 필요한 지침 – FreeMan