2009-05-13 7 views
2

VBScript를 사용하여 텍스트 파일, 쿼리를 MS Access 쿼리 컬렉션에로드하려고합니다. 나는 다음과 같은 것을 사용하고있다 : 코드는 Here에 기인한다.MS Access 쿼리에 대한 Application.LoadFromText 대신

for each myFile in folder.Files 
    objecttype = fso.GetExtensionName(myFile.Name) 
    objectname = fso.GetBaseName(myFile.Name) 
    WScript.Echo " " & objectname & " (" & objecttype & ")" 

    if (objecttype = "form") then 
     oApplication.LoadFromText acForm, objectname, myFile.Path 
    elseif (objecttype = "bas") then 
     oApplication.LoadFromText acModule, objectname, myFile.Path 
    elseif (objecttype = "mac") then 
     oApplication.LoadFromText acMacro, objectname, myFile.Path 
    elseif (objecttype = "report") then 
     oApplication.LoadFromText acReport, objectname, myFile.Path 
    elseif (objecttype = "sql") then 
     'oApplication.LoadFromText acQuery, objectname, myFile.Path 
     ' Add create querydef code here 
    end if 

next 

그러나 VBScript를 사용하여 쿼리 정의를 만드는 방법을 잘 모르겠습니다.

아이디어가 있으십니까?

참고 : 그런 다음 LoadFromText 그냥 완성도 I에 대한

답변

4

: 나는 원래 이런 식으로 뭔가를 사용하여 파일에 수출 내 솔루션을 추가하고 싶었습니다. 분명히 필요한 모든 추가 할

if (objecttype = "form") then 
    oApplication.LoadFromText acForm, objectname, myFile.Path 
elseif (objecttype = "bas") then 
    oApplication.LoadFromText acModule, objectname, myFile.Path 
elseif (objecttype = "mac") then 
    oApplication.LoadFromText acMacro, objectname, myFile.Path 
elseif (objecttype = "report") then 
    oApplication.LoadFromText acReport, objectname, myFile.Path 
elseif (objecttype = "sql") then 
    oApplication.LoadFromText acQuery, objectname, myFile.Path 
end if 

했다 : DJ에

Const acQuery = 1 

감사

+2

헌장 acQuery = 1 –

+1

비록 드문, 당신은 입력 테이블로 하위 쿼리가있는 쿼리가있을 때 , LoadFromText 작동하지만 손상된 쿼리를 만듭니다. 내 보낸 쿼리 txt 파일 안에 "Begin InputTables"라는 섹션이 있고 "Name"테이블의 테이블이 하위 쿼리 SQL이됩니다. 가져 오기 후 access는이 이름을 querydef 이름으로 해석합니다. 해결 방법은 쿼리 내보내기 파일을 구문 분석하고 하위 쿼리를 찾은 다음 내보내기 프로세스 중에 쿼리를 압축 해제하는 것입니다. Access Objects에서 손상된 바이너리 블록을 제거한 자동 수정 루틴을 작성해야했기 때문에이 문제에 봉착했습니다. – DHW

3

를 작동해야이 쿼리 인증 된 정의를

For i = 0 To db.QueryDefs.Count - 1 
    Application.SaveAsText acQuery, db.QueryDefs(i).Name, sExportpath & "\" & db.QueryDefs(i).Name & ".sql" 
Next i 

을 절약 할 수

For Each myObj In oApplication.CurrentDb.QueryDefs 
    Set f = fso.CreateTextFile(sExportpath & "\" & myObj.Name & ".sql", True) 
    f.WriteLine(myObj.SQL) 
    f.Close 
Next 
관련 문제