CONSULTA NO BANCO ACCESS USANDO DATA

USUARIO.EXCLUIDOS 06/12/2006 16:02:17
#188369
ai pessoal... consegui.. eu fiz o seguinte..
    Data1.RecordSource = "select Clientes.codigo_cliente, Clientes.Nome, Endereco,bairro, Cidades.nome , (select top 1 Telefone from Telefones where telefone like '*" & mskBuscarTelefone.Text & "*' and telefones.codigo_cliente = Clientes.codigo_cliente) as Telefone from Clientes, cidades where status = '1' and clientes.nome like '*" & Replace(txtBuscarNome.Text, "'", "") & "*' and endereco like '*" & Replace(txtBuscarEndereco.Text, "'", "") & "*' and bairro like '*" & Replace(txtBuscarBairro.Text, "'", "") & "*' and Clientes.codigo_cidade like '*" & txtBuscarCodCidade & "*' And Cidades.codigo_cidade = clientes.codigo_cidade order by Clientes.nome"


mas o problema é que agora nao consigo pesquisar só por telefone.. ele nao me retorna nada.. como ajustar??
USUARIO.EXCLUIDOS 06/12/2006 16:23:12
#188381
??
USUARIO.EXCLUIDOS 06/12/2006 23:35:56
#188441
??? ai pessoalll.. me ajudem...
USUARIO.EXCLUIDOS 08/12/2006 00:20:54
#188712
,,,
USUARIO.EXCLUIDOS 08/12/2006 02:25:28
#188728
Resposta escolhida
Lendo o seu problema entendo que o que procura é um RecordSet Hierárquico.

Algo semelhante ao Acces onde se Existem Itens relacionados ao registro eles ficariam dispostos em uma "subconsulta" e se o user clicar no + estes registros seriam mostrados.

Para fazer isto precisamos de 2 coisas:

A- Um recordset que permita isto (Hierárquico)

A- Um controle que Mostre os dados Hierarquicamente ( O MSHFlexgrid ) tem a vantagem de a gente poder utilizar uma sintaxe do tipo:

Set MSHFlexgrid.RecordSet = RS

Ou seja , sem DataControl.

Para abrir um RS Hierárquico:

Precisamos de uma Conexão Especial ..
Cnn.Open "Provider=MSDataShape;Data Provider=Microsoft.Jet.OLEDB.4.0;data source= " & DBCAD & "\Geral.mdb;Persist Security Info=False;Jet OLEDB:Database Password=" & PASSWORD

StringSQL Especial ...
strSQL = "SHAPE {SELECT id_pedido as Pedido, nm_cliente + ' (' + cnpj_cliente + ')' as Cliente, ds_comprador as Comprador, dt_pedido as Data, vl_total as Valor FROM pedido p INNER JOIN cliente c"
strSQL = strSQL & "} APPEND ({SELECT id_pedido as Pedido, item & ' - ' & ds2_produto as Descrição, Quantidade , Unidade, Valor FROM detalhe_pedido dp ORDER BY item"
strSQL = strSQL & "} RELATE Pedido TO Pedido)"

(Atenção, Esta string SQL NAO está completa como no programa ... apenas coloquei a parte que interessava)

Agora basta fazer:
Set fg_ped.Recordset = RS

Moleza, não axam ?
USUARIO.EXCLUIDOS 08/12/2006 02:33:44
#188729
Atenção quanto ao meu último post.

Caso sua tabela cliente tenha muitos registros e na média cada um tenha 5 telefones em média seu RecordSet e seu FlexGrid Podem apresentar grande lentidão e consumo de rede .

Neste caso seria melhor a exibição dos registros da cliente (De preferencia num RS paginado) em um ListView ou algo parecido com um botão de consultar onde pega os registros da telefone do item selecionado e exibe Just-In-Time.
USUARIO.EXCLUIDOS 08/12/2006 02:47:15
#188730
Quanto a sua ultima duvida, Entenda que vc tem 2 Consultas
(select top 1 Telefone from Telefones where telefone like '*" & mskBuscarTelefone.Text & "*' and telefones.codigo_cliente = Clientes.codigo_cliente)

na de dentro vc coloca o Telefone na clausula Where e 2º vc não coloca nenhum WHERE

Outra coisa, sua Sintaxe SQL ta esquisita, vc juntando 2 tabelas precisa informar o que liga as duas, por exemplo cliente.id_cidade = cidade.id_cidade senão a consulta se perde.

Mas tem jeito melhor de fazer o que vc ta querendo e a Forma é com RS.Hierárquico ou com :

"SELECT DISTINCT Clientes.codigo_cliente, Telefone.Telefones FROM cliente.id_cliente = telefones.id_cliente WHERE id_cliente=Algo" etc ...

Outra coisa:

cliente.id_cliente e telefones.id_cliente precisam estar relacionados no Banco.


USUARIO.EXCLUIDOS 08/12/2006 02:50:04
#188731
Saco, errei o principal ...

"SELECT DISTINCT Clientes.codigo_cliente, Telefone.Telefones FROM cliente, telefones WHERE cliente.id_cliente = telefones.id_cliente" etc ...
Página 2 de 2 [18 registro(s)]
Tópico encerrado , respostas não são mais permitidas