2009-09-23 1 views
1

그래서 특정 정보 필드가있는 테이블을 업데이트하는 데 사용할 입력 폼이 있습니다. 나는 레코드의 ID를 자동으로 텍스트 상자에 올렸습니다. 나는 버튼 클릭으로 테이블 (ID 제외)에 추가해야하는 세 개의 텍스트 상자가 있습니다.텍스트 상자에서 정보를 가져와 테이블에 삽입하기위한 VBA

Name 
Date 
Method

은 필드 이름입니다.

As_Name 
As_Date 
As_Method

테이블 이름 POC이다 입력란 이름이고, 상기 ID는 POC_ID (그 일련 번호)이다.

그래서이 개체 (텍스트 상자)가 테이블에 바인딩되는 것을 원하지 않습니다.이 양식은 테이블에서 오는 약간의 "팝업"양식이기 때문에 입력이 필요합니다. 원래 폼을 통해 이미 선택된 POC_ID를 기준으로합니다.

이렇게하려면 어떻게해야합니까? 1) 레코드가 이미 존재하지 않는지 확인하십시오. 2) 위에 나열된 텍스트 상자의 데이터 입력으로 필드를 업데이트하십시오. . 나는 .... 버튼 클릭으로 이것을 사용할 수 있도록하려면


편집 : 실제로

그것은 하나 개 테이블하지 두; 나는 같은 테이블 (다른 정보)에 정보를 보낼 수 있기를 원하는 두 가지 형식을 가지고있다. 이 DB는 이미 다른 사람에 의해 만들어졌으며 내가 그걸 가져갈 수 있다는 것을 알고 있습니다.

새 요구 사항에 따라 추가 정보를 추가하려면 두 번째 작은 팝업 양식을 추가해야합니다 (다른 곳에 배치 할 곳이 없습니다). 나는 이미 그것을했고, 상대적인 id 필드를 추가하기 위해 첫 번째 폼 (이 두 번째 "팝업"폼이 시작되는 폼)을 참조하기 위해 제안 된 객체 접근법을 사용했습니다. 이제 나는 세 번째 값을 입력하도록 요청한이 두 번째 작은 팝업 폼을 가지고 있습니다 (위에 나열된 값임).

나는 단지 텍스트 상자를 링크하는 방법을 모르므로 사용자가 정보를 입력하면 "저장"을 클릭하여 정보를 테이블에있는 TripID (즉, 위에 언급했듯이). 데이터를 테이블에 저장하는 방법을 알고있는 유일한 방법은 새 텍스트를 만들 때 작성기/마법사를 사용하는 것입니다.

양식의 개체 (텍스트 상자, cmb, 목록) 등을 "On Click"방법이있는 테이블에 연결하여 저장 단추를 사용할 수있는 방법을 배우고 싶습니다. 기본적으로 그게 다야!

+0

불명의 점 사과드립니다. 이 양식에는 여러 테이블을 업데이트하는 수많은 입력이 있으며 사용하는 메소드는 버튼에 있습니다. SQL을 실행하여 ID 번호가 처음으로 할당 된 레코드가 없는지 확인한 다음 모든 테이블을 확인합니다. 값을 입력하면 SQL 업데이트를 통해 해당 테이블에 정보가 입력됩니다. 나는 그것을 만들지는 않았지만 폼에 추가 데이터 필드를 추가하는 임무를 맡았습니다. (궁극적으로 추가 리포팅 기능을위한 것입니다 ...) 저에게 너무 많은 vb가 있습니다. 초보자가 무엇인지 이해하고 있습니다. . – Justin

+0

그래서 나는이 양식의 적절한 지점에 작은 버튼을 추가 할 훌륭한 아이디어를 내놓았습니다. 추가 할 필요가있는 세 가지 항목으로 다른 작은 양식을 열었을 것입니다. 그래서 지금은 사용자가 정보를 입력 할 때 적절한 POC_ID 번호에 따라 해당 필드의 테이블로 이동하도록 SQL 프로 시저를 복제하는 방법에 대해 궁금합니다. 예를 들어 술은 .... 내가 빈 양식을 만들고, 텍스트 상자를 입력하고, 이름을 txt1-txt3으로 지정하고, 단추를 양식에 추가한다고 가정 해 보겠습니다. 내가 무엇을 찾고있는 vba는 "클릭"....에서 사용할 수 있습니다. – Justin

+0

해당 텍스트 상자에 원하는 정보를 입력란에 표시하려면 해당 필드의 원하는 ID (자음 번호 ID) 내가 원하는 .... ... 내가 불분명하면 다시 미안하다. 도움을 주셔서 감사합니다. – Justin

답변

1

아직도 잘 모르겠습니다. 귀하의 상황을 이해하고 있지만 대답의 개요를 알려 드리겠습니다. 윤곽선이 충분히 가깝지 않으면 내가 어디로 갔는지 설명하십시오.

부모 양식 인 frmParent에는 frmParent에 현재 표시된 레코드의 추가 필드 3 개에 대한 값을 입력 할 자식 폼 (frmChild)을 여는 명령 단추 (cmdMoreFields)가 있습니다. 사용자가 frmChild (As_Name, As_Date 및 As_Method라는 텍스트 상자 컨트롤에서)에 값을 입력하면 명령 단추 (cmdSave)를 클릭하여 해당 값을 테이블 POC의 필드 (이름, 날짜 및 메서드)에 저장합니다. frmChild를 닫습니다. 또한 frmParent에는 현재 레코드의 기본 키 (테이블 POC의 필드 pk_field) 값을 보유하는 텍스트 상자 (txtPk_field)가 포함되어 있습니다.

그러나 txtPk_field에 어떤 필드/컨트롤을 사용하고 있는지 확실하지 않으며 현재 레코드가 아직 저장되지 않은 경우 그 값을 사용할 수 있는지 의심 스럽습니다. (frmChild에) cmdSave의 "클릭"이벤트에서

If Me.Dirty Then Me.Dirty = False 
DoCmd.OpenForm "frmChild" 

를 유사한 코드를보십시오 : 그래서, 나는 이벤트 "클릭의"cmdMoreFields이 코드를 제안합니다

Dim strSql As String 
strSQL = "UPDATE POC SET [Name] = """ & Me.As_Name & """, [Date] =#" _ 
    & Me.As_Date & "#, Method = """ & Me.As_Method & """ WHERE pk_field = " _ 
    & Forms!frmParent.txtPk_field & ";" 
Debug.Print strSql 
CurrentDb.Execute strSql, dbFailOnError 
DoCmd.Close 

이 방법이 효과가 있다면, Remou가 제안한 것처럼 Openargs를 사용하여 pk_field 값을 frmChild에 전달하는 것을 고려하십시오.

참고 : 이름에 텍스트, 날짜/시간 및 메서드가 텍스트 인 것으로 가정했습니다. 데이터 유형이 내 추측과 다른 필드의 경우 UPDATE 문 분리.자를 변경해야합니다.

+0

정말 고마워요 !! 이것이 내가 정확히 무엇을 찾고 있었는지 믿기 때문에 당신이 나의 나쁜 explaination에 집착 해 주셔서 감사합니다 !! 정말 감사! – Justin

+0

실제로 내가! (당신이 그것을 넣어) frmParent로 명시 적 옵션 희미한 PreviousForm처럼 세트 PreviousForm = 형태의 새로운 양식을 설정 frmParent me.POC_ID = PreviousForm.POC_ID 이었고, 이것은 ID를 통해 수행되었다 내게 텍스트 상자에 숫자. 나는이 ID를 위해 테이블에 다음 텍스트 상자의 정보를 삽입하는 SQL을 알지 못했습니다. # 이 작업을 (상대적으로) 작동 시키려면 기다릴 수 없습니다! 고마워! – Justin

2

DoCmd의 OpenForm 메서드는 Where 및 Openargs를 비롯한 여러 인수를 허용합니다. 당신은 이것들을 이용할 수 있습니다.

그러나 두 테이블에서 동일한 정보를 유지하는 것처럼 보이고 명시된 이유가없는 것으로 보이는 점에서 테이블 디자인에 문제가있는 것 같습니다. http://www.r937.com/relational.html을 읽으셨습니까?

필자가 원하는 디자인에는 메인 테이블의 외래 키인 숫자 필드 POC_ID 만 포함되었을 가능성이 높습니다.