드로우홀릭 더베이직
안녕하세요...
뒤늦게 액세스를 배우고 실무에 적용하려고 합니다.
제목처럼 보고서 폼을 작성하면서 Visual Basic으로 조건값 지정하는 작업을 하다가 문제가 생겨 문의 드립니다.
조건화일의 조건명은 "성분 1"이고, 조건 값으로 "Cu"등과 같이 영문자 1 ~ 4로 지정하려고 합니다.
"직장인을 위한 실무 액세스"를보면서 작업 중인데, 다음과 같이 하였더니 에러가 나옵니다.
'component 조건 설정
strSQL = CurrentDb.QueryDefs("q조건_추가_성분1").SQL
strSQL = Replace(strSQL, "[Forms]![보고서]![cboComponent1]", [Forms]![보고서]![cboComponent1].Value)
CurrentProject.Connection.Execute strSQL
책에는 [Forms]![보고서]![cboComponent1].Value와 같이 지정하면 정수로 인식한다고 설명되어 있는데,(page 449)
정수가 아닌 문자로 Replace할 수 있는 방법좀 알려 주세요...ㅠㅠ
에러 내용은
"필요한 매개변수 중 한개 이상에 값이 주어지지 않았습니다
-214727904"
라고 뜹니다.
Cu(구리)와 같은 화학 성분을 기준으로 검색하는 액세스를 만드는 중이라 꼭 필요합니다.
그럼 부탁드립니다.
어이쿠. 답변이 늦었습니다.
그런데, 질문하신 것이.. 답하기가 쉬운 건 아니네요.
일단 현재 문제가 되는 건.. 우선 다음 코드를 보시죠.
'component 조건 설정 strSQL = CurrentDb.QueryDefs("q조건_추가_성분1").SQL strSQL = Replace(strSQL, "[Forms]![보고서]![cboComponent1]", [Forms]![보고서]![cboComponent1].Value) CurrentProject.Connection.Execute strSQL
이렇게 해서 최종적으로 만들어진 strSQL은 다음과 같습니다.
INSERT INTO 조건 ( 조건명, 조건값 ) SELECT "성분1" AS Expr1, Al AS Expr2;
자.. 문제는 'Al AS Expr2' 부분입니다.
이 부분은 '"Al" AS Exprt' 로 바뀌어야 합니다. (맨 바깥의 '는 빼고 생각하세요.)
왜냐하면 'Al' 이라는 값이 문자열이기 때문입니다.
쿼리에서 문자열은 작은 따옴표(') 혹은 큰 따옴표(")로 둘러싸 줘야 합니다.
최종적으로는 다음과 같이 만들어져야 하죠.
INSERT INTO 조건 ( 조건명, 조건값 ) SELECT "성분1" AS Expr1, "Al" AS Expr2;
그러면 코드 부분은 다음과 같이 바뀌어야 합니다.
'component 조건 설정 strSQL = CurrentDb.QueryDefs("q조건_추가_성분1").SQL strSQL = Replace(strSQL, "[Forms]![보고서]![cboComponent1]", """" & [Forms]![보고서]![cboComponent1].Value & """") CurrentProject.Connection.Execute strSQL
나머지도 다 이런 문제들입니다.
일단 이런 문제를 해결해 보시기 바랍니다.
본문의 질문이 부족한 듯 하여 작성 중인 화일을 첨부하여 재 문의 드립니다.
제가 20년전 1개월 잠깐 배웠던 액세스 지식으로 작성을 해 보겠다고 무모한 도전을 하다 보니 이해가 많이 부족합니다.
첨부 화일 중
1. 보고서 폼의 조건 입력을 하고 조건 추가 쿼리를 실행하면 조건 테이블에 데이터가 문제없이 반영 됩니다.
2. 그러나 보고서 폼의 조회를 실행하면 상기 본문의 에러가 발생하고 있으며, 조건 테이블에 데이터가 입력되지 않습니다.
세월에 언어의 변화도 많았고 계속 사용하지 않던 프로그램이기도 하다보니 부족함이 많습니다.
좋은 조언 부탁드립니다.
어떻게 하면 좋을지 조언 부탁드립니다.