책 내용 질문하기
Ado문
도서
2018 시나공 컴퓨터활용능력 1급 실기(엑셀, 액세스 2010 사용자용)
페이지
302
조회수
93
작성일
2018-08-22
작성자
탈퇴*원
첨부파일

ado문

149쪽

Dim rs As ADODB.Recordset

Set rs = New ADODB.Recordset

DoCmd.OpenForm "제품정보"

rs.ActiveConnection = CurrentProject.Connection

rs.Open "select * from 제품별판매현황 where 판매번호=" & txt판매번호

Forms!제품정보.txt판매번호 = rs!판매번호

Forms!제품정보.txt제품명 = rs!제품명

Forms!제품정보.txt판매량 = rs!판매량

Forms!제품정보.txt불량품 = rs!불량품

Forms!제품정보.txt단가 = rs!단가

Forms!제품정보.txt제품평 = rs!제품평

Forms!제품정보.txt거래처명 = rs!거래처명

Forms!제품정보.txt거래처등급 = rs!거래처등급

rs.Close

문제에서 제품정보 폼을 실행한 후 제품정보 폼의 판매번호가 txt판매번호의 값과 같은 제품의 정보를 찾아 표시되도록 하시오. 제품정보 폼을 실행한 후 라고 하였기 때문에 DoCmd.OpenForm "제품정보" 해준거죠?

302쪽

Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.cursorlocation = aduseclient
rs.activeconnection = CurrentProject.Connection
rs.Open "selet*from 운행관리 where 행선지='" & txt행선지 & "'"
MsgBox "행선지가" & [행선지] & "인 개수는 : ", vaokonly, rs.RecordCount
rs.Close

그럼 여기서는 문제가 txt행선지 컨트롤에 표시된 행선지와 같은 레코드의 개수를 표시하는 메시지 박스를 표시할 것. 여기서는 왜 저걸 써준건가요...? 레코드의 현재 위치를 클라이언트로 이동시킨다는데 ㅠㅠㅠㅠ이해가 잘...

그리고 실행이 안되서 파일 첨부합니다.. 똑같이 썼는데 뭐가 틀렸는지 안되네요 ㅠㅠㅠ

이것 별개의 질문인데

Dim rs As ADODB.Recordset

Set rs = New ADODB.recprdset

rs.cursorlocation = aduseclient

rs.activeconnection = CurrentProject.Connection

rs.Open "selet*from 운행관리 where 행선지='" & txt행선지 & "'"

MsgBox "행선지가" & [행선지] & "인 개수는 : ", vaokonly, "행선지='" & txt행선지 & "'"

rs.close

이렇게 하면 틀린 거겠죠? 행선지컨트롤값과 같은 행선지가 나오니 갯수가 안나오는거죠??ㅠㅠㅠㅠido문 복잡하네요......

아!!그리고 매크로작성기에 필터이름이요!! 조건이 있는 테이블 이름이면 넣는거고 아니면 지정안하는건가요?? 아니면 문제에서 테이블이나 쿼리있으면 다넣으면 되나요?? 문제풀때..ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

ex??) 302쪽에 내보내기 작성시 거래처 테이블 (조건있는테이블)

답변
2018-08-22 21:41:57

안녕하세요.

p.149
넵 맞습니다.

p.302
폼이 실행된 상태에서 어떤 컨트롤을 클릭하냐에 따라 값이 달라져야 하는 경우에는 'rs.cursorLocation = adUseClient를 사용한다고 보시면 됩니다.

rs.CursorLocation = adUseClient : CursorLocation(레코드의 현재 위치)는 기본적으로 Server(서버)에 위치하는데,
이를 Client(클라이언트)로 이동시키는 것입니다.

CursorLocation을 Client로 설정해야 레코드의 개수를 정상적으로 표시할 수 있습니다.

그렇지 않으면 레코드 개수가 -1로 표시됩니다.

첨부해주신 파일은 사용 가능한 참조를 추가해 주셔야 ADO를 사용하실 수 있습니다.
액세스가 실행되어 있는 상태에서 설정해주시며 작동됩니다.

1. [Alt]+[F11]을 눌러 Microsoft Visual Basic Editor를 실행하세요.

2. [도구] - [참조]를 선택하세요.

3. '참조' 대화상자의 '사용 가능한 참조' 항목에서

'Microsoft ActiveX Data Objects ~~~ Library' 라는 이름의 항목 중 하나를 체크한 후 <확인>을 클릭하세요.

첨부파일의 코드에도 오류가 있습니다.(빨간색 부분을 아래 코드로 바꿔주세요. Select와 * 사이는 한 칸씩 띄어주세요.)

5줄 : rs.Open "select * from 운행관리 where 행선지= '" & txt행선지 & "'"

6줄 : MsgBox "행선지가" & [행선지] & "인 개수는 : " & rs.RecordCount

RecordCount로 개수를 구해주세요.

적어주신

MsgBox "행선지가" & [행선지] & "인 개수는 : ", vaokonly, "행선지='" & txt행선지 & "'"

형태로 입력하면 개수가 구해지지 않고, 메시지박스 이름에 "행선지='전주'"가 표시됩니다.

물론 vaokonly를 vbokonly로 변경해주셨을 경우입니다.(오타 수정안하시면 디버그화면이 나옵니다.)

마지막 질문은 '필터 이름'이 잘 이해가 가지 않습니다. 자세히 질문 부탁드립니다.

좋은 하루 보내세요.

  • *
    2018-08-22 21:41:57

    안녕하세요.

    p.149
    넵 맞습니다.

    p.302
    폼이 실행된 상태에서 어떤 컨트롤을 클릭하냐에 따라 값이 달라져야 하는 경우에는 'rs.cursorLocation = adUseClient를 사용한다고 보시면 됩니다.

    rs.CursorLocation = adUseClient : CursorLocation(레코드의 현재 위치)는 기본적으로 Server(서버)에 위치하는데,
    이를 Client(클라이언트)로 이동시키는 것입니다.

    CursorLocation을 Client로 설정해야 레코드의 개수를 정상적으로 표시할 수 있습니다.

    그렇지 않으면 레코드 개수가 -1로 표시됩니다.

    첨부해주신 파일은 사용 가능한 참조를 추가해 주셔야 ADO를 사용하실 수 있습니다.
    액세스가 실행되어 있는 상태에서 설정해주시며 작동됩니다.

    1. [Alt]+[F11]을 눌러 Microsoft Visual Basic Editor를 실행하세요.

    2. [도구] - [참조]를 선택하세요.

    3. '참조' 대화상자의 '사용 가능한 참조' 항목에서

    'Microsoft ActiveX Data Objects ~~~ Library' 라는 이름의 항목 중 하나를 체크한 후 <확인>을 클릭하세요.

    첨부파일의 코드에도 오류가 있습니다.(빨간색 부분을 아래 코드로 바꿔주세요. Select와 * 사이는 한 칸씩 띄어주세요.)

    5줄 : rs.Open "select * from 운행관리 where 행선지= '" & txt행선지 & "'"

    6줄 : MsgBox "행선지가" & [행선지] & "인 개수는 : " & rs.RecordCount

    RecordCount로 개수를 구해주세요.

    적어주신

    MsgBox "행선지가" & [행선지] & "인 개수는 : ", vaokonly, "행선지='" & txt행선지 & "'"

    형태로 입력하면 개수가 구해지지 않고, 메시지박스 이름에 "행선지='전주'"가 표시됩니다.

    물론 vaokonly를 vbokonly로 변경해주셨을 경우입니다.(오타 수정안하시면 디버그화면이 나옵니다.)

    마지막 질문은 '필터 이름'이 잘 이해가 가지 않습니다. 자세히 질문 부탁드립니다.

    좋은 하루 보내세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.