하나의 테이블을 거쳐 모든 레코드를 적절한 테스트 코드와 함께 가져와 액세스 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
CurrentDb.Execute 또는 CurrentDb의 인스턴스를 사용하는 것이 더 낫습니다. dbFailOnError를 추가하십시오. 즉시 창 (ctrl + g)과 debug.print를 사용하여 SQL을보십시오. 처음 두 쿼리의 요점은 무엇입니까, 당신은 그들과 아무 관계도없는 것 같습니까? – Fionnuala
첫 번째 두 변수를 사용하여 레코드를 정렬하기 위해 세 번째 변수에서 사용하는 최대 날짜 및 최대 시간 변수를 설정하려고합니다. 이 작업을 수행하는 더 좋은 방법이있을 수 있지만 SQL을 사용하는 데는 새로운 경험이 있습니다. – user3827021