Convidado 25/7/2012, 18:49
Outro detalhe permitente a otimização das pesquisas utilizando o Dlookup..
Obseve que na instrução que verifica se o CnpJ existe ou não...
se preenche os campos caso exista utilizano o Dlookup, da forma como está faz várias pesquisas a tabela...
Private Sub Cpf_Cnpj_BeforeUpdate(Cancel As Integer)
If DCount("Cpf_Cnpj", "tblSacados", "Cpf_Cnpj =""" & Me!Cpf_Cnpj & """") > 0 Then
'A função DCount() contou um ou mais registros existentes
If MsgBox("Sacado já cadastrado, deseja alterar?", vbYesNo, "ATENÇÂO") = vbNo Then
Me.Undo 'Limpa o campo
Else
Me.Tipo = DLookup("Tipo", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.RazãoSocial = DLookup("RazãoSocial", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Status = DLookup("Status", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Endereço = DLookup("Endereço", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Bairro = DLookup("Bairro", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Cidade = DLookup("Cidade", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Estado = DLookup("Estado", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.CEP = DLookup("CEP", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Endereço_Cob = DLookup("Endereço_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Bairro_Cob = DLookup("Bairro_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Cidade_Cob = DLookup("Cidade_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Estado_Cob = DLookup("Estado_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.CEP_Cob = DLookup("CEP_Cob", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
Me.Igual = DLookup("Igual", "tblSacados", "Cpf_Cnpj = '" & Me.Cpf_Cnpj & "'")
If Me.Igual.Value = -1 Then Me.Endereço_Cob.enabled = False
If Me.Igual.Value = -1 Then Me.Cidade_Cob.enabled = False
If Me.Igual.Value = -1 Then Me.Estado_Cob.enabled = False
If Me.Igual.Value = -1 Then Me.CEP_Cob.enabled = False
If Me.Igual.Value = -1 Then Me.Bairro_Cob.enabled = False
End If
End If
End Sub
no entanto seguindo o excelente conselho do Avelino.. Basta apenas uma pesquisa a tabela, utilizando o carregamento de varios campos concatenados em uma Array, e depois separando com o split... e faz o preenchimento dos campos com a mesma e sua posição
Ex:
Me.Campo1 = VarArray(0)
Me.Campo2 = VarArray(1)
Me.Campo3 = VarArray(2)
e assim sucessivamente.
Eis a instrção, adapte as suas necessidades:
Dim seq As String, K
seq = "[NomeEmpresa] & '|' & [cpEndereco] & '|' & [cpEndereco] & '|' & [CpBairro] & '|' & [CpCidade] & '|' & [CpCEP]&'|' & [CpTelefone]& '|' & [CpEmail] & '|' & [CpCaminhoImagem]&'|' & [CpCNPJ]"
seq = DLookup(seq, "tblEmpresa")
K = Split(seq, "|")
A variável é a K
Assim na linha de raciocínio K(0), K(1), etc... para tantos campos quantos concatenados na variável Seq
Cumprimentos.