2013년판 시나공 컴활 1급 액세스 교재에서 본 내용인데요. [p77해당]
코드 작성 시 컨트롤의 분리 및 연결에 대한 설명이 나와있습니다.
1. 분리하여 연결하지 않아도 되는 경우
[docmd를 이용하는 RunSQL(INSERT문 ,UPDATE문,DELETE문) 명령에서 SQL문이나 조건을 입력할 때는 컨트롤을 분리하여 연결하지 않아도 않고 입력해도 됩니다.]
예) <상품_2>테이블에 있는 레코드 중 'txt상품코드' 컨트롤에 입력된 상품코드와 동일한 레코드 삭제하기
DoCmd.RunSQL "Delete * from 상품_2 where 상품코드 = txt상품코드
2. 반드시 분리하여 연결해야 하는 경우
[DoCmd를 이용한 RunSQL문이지만, 폼의 컨트롤이 아닌 프로시저에서 선언한 변수(변수상품코드)를 사용한 경우네늡 ㅕㄴ수를 분리하여 연결해야 합니다.]
예) <상품_2> 테이블에 있는 레코드 중 변수로 지정된 '변수상품코드'에 입력된 상품코드와 동일한 레코드 삭제하기
Docmd.RunSQL "Delete * from 상품_2 where 상품코드 = '" & 변수상품코드 & "'"
예2) me.filter = "고객코드 ='" & cmb고객코드 & "'"
질문
1.여기서 제가 궁금한 것은 구체적으로 1번과 2번의 차이점이 이해가 잘 가지 않습니다. ㅠㅠ
그리고
2. 위 제시문의 1번의 경우에도 연결하지 않아도 되는 경우라고 했으니깐 그냥 맘편하게 분리하여 연결해도 상관없나요?
1. 컨트롤 분리는 "상품코드 = '" & txt상품코드 & "'"
를 말하는 것입니다.
이것을 이용하지 않아도 되는 경우는 runsql 문일때와 d가 들어가는 도메인함수 dsum,dcount 등 입니다.
이 경우에는 분리를 하든 하지 않든 정확한 결과가 나오면 되므로 어느 것을 사용하셔도 상관 없습니다.
2. 폼의 컨트롤이 아닌 프로시저에서 선언한 변수(변수상품코드)
프로시저 안에서 선언한 것입니다.
docmd.runsql "Delete * from 상품_2 where 상품코드 =''" & 변수상품코드 & "''"
를 사용하기 전에 필요에 의해서 만들어진 변수 입니다.
만약.. 변수상품코드를 어떤 컨트롤에 입력되어 있는 결과에 따라 달라진다고 할때..
if txt상품명 = "전화기" then
변수상품코드 = 1
else
변수상품코드 = 2
end if
docmd.runsql "Delete * from 상품_2 where 상품코드 =''" & 변수상품코드 & "''"
라고 사용된다면..
변수상품코드에는 1이나 2의 값이 들어가고 상품코드와 비교가 되게 됩니다.
이것이 폼의 컨트롤이 아닌 프로시저에서 선언한 변수 입니다.
좋은 하루 되세요.
-
*2013-03-11 12:09:58
1. 컨트롤 분리는 "상품코드 = '" & txt상품코드 & "'"
를 말하는 것입니다.
이것을 이용하지 않아도 되는 경우는 runsql 문일때와 d가 들어가는 도메인함수 dsum,dcount 등 입니다.
이 경우에는 분리를 하든 하지 않든 정확한 결과가 나오면 되므로 어느 것을 사용하셔도 상관 없습니다.
2. 폼의 컨트롤이 아닌 프로시저에서 선언한 변수(변수상품코드)
"프로시저 안에서 선언한 것입니다.
docmd.runsql "Delete * from 상품_2 where 상품코드 =''" & 변수상품코드 & "''"
를 사용하기 전에 필요에 의해서 만들어진 변수 입니다.
만약.. 변수상품코드를 어떤 컨트롤에 입력되어 있는 결과에 따라 달라진다고 할때..
if txt상품명 = "전화기" then
변수상품코드 = 1
else
변수상품코드 = 2
end if
docmd.runsql "Delete * from 상품_2 where 상품코드 =''" & 변수상품코드 & "''"
라고 사용된다면..
변수상품코드에는 1이나 2의 값이 들어가고 상품코드와 비교가 되게 됩니다.
이것이 폼의 컨트롤이 아닌 프로시저에서 선언한 변수 입니다.좋은 하루 되세요.