INNER JOIN
Pessoal boa noite, estou fazendo uma busca em uma tabela e gostaria que, se houvesse compras para o registro
ele mostrasse, o problema é que se não houver compras ele não busca, claro que sei que o erro está na consulta
e por isso estou aqui, segue código:
Eu pretendo exibir as compras em uma listview separada, no momento já estou fazendo isso com
o envento Click da listview, só que toda vez que um registro é selecionado há uma consulta ao banco de dados
e sei que isso pode ser evitado.
Um dia pretendo trabalhar com banco de dados MySql ou qualquer outro online, por isso estou aprendendo
a evitar ao maximo ficar abrindo e fechando com consultas desnecessárias.
Desde já agradeço a todos pela atenção.
ele mostrasse, o problema é que se não houver compras ele não busca, claro que sei que o erro está na consulta
e por isso estou aqui, segue código:
rs.Open [Ô]select tblCad.*,tbPedidos.Codcli from tblCad inner join tbPedidos on tblCad.Codigo=tbPedidos.CodCli where [Ô] & Campo & [Ô] Like[ô][Ô] & Replace(TEXTO, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & [Ô]%[ô] Order by SIT Asc, Prev_Comp, Nome[Ô], db, 3, 3
Eu pretendo exibir as compras em uma listview separada, no momento já estou fazendo isso com
o envento Click da listview, só que toda vez que um registro é selecionado há uma consulta ao banco de dados
e sei que isso pode ser evitado.
Um dia pretendo trabalhar com banco de dados MySql ou qualquer outro online, por isso estou aprendendo
a evitar ao maximo ficar abrindo e fechando com consultas desnecessárias.
Desde já agradeço a todos pela atenção.
Você faz a pesquisa normalmente. Antes de buscar qualquer valor no recordset, você verifica se ele possui registros. Caso não possua, as propriedades EOF e BOF estarão ambas com valor [Ô]true[Ô]. Então basta testar:
if rs.EOF = True and rs.BOF = True
[ô]mensagem dizendo que não tem registros
else
[ô]faz o que quiser pois tem registros a consulta.
end if
E mais uma coisa bem importante:
Bancos de dados mais [Ô]parrudos[Ô] como o MySQL, não são necessariamente para serem usados de forma online. Aliás, deixar um banco de dados online com portas abertas publicamente, é bem arriscado, pois existem ataques bem especializados para derrubar seu banco. E acredite a mulecada derruba só pela diversão. O mais apropriado, é usar uma WebAPI e isso implicaria em um [Ô]upgrade[Ô] para .NET, coisa que já vi que você já deu uma olhada, ainda que por cima. Garanto 100%, que você vai gostar MUITO mais de .NET que do VB6/VBA que está usando agora. Vai por mim, quanto antes você migrar, melhor. Sei que você não trabalha com programação em tempo integral, mas com total e absoluta certeza, .NET é muito, mas muito melhor de fazer praticamente tudo que você faz. Coisas que você demorar dias e até semanas com VB6, fazendo em .NET, leva literalmente minutos e fica mais rápido, mais [Ô]aberto[Ô] à melhorias e muito mais simples de ser lido como código.
Bancos de dados mais [Ô]parrudos[Ô] como o MySQL, não são necessariamente para serem usados de forma online. Aliás, deixar um banco de dados online com portas abertas publicamente, é bem arriscado, pois existem ataques bem especializados para derrubar seu banco. E acredite a mulecada derruba só pela diversão. O mais apropriado, é usar uma WebAPI e isso implicaria em um [Ô]upgrade[Ô] para .NET, coisa que já vi que você já deu uma olhada, ainda que por cima. Garanto 100%, que você vai gostar MUITO mais de .NET que do VB6/VBA que está usando agora. Vai por mim, quanto antes você migrar, melhor. Sei que você não trabalha com programação em tempo integral, mas com total e absoluta certeza, .NET é muito, mas muito melhor de fazer praticamente tudo que você faz. Coisas que você demorar dias e até semanas com VB6, fazendo em .NET, leva literalmente minutos e fica mais rápido, mais [Ô]aberto[Ô] à melhorias e muito mais simples de ser lido como código.
Kerplunk, mais uma vez sou muito grato por sua atenção...
Minha ideia era exibir todos os dados de clientes que tenham ou
não compras cadastradas, mas você me deu uma ideia que vou
tentar amadurecer aqui...
Quanto ao .NET, só tenho boas experiencias e é algo que está em
meus planos para estudos futuros.
Vou tentar o C#, estou acompanhando os cursos do professor Gustavo
Guanabara que são quase tão bons quanto os do professor Mário Andrade
(o quase é porque eles são gratuitos e por isso não oferece suporte ou algo mais aprofundado, mas dá pra aprender muito)
e estou estudando POO em PHP pois é paracido com o C#.
Minha ideia era exibir todos os dados de clientes que tenham ou
não compras cadastradas, mas você me deu uma ideia que vou
tentar amadurecer aqui...
Quanto ao .NET, só tenho boas experiencias e é algo que está em
meus planos para estudos futuros.
Vou tentar o C#, estou acompanhando os cursos do professor Gustavo
Guanabara que são quase tão bons quanto os do professor Mário Andrade
(o quase é porque eles são gratuitos e por isso não oferece suporte ou algo mais aprofundado, mas dá pra aprender muito)
e estou estudando POO em PHP pois é paracido com o C#.
Na verdade entendendo o POO, qualquer linguagem fica praticamente tudo a mesma coisa. PHP, C#, VB, Delphi, F#, Java, C++, fica tudo praticamente a mesma coisa. Tem vezes que nem se nota que linguagem está escrevendo.
Melhor ainda, comecei com C# mas vi que o PHP é quase a mesma coisa, POO é fundamental nos dias
de hoje, mas não adianta querer dominar o mundo, prefiro ser [Ô]especialista[Ô] em uma ou duas linguagens....
de hoje, mas não adianta querer dominar o mundo, prefiro ser [Ô]especialista[Ô] em uma ou duas linguagens....
Aà é que está o engano. Em se tratando de programação, por incrÃvel que pareça, não se estuda linguagem, mas sim conceitos. é o erro mais comum entre quem tem pouco domÃnio de conceitos. Uma analogia bem simples é com lÃnguas faladas. Espanhol, português e italiano, são todas lÃnguas oriundas predominantemente do latim vulgar. Então dominando latim vulgar, você terá uma facilidade maior para domÃnio de todas as lÃnguas oriundas dessa. Você estuda conceitos, como a lÃngua funciona e as demais vem meio que [Ô]de carona[Ô].
Jorge.
Vi seu problema e eu normalmente uso o LEFT JOIN ao invés de INNER JOIN.
Inner Join, eu só uso onde eu tenho certeza que existe informações relacionadas entre tabelas. No geral faço uso do LEFT JOIN trato da informação apresentada da forma que eu achar melhor.
No seu caso eu alteraria o select:
De:
rs.Open [Ô]select tblCad.*,tbPedidos.Codcli from tblCad inner join tbPedidos on tblCad.Codigo=tbPedidos.CodCli where [Ô] & Campo & [Ô] Like[ô][Ô] & Replace(TEXTO, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & [Ô]%[ô] Order by SIT Asc, Prev_Comp, Nome[Ô], db, 3, 3
Para:
rs.Open [Ô]select tblCad.*,tbPedidos.Codcli from tblCad left join tbPedidos on tblCad.Codigo=tbPedidos.CodCli where [Ô] & Campo & [Ô] Like[ô][Ô] & Replace(TEXTO, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & [Ô]%[ô] Order by SIT Asc, Prev_Comp, Nome[Ô], db, 3, 3
Tente isso e veja o resultado.
[]s
Vi seu problema e eu normalmente uso o LEFT JOIN ao invés de INNER JOIN.
Inner Join, eu só uso onde eu tenho certeza que existe informações relacionadas entre tabelas. No geral faço uso do LEFT JOIN trato da informação apresentada da forma que eu achar melhor.
No seu caso eu alteraria o select:
De:
rs.Open [Ô]select tblCad.*,tbPedidos.Codcli from tblCad inner join tbPedidos on tblCad.Codigo=tbPedidos.CodCli where [Ô] & Campo & [Ô] Like[ô][Ô] & Replace(TEXTO, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & [Ô]%[ô] Order by SIT Asc, Prev_Comp, Nome[Ô], db, 3, 3
Para:
rs.Open [Ô]select tblCad.*,tbPedidos.Codcli from tblCad left join tbPedidos on tblCad.Codigo=tbPedidos.CodCli where [Ô] & Campo & [Ô] Like[ô][Ô] & Replace(TEXTO, [Ô][ô][Ô], [Ô][ô][ô][Ô]) & [Ô]%[ô] Order by SIT Asc, Prev_Comp, Nome[Ô], db, 3, 3
Tente isso e veja o resultado.
[]s
Entendendo sobre Inner Join, Right Join, Left Join, etc.
[txt-color=#0000f0]Precisando de um Sistema de Gestão Educacional?[/txt-color]
Desenvolvido em VB.NET + SQL Server + Crystal Reports
Conheça nossa Solução: www.cjsystem.com.br
[txt-color=#0000f0]Precisando de um Sistema de Gestão Educacional?[/txt-color]
Desenvolvido em VB.NET + SQL Server + Crystal Reports
Conheça nossa Solução: www.cjsystem.com.br
[txt-color=#0000f0]DUMMIES[/txt-color], obrigado pela dica, até o momento usar o Inner Join já
foi um grande avanço, quanto mais estudo mais vejo que tenho que
estudar mais. Vou testar aqui e postarei o resultado.
[txt-color=#0000f0]JCM0867 [/txt-color]obrigado pela ilustração, farei bom proveito dela.
foi um grande avanço, quanto mais estudo mais vejo que tenho que
estudar mais. Vou testar aqui e postarei o resultado.
[txt-color=#0000f0]JCM0867 [/txt-color]obrigado pela ilustração, farei bom proveito dela.
[txt-color=#0000f0]DUMMIES[/txt-color] muito obrigado por sua cooperação,
funcionou perfeitamente.
funcionou perfeitamente.
Tópico encerrado , respostas não são mais permitidas