|
* 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.
- 액세스 버전(95,97,2000,xp,2003,2007):
* 아래줄에 질문을 작성하세요 >>
검색된 데이터가 2개 이상일 경우
데이터를 모두 한번에 입력되도록 하는 방법이 있을까요?
자료에서 A로 검색했을 때 나온 데이터들의 코드를 입력하고 싶습니다.
==============[하얀겨울님 글에 대한 답변입니다]==============
현재 작업일지가 하나의 테이블에서 작성 되었기 때문에,
검색된 여러개의 레코드가 전송 되면 각각 ID가 부여 되어 입력되므로 하위폼에는 마지막 레코드 하나만 보이게 됩니다.
따라서, 아래와 같이 일대다의 구조로 변경하여야 할 듯 합니다.
작업일지상위 작업일지하위
1 2022-05-21 ┬ 1
├ 2
└ 3
여러개의 레코드를 보내려면 추가* 쿼리나 DAO. ADO.를 이용합니다.
첨부 파일은 DAO를 이용하여 검색 하위폼에서 검색된 결과를 작업일지 하위폼으로 모두 전송합니다.
테이블/폼 모두 새로 작성하였으므로 잘 분석 하셔서 적용 하시면 되겠습니다.
'작업일지의 날짜가 비었을 경우 진행을 중단함
If IsNull(Forms!작업일지!날짜) Then Exit Sub
'전송전 예/아니오 확인창에서 아니오를 선택한 경우 진행을 중단함
If MsgBox("현재 검색된 리스트를 전송하시겠습니까?", vbYesNo) = vbNo Then Exit Sub
'작업일지 상위폼에 포커스를 옮겨 저장함
Forms!작업일지!날짜.SetFocus
DoCmd.RunCommand acCmdSaveRecord
'변수 선언
Dim sRs As DAO.Recordset
Dim tRs As DAO.Recordset
'소스 레코드 셋 (검색하위)
Set sRs = Me.검색M_하위.Form.Recordset
'타겟 레코드 셋(일지하위)
Set tRs = Forms!작업일지!일지하위.Form.Recordset
'소스 레코드 셋(검색하위)에 검색된 결과가 없을때 진행을 중단함
If sRs.RecordCount < 1 Then
MsgBox "검색된 레코드가 없습니다."
Exit Sub
End If
'소스 레코드 셋(검색하위)의 처음 레코드로 이동
sRs.MoveFirst
'순환
Do
'타겟 레코드 셋(일지하위)에 새로운 레코드 추가
tRs.AddNew
'타겟 레코드 셋(일지하위)에 상-하위폼 연결번호 (ID <-> 연결) 입력
tRs!연결 = Forms!작업일지!ID
'코드 입력
tRs!코드 = sRs!코드M
'타겟 레코드 셋(일지하위) 현재 레코드 업데이트
tRs.Update
'소스 레코드 셋(검색하위) 다음 레코드로 이동
sRs.MoveNext
'소스 레코드 셋(검색하위)의 마지막 레코드까지 순환
Loop Until sRs.EOF
'검색 폼 닫기
DoCmd.Close acForm, "검색M" |
|