2010-03-25 3 views
1

양식에 탭 컨트롤이 있고 두 개의 다른 탭에 저장 단추가 있습니다. 사용자가 VBA의 SQL 문을 통해 데이터를 저장하면, 새로운 레코드 (전체 양식을 클릭하는 버튼)로 이동할 때까지이 버튼을 다시 사용할 수 없도록 .enabled = false를 설정합니다.서식이 열릴 때 다른 탭에 저장 단추를 사용하십시오.

내 양식 열기 이벤트가 새 레코드를 의미하기 때문에 이러한 모든 저장 단추를 사용하는 하위 참조 할 때. 나는 그것이 존재하지 않거나 닫혀 있다고 말하는 오류가 나옵니다.

어떤 아이디어가 있습니까?

감사

편집

:

Sub Example() 
error handling 

Dim db as dao.database 
dim rs as dao.recordset 
dim sql as string 

SQL = "INSERT INTO tblMain (Name, Address, CITY) VALUES (" 

if not isnull (me.name) then 
    sql = sql & """" & me.name & """," 
else 
    sql = sql & " NULL," 
end if 

if not insull(me.adress) then 
    sql = sql & " """ & me.address & """," 
else 
    sql = sql & " NULL," 
end if 

if not isnull(me.city) then 
    sql = sql & " """ & me.city & """," 
else 
    sql = sql & " NULL," 
end if 

'debug.print(sql) 
set db = currentdb 
db.execute (sql) 

MsgBox "Changes were successfully saved" 

me.MyTabCtl.Pages.Item("SecondPage").setfocus 
me.cmdSaveInfo.enabled = false 

하고 cmdSave이 모든 경우에 발생하므로, (그런데,이 양식 언 바운드) 새로운 기록에 다시 활성화 얻을 필요가 다음에 양식이 다시 열립니다. 나는 이것을 시도했다 :

Sub Form_Open() 

me.cmdSaveInfo.enabled = true 

End Sub 

그리고 이것은 내가 위에서 말한 오류를 얻는 곳이다. 따라서 폼이 열릴 때 포커스가있는 탭도 아닙니다. 그게 내가이 오류를 얻는 이유입니까? 탭을 표시하지 않을 때 컨트롤을 활성화하거나 비활성화 할 수 있습니까?

+0

여기에 하위를 추가 할 수 있습니까? Form.Open 이벤트에서 비활성 탭의 속성에 액세스하지 못할 수도 있습니다 ... – Zoltan

+0

프로그래밍이 필요하지 않은 이유는 무엇입니까? –

답변

2

컨트롤을 조작하기 위해 양식 열기 이벤트를 사용할 수 없으며 해당 단계에서 시작되지 않았습니다. 양식로드 이벤트를 사용하십시오.

포커스를 탭에 설정하거나 컨트롤로 작업 할 때 참조 할 필요가 없습니다. 컨트롤에는 폼 고유의 이름이 있어야하며 탭을 추가해도 컨트롤은 변경되지 않습니다.

0

양식 수준 변수를 설정하는 것이 좋습니다. 부울로 booBtn_1_enabled, 부울로 booBtn_2_enabled. 필요에 따라 T 또는 F로 설정하십시오. 분명히, 양식이 열릴 때 모든 T. 이러한 변수를 검토하고 그에 따라 컨트롤을 설정하는 형태의 이벤트 (아마도 현재 이벤트,하지만 덜 자주 트리거되는 것이 바람직 하나) 선택 : 그런

Me.btnBtn_1.Enabled = booBtn_1_enabled 
Me.Repaint 

뭔가를하지만, 분명히 Me.btnBtn_1은 더 복잡 필요할 수 있습니다 참고.

+0

이것은 필요하지 않습니다. OP가 겪고있는 문제는 잘못된 이벤트를 사용하기 때문입니다. – Fionnuala

관련 문제