COMPARACAO ENTRE TABELAS DE BANCO DE DADOS

EDULOCO 09/01/2013 08:49:16
#417032
Olá bom dia pessoal tudo bem?

Como já vim aqui algumas vezes tirar dúvidas sobre banco de dados, hoje volto novamente com uma nova dúvida, estou desenvolvendo um projetinho simples para listar todas as notas de compra que contém o item que eu desejo, o banco da loja aqui é em DBF ( infelizmente ) eu teria que relacionar duas tabelas para fazer a comparação de por exemplo número de nota e listar, ai que me surge o problema, ao listar os dados do banco que tem o produto me deparo com o seguinte problema, na coluna [Ô]nota[Ô] dessa tabela a pessoa que desenvolveu colocou para gravar o dado de duas notas em uma unica row ;s vou mostrar com imagens que acho que fica mais facil o entendimento.



Alguém tem alguma idéia de como posso relacionar os dois resultados separando ali no MP.DBF no visual basic?

Obrigado agradeço desde já
F001E 10/01/2013 00:53:08
#417085
vc ja tentou ver se o DBF tem a funcao CONCAT ?
Se tiver faca algo assim

SELECT A.NENOTA
FROM TABELA A
INNER JOIN TABELA B
ON CONCAT(MID(B.MPULNO,1,9)) = A.NENOTA

assim o MID da SELECT vai pegar o valor do campo mpulno como 0003591
EDULOCO 10/01/2013 08:48:17
#417091
Opa, boa idéia F001E, vou fazer alguns testes aqui e te dou um retorno mais tarde do que eu consegui

Obrigado por enquanto.
EDULOCO 11/01/2013 08:59:08
#417163
F001E usei a seguinte query:

oCmd.CommandText = [Ô]SELECT ne.neforn AS Fornecedor,ne.nenota AS Nota,ne.neemis AS Emissão,ne.neentr AS Entrada,ne.neincl AS Incluso,ne.nevaco AS Total FROM NE AS ne inner join MP AS mp on(MID(mp.mpulno,1,9)) = ne.nenota WHERE mp.mpprod =[ô][Ô] & txtCodProduto.Text & [Ô][ô][Ô] & [Ô]and mploja=[ô]51[ô] order by ne.neemis asc[Ô]

de certa forma funcionou, porém qualquer produto que eu coloque para listar, ele mostra no maximo 2 notas que contém o item ( o que é meio impossível pois peguei itens da loja que se compra direto ), antes de alterar dessa forma eu usava comparando as datas colunas mpulco ( ultima compra ) com a tabela de data do outro banco, porém repetia muitos resultados, mas acho que dessa maneira comparando os numeros de nota eu creio que seja o mais correto para ter 100% de aproveitamente no resultado, tem alguma idéia F001E?
F001E 12/01/2013 03:21:14
#417245
Mostra o Resultado dessa SQL pra eu ver como ficou.....
EDULOCO 14/01/2013 08:41:58
#417292
F001E tudo bem? Eu achei aqui em vez do banco MP.DBF uma outra tabela que adequou-se melhor para o que eu precisava e esta mostrando os resultados certos, nele tive que usar a tatica do MID também que você citou e problema resolvido agora uma dúvida se eu fosse unir mais uma tabela a esse projeto na mesma query como ficaria o inner join? Eu tentei dessa maneira:

 oCmd.CommandText = [Ô]SELECT fn.fnrazsoc AS Fornecedor,ne.nenota AS Nota,ne.neemis AS Emissão,ne.neentr As Entrada,ne.neincl As Incluso,ne.nevaco AS Total FROM NE AS ne INNER JOIN IE AS ie ON (MID(ie.iechav,9,17) = ne.nenota) INNER JOIN FN AS fn fn.fncodigo = (MID(ie.iechav,1,6)) WHERE ie.ieprod=[ô][Ô] & txtCodProduto.Text & [Ô][ô][Ô] & [Ô]ORDER BY ne.neentr ASC[Ô] 


o camp iechav que eu posiciono ali está assim : 0005952 000002590 onde 0005952 -> fornecedor | 000002590 -> numero da nota, queria fazer mais um inner join para comparar o código do fornecedor da tabela código com a do iechav e assim mostrar o nome da transportadora, porém está ocorrendo o seguinte erro:

ERROR [42000] [Microsoft][Driver ODBC para dBase] Erro de sintaxe (operador faltando) na expressão de consulta [ô]((MID(ie.iechav,9,17) = ne.nenota)) INNER JOIN FN AS fn (fn.fncodigo = (MID(ie.iechav,1,6)))[ô].

Nunca fiz o inner com mais de duas tabelas. ja olhei tutoriais e nenhum deu certo, agora não sei se é o jeito que estou fazendo ou se estou errando na lógica de por o código.
EDULOCO 22/01/2013 12:29:47
#417878
F001E ? ;s
Faça seu login para responder