DICA PARA ROTINA LENTA
Citação:- O que você quer ver no grid
Por exemplo, o usuário realiza os lançamentos, porém, eu só gravo os códigos, Cod_Trator, Cod_Funcionario, Cod_Implemento, Cod_Fazenda.
Existem lançamentos que não possuem trator ou implemento, alguns só trator.
Nesse caso, eu gravo [Ô]0[Ô] no campo que não tem no lançamento.
Porém, quando eu vou apresentar no grid, eu não posso apresentar códigos para o usuário, e sim, os nomes, que estão no cadastros, OK?
Então eu saio verificando, se estiver valor [Ô]0[Ô], eu apresento [Ô]0[Ô], se existir um código, eu pego este código, vou no cadastro, verifico o nome e apresento no grid, essa foi a solução eu eu encontrei, sei que está errada, mas não consegui fazer de outra forma.
Tentei fazer um InnerJoin, mas como disse acima, quando existir um campo com valor [Ô]0[Ô], ele não apresentará no grid, mas eu preciso que apresente.
Pensei em fazer consultas direto no banco, mas creio que a consulta resultará no mesmo problema, pois campos linkados com valor [Ô]0[Ô], serão ocultos da mesma.
Não sei se estou sendo claro o bastante.
O que você quer mostrar?
Como está estrutura da tabela do que você quer mostrar?
Citação::
- O que você quer ver no grid
Por exemplo, o usuário realiza os lançamentos, porém, eu só gravo os códigos, Cod_Trator, Cod_Funcionario, Cod_Implemento, Cod_Fazenda.
Existem lançamentos que não possuem trator ou implemento, alguns só trator.
Nesse caso, eu gravo [Ô]0[Ô] no campo que não tem no lançamento.
Porém, quando eu vou apresentar no grid, eu não posso apresentar códigos para o usuário, e sim, os nomes, que estão no cadastros, OK?
Então eu saio verificando, se estiver valor [Ô]0[Ô], eu apresento [Ô]0[Ô], se existir um código, eu pego este código, vou no cadastro, verifico o nome e apresento no grid, essa foi a solução eu eu encontrei, sei que está errada, mas não consegui fazer de outra forma.
Tentei fazer um InnerJoin, mas como disse acima, quando existir um campo com valor [Ô]0[Ô], ele não apresentará no grid, mas eu preciso que apresente.
Pensei em fazer consultas direto no banco, mas creio que a consulta resultará no mesmo problema, pois campos linkados com valor [Ô]0[Ô], serão ocultos da mesma.
Não sei se estou sendo claro o bastante.
Mas vc está gravando no banco o valor zero quando um campo não tem valor?
Ao invés se usar inner join, use left/right join
Citação:Mas vc está gravando no banco o valor zero quando um campo não tem valor?
Sim, estou, não tentei gravar null, não sei qual seria o resultado nesse caso.
Citação:use left/right join
Não conhecia esse comando, seria o mesmo princÃpio?
Por exemplo, eu preciso que mesmo que o campo Cod_Trator esteja zerado, ele apareça no grid.
Nesse caso mesmo assim irá funcionar?
Muito obrigado mesmo a todos que ajudaram, um ótimo dia a todos!
[ô]Adiciona Apontamentos realizados
sSQL = [Ô]SELECT * FROM tabaptrator LEFT JOIN tabcadimplemento ON tabcadimplemento.codimplemento = tabaptrator.codimp LEFT JOIN tabcadtrator ON tabcadtrator.codtrator = tabaptrator.codtrator INNER JOIN tabcadfuncionario ON tabcadfuncionario.codfuncionario = tabaptrator.codfunc INNER JOIN tabcadfaz ON tabcadfaz.codfaz = tabaptrator.codfaz ORDER BY data DESC[Ô]
Set rs = Conexao.Execute(sSQL)
gridlancamentos.Redraw = False
Do While Not rs.EOF = True
gridlancamentos.AddItem [Ô][Ô] _
& vbTab & rs!codaptrator _
& vbTab & rs!Data _
& vbTab & rs!nomefaz _
& vbTab & rs!nomefuncionario _
& vbTab & rs!codfrota _
& vbTab & rs!codfrota
rs.MoveNext
Loop
gridlancamentos.Redraw = True
Seria isso?
Imagine que você tem essas tabelas:
Cliente: Id, Nome
Vendas: Id, IdCliente, Valor
E os dados:
Cliente:
1 - João
2 - Pedro
3 - Maria
4 - Antonio
Vendas:
1 - 1 - 10
2 - 1 - 25
3 - 4 - 16
4 - 3 - 1
5 - 3 - 9
6 - 3 - 17
7 - 6 - 29
Como exercÃcio mental, tente imaginar como ficariam as seguintes combinações:
Clientes que possuem vendas
Clientes que não possuem vendas
Clientes com vendas mais alta que 10
Vendas cujo cliente não existe(tecnicamente uma inconsistência de chave estrangeira, que é o seu caso)
Enfim, tente imaginar todas as possibilidades de combinações.
O que estou tentando fazer com você é [Ô]abstrair[Ô] seu pensamento voltado à código. Fazer você entender o que está fazendo ao invés de ficar tão focado em código, que é contraproducente.