2012-11-12 4 views
0

제 서식을 사과하십시오.ms 액세스 하위 데이터 형식의 SQL 데이터베이스 테이블에 데이터를 입력하십시오.

Access 데이터베이스 양식에 문제가 있습니다.

참가자 테이블에서 참가자 정보를 불러오는 양식이 있습니다. 그런 다음 참가자 테이블의 ID 번호 (PK)로 필터링 된 다른 테이블의 하위 집합을 포함하는 하위 폼이 필요합니다. 하위 폼 (액세스 하위 폼 마법사를 사용하여 만든)은이 작업을 OK입니다. (wtwo 양식은 기본 양식의 ID와 하위 양식의 GI_ID로 연결되지만 여기서는 관련이 없습니다.)

버튼이있는 하위 폼의 까다로운 부분은 다른 폼 (명확화)을 열고 by 하위 폼 (Diary.ID)과 clarification.DiaryID를 연결하는 새 폼 테이블에 새 행을 삽입합니다. 이제 작업자는 설명 테이블의 필드를 채울 수 있으며,이 테이블은 항상 다이어리 테이블에 다시 연결됩니다. 요약

Participant table; ID (pk) 
healthdiary Table; ID (PK) GI_ID (fk - participant table) form= frm_healthdiary_edit_record.ID 
Clarification Table ID (PK), DiaryID (fk) form=tbl_healthdiary_clarif 

이에서 은 하위 폼이 아닌 경우 (다른 양식에) 작동 버튼 뒤에있는 코드입니다. 하위 폼 frm_healthdiary_record의 버튼에 onclick을 제어 2에 사용하는 경우

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values (forms!frm_healthdiary_record.ID)" 
DoCmd.RunSQL SQL_Txt 
SQL_Txt = "" 
DoCmd.OpenForm "frm_healthdiary_clarif", , , "[HDR_ID] = forms!frm_healthdiary_record.ID" 

는 아래의 SQL 삽입 코드가 작동하지 않습니다. 아무리 노력해도 frm_healthdiary_record.ID에 대한 입력을 항상 요구합니다. 내가 me.frm_healthdiary_edit_record.form.ID 및 양식에 코드를 변경 시도

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values (me.frm_healthdiary_edit_record.form.ID)" 
DoCmd.RunSQL SQL_Txt 

SQL_Txt = "" 

은! frm_healthdiary_record..Form.ID,하지만 항상 입력을 요청하는 동일한 결과를 얻을 수 및 컨트롤을 찾을 수 없습니다.

매우 실망 스럽습니다.

subform (onclick)의 버튼을 1로 설정하고 tbl_healthdiary_clarif에 새 행을 삽입 한 다음 방금 삽입 한 레코드의 tbl_healthdiary_clarif를 기반으로 다른 양식을 엽니 다.

더 좋은 방법이 있으면 알려 주시기 바랍니다.

미리 감사드립니다.

답변

2

SQL 텍스트 내에 양식에 대한 참조를 포함 할 수 없으므로 변수이므로 외부에 있어야합니다.

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values (" _ 
    & me.frm_healthdiary_edit_record.form.ID & ")" 
CurrentDB.Execute SQL_Txt, dbFailOnError 

현재 형식의 외부 형태에 하위 참조 할 : ID가 현재 형식의 하위에있는 경우, 예를 들어

SQL_Txt = "INSERT INTO tbl_healthdiary_clarif (HDR_ID) Values (" _ 
    & Forms.MyFormName.frm_healthdiary_edit_record.form.ID & ")" 

당신은 또한 OpenArg으로 ID를 전달할 수 하는 OpenForm 방법 :

DoCmd.OpenForm "Clarification", , , , , , Me.ID 

그런 다음 명확화라는 양식에 Me.OpenArgs을 참조 할 수 있습니다.

+0

오늘 밤 나중에 시도 할 것입니다. – Darklantern

+0

"오류 438이 발생합니다 개체가이 개체 또는 메서드를 지원하지 않습니다. 첫 번째 코드를 시도하고 'SQL_Txt ="INSERT INTO tbl_healthdiary_clarif (HDR_ID) 값으로 수정했습니다. "_ & Forms.health_diary_edit_filtered.Subfrm_healthdiary_edit_record.Form.ID &") " CurrentDb.Execute SQL_Txt, dbFailOnError ' – Darklantern

+0

첫 번째 스크립트를 그대로 사용하면 -"메서드 또는 데이터 메서드를 찾을 수 없습니다." – Darklantern

관련 문제