2014-07-10 4 views
0

하나의 테이블을 거쳐 모든 레코드를 적절한 테스트 코드와 함께 가져와 액세스 2007에 VBA를 작성하려고합니다. 그것만이 tescode. 첫 번째 SQL 문자열은 입력 된 최신 날짜를 찾기 위해 코드 별 테이블을 거쳐야합니다. 두 번째 sql 문자열은 해당 날짜의 최신 시간에 입력 된 문자열을 찾습니다. 세 번째는 날짜와 시간을 가져 와서 마지막 업데이트 이후에 입력 된 테스트 코드의 일반 테이블에서 모든 레코드를 가져 와서 코드 별 테이블로 이동해야합니다. SQL을 만들 때 사용되는 Access 2007 쿼리 마법사는 여전히 VBA에서 실행되지 않습니다.

는 사실 처음 두 SQL 문을 생성하는 쿼리 마법사를 사용, 아직 내가 오류가 계속 :

RUNSQL 동작은 SQL 문으로 구성된 인수가 필요합니다.

SQL 문을 복사하여 붙여 넣은 후에 변경된 유일한 사항은 적절한 따옴표와 내용을 추가 한 것이므로 작동하지 않는 이유가 확실하지 않습니다. 또한 첫 번째 부분을 처리 할 수 ​​없기 때문에 나중에 코드를 확인할 수 없다는 것을 의미합니다.

제 질문은 마법사에서 복사하여 붙여 넣으면 어떻게됩니까? 아래는 내 코드의 섹션입니다. 나는 messagebox를 사용하여 SQL 문을 통해 문제를 확인하고 \ 확인했다.

dateSQL = "SELECT Max(tbl505.TESTDATE) AS MaxDATE " & _ 
    "FROM tbl505 " & _ 
    "HAVING (([tbl505].[Plant]='Freeport'));" 

MsgBox (dateSQL) 
DoCmd.RunSQL dateSQL 

timeSQL = "SELECT Max(tbl505.TESTTIME) AS MaxTIME " & _ 
    "FROM tbl505 " & _ 
    "HAVING (([tbl505].[Plant]='Freeport')) AND (([tbl505].[TESTDATE]= #" & MaxDATE & "#;" 

MsgBox (timeSQL) 
DoCmd.RunSQL timeSQL 


strSQL = "INSERT INTO tbl505 (ORDERNO,CODE,BATCHNO,TESTNO,TESTDATE,PRODDATE,TESTTIME) " & _ 
    "SELECT ORDERNO,CODE,BATCHNO,TESTNO,TESTDATE,PRODDATE,TESTTIME " & _ 
    "FROM DSResultFRP " & _ 
    "WHERE DSResultFRP.[TESTDATE] >= #" & MaxDATE & "# AND DSResultFRP.[TESTDATE] > #" & MaxTIME & "# AND DSResultFRP.[TESTCODE] = '505'" 

DoCmd.RunSQL strSQL 
+0

CurrentDb.Execute 또는 CurrentDb의 인스턴스를 사용하는 것이 더 낫습니다. dbFailOnError를 추가하십시오. 즉시 창 (ctrl + g)과 debug.print를 사용하여 SQL을보십시오. 처음 두 쿼리의 요점은 무엇입니까, 당신은 그들과 아무 관계도없는 것 같습니까? – Fionnuala

+0

첫 번째 두 변수를 사용하여 레코드를 정렬하기 위해 세 번째 변수에서 사용하는 최대 날짜 및 최대 시간 변수를 설정하려고합니다. 이 작업을 수행하는 더 좋은 방법이있을 수 있지만 SQL을 사용하는 데는 새로운 경험이 있습니다. – user3827021

답변

0

DoCmd.RunSQL 행동 형 쿼리 (INSERT, UPDATE, DELETE)만을위한 것입니다. 첫번째 두 개의 쿼리에 사용하는 컨텍스트에서는 명령에 이해가되지 않습니다. 이러한 쿼리에서 반환 된 값을 사용하려면 DAO/ADO 레코드 집합 솔루션 또는 DMax 함수 솔루션을 살펴보십시오.

+0

감사합니다. DMax 함수는 내가하고 싶은 일을하는 더 쉬운 방법이며 처음 두 SQL 문을 모두 대체 할 수있었습니다. 그것들과 함께, 코드는 완벽하게 돌아갔다. – user3827021

+0

@ user3827021 : 멋지다, 기쁜 당신을 위해 일했다. 시간이 있다면 해결책 게시물을 답으로 표시하여 나중에 같은 질문을하면 해결 방법이 무엇인지 알 수 있습니다. 조심해. – VBlades