ai e uma boa pergunta chefe, nao sei se o dlookup funciona no mysql, mas enquanto eu pesquisava sua duvida eu vi um comentario dizendo que funciona
so nao sei como.
o jeito que eu faço para resolver esse tipo de necessidade talvez possa te ajudar, eu faço assim nos meus formulários:
para vc entender vou ter q mostrar uma estrutura basica de tabela.
tabela 1(Cliente)
cdCliente - numeração automatica
nomeCliente - texto
Rg - texto
cpf - texto
...
tabela 2(venda)
cdVenda - numeração automatica
cdCliente - numero
valorVenda - moeda
...
no formulario de venda
1 - eu vou ter os campos normalmente, mas a magica esta no campo cdCliente
ele eu converto para comboBox(botao direito > alterar para > caixa de combinação).
2 - na opção "Fonte de Controle"(propriedades > guia dados) eu faço uma consulta sql. nesse exemplo seria assim:
select cdCliente, nmCliente, rg, cpf from Cliente order by nmCliente
com isso seu campo cdCliente tera 4 colunas, o index começa com 0, ou seja, cdcliente e o index 0, nmCliente é o index 1, e assim sucessivamente.
3 - essa parte e a mais importante, na opção "Coluna acoplada"(propriedades > guia dados)
tem que ser informado de qual coluna vc deseja guardar a informação. nesse caso e a primeira coluna(cdCliente).
para o cliente ira mostrar o nome do cliente, mas para sua tabela sera guardado o valor do id do cliente. legal né
então nesse campo(Coluna Acoplada) digite 1
4 - na opção "Número de Colunas"(Propriedades > guia Formato) informe a quantidade de colunas da nossa consulta, no nosso caso e 4.
5 - na opção "Largura das colunas"(Propriedades > guia Formato) informe o tamanho de cada coluna do combobox separado por ";"
para o usuario final seria interessante ele apenas ver o nome do cliente, pq nesse caso ele nao precisa ver id, cpf e rg na combobox,
esses valores pode ser salvos de outra forma que irei mostrar mais abaixo. nesse caso a largura dos campos seria assim:
0;5;0;0
resgatando o restante dos campos:
vamos supor que vc tem o campo rg(esse campo nao faz parte da tabela venda, por tanto ele e um campo não acoplado) do formulario venda.
vc pode colocar o seguinte codigo no evento apos atualizar da combobox que acabamos de criar:
- Código:
if not isnull(cdCliente) then
rg = cdCliente.Column(2) '2 e o indice do campo na consulta que criamos no passo 1
else
rg = ""
endif
issso funciona bem para tabelas relacionadas, agora se vc quer um valor de uma tabela que tem nada a ver com as outras, eu uso uma função
que criei usando a mesma ideia do dlookup.
- Código:
Function getValorTabela(nmTabela As String, nmCampo As String, criterio As String) 'nmCampo e o nome do campo que vc deseja pegar o valor
Dim rs As Recordset
Set rs = CurrentDb().OpenRecordset("SELECT " & nmCampo & " from " & nmTabela & " where " & criterio)
'verifica se tem dados
If rs.RecordCount > 0 Then
getValorTabela = rs.Fields(nmCampo)
Else
getValorTabela = Null
End If
Set rs = Nothing
End Function
'para usar no nosso caso para pegar o cpf
cpf = getValorTabela("Cliente","cpf","cdCliente = 2"