Convidado 12/1/2014, 21:54
Vamos la Amigão.
Primeiro, não consegui descobrir o porque... Porém o access está dando erro mesmo se eu utilizar a leitura do conteúdo de uma das caixas texto em uma MsgBox, por exemplo:
MsgBox Me.tx1
Era para exibir em mensagem o conteúdo da caixa texto tx1, porém ao executar o código gera erro grave no access e o fecha.
Para resolver isto além de carregar as caixas textos carrego também uma matriz com o nome da caixa texto e o o numero do prontuário para ai sim extrair o seu conteúdo... Exemplo:
Ao carregar a caixa texto tx1, Carrego a Matriz K na sua posição 1 com o prontuário da caixa texto tx1...
Portanto se tx1 = 98, k(1) = 98
se tx2 = 737 k(2) = 737
Utilizo portanto a Matriz ao invés da caixa texto no Dlookup para abrir o formulário. Criei uma sub para facilitar este processo
==================================================
Nas declarações do módulo do form:
Option Compare Database
Dim K
No Evento ao carregar do Form (observe que está com código para pintar o controle de acordo com o acs):
Dim X As Integer
Dim Rs As DAO.Recordset
Dim StrSQL As String
Dim nCount As Long
Dim StrCor As Long
StrSQL = "SELECT Tbl_Titular.CódigoTitular, Tbl_Titular.Prontuário FROM Tbl_Titular ORDER BY Tbl_Titular.Prontuário"
Set Rs = CurrentDb.OpenRecordset(StrSQL)
Rs.MoveLast: Rs.MoveFirst
'Redimensiono a Matriz para conter o número de registros do recordset
ReDim K(Rs.RecordCount)
'Utilizo o Loop com o For para carregar as caixas textos e a Matriz
For X = 1 To Rs.RecordCount
Me("tx" & X) = Rs!Prontuário
K(X) = CLng(Rs!Prontuário)
Rs.MoveNext
StrCor = Nz(DLookup("cpCor", "tbl_ACS", "CódigoACS = '" & DLookup("CódigoACS", "Tbl_Titular", "Prontuário= " & K(X) & "") & "'"), "0")
Me("tx" & X).ForeColor = StrCor
Next
Crie uma sub:
Sub AbreForm()
Dim X
Dim NumPront As Long
X = CLng(Mid(Me.ActiveControl.Name, 3, Len(Me.ActiveControl.Name)))
NumPront = DLookup("CódigoTitular", "Tbl_Titular", "Prontuário= " & K(X) & "")
DoCmd.OpenForm "Fml_CadastroFamilias", , , "CódigoTitular= " & NumPront & ""
End Sub
No Comando Click da caixa texto apenas:
Me.AbreForm
Para o colorimento da caixa texto de acordo com o ACS
Crie na tabela Tbl_Acs um campo e nomeie de cpCor
Neste colocará a cor que deseja que tenha o ACS...
Esta coloração será expressa em números de acordo com a última coluna do .doc em anexo
https://dl.dropboxusercontent.com/u/26441349/RGB_VBA.rar
Portanto ao abrir o formulário na parte do código no evento ao carregar expresso abaixo, carregará em uma variável a cor do ACS e pintará o controle de acordo com o ACS (O código abaixo é apenas para sua compreensão do processo e está embutido no código acima que carrega os controles)
StrCor = Nz(DLookup("cpCor", "tbl_ACS", "CódigoACS = '" & DLookup("CódigoACS", "Tbl_Titular", "Prontuário= " & K(X) & "") & "'"), "0")
Me("tx" & X).ForeColor = StrCor