Fórum DbGrid com duas tabela do Access #370467
14/05/2009
0
Estou utilizando um banco (Access) com duas tabela relacionadas...
TblaUsuarios // Tabela1 Campo Nome está relacionada com a tabela2
TblaEnderecos // Tabela2
TEnho que apresentar em um DbGrid o Nome (Tabela1 - CAmpo Nome) e seu respectivo Endereço(Tabela2 - Campo endereco).
Na Propriedade FielName da coluna Endereço do DbGrid inseri Nome.Endereco
Mas não esta retornando seu endereço.....
Como posso solucionar isto?
Existe alguma magica para fazer os relacionamentos(no Access)?
Grato...
Freed
Curtir tópico
+ 0Posts
14/05/2009
.lg.
Qual o relacionamento entre suas tabelas!? (chave primaria e estrangeira)
Use um [b:5ca83241f6]INNER JOIN[/b:5ca83241f6] que você vai conseguir relacionar os dados.
Qlqr coisa posta ae, que damos o help.
att,
.lg.
Gostei + 0
15/05/2009
Freed
Banco = Access
TblaUsuarios = Tabela1
Id
Nome
Sexo
Idade
TblaEnderecos = Tabela2
Id
Rua
Cidade
Estado
Os campos ´Id´ das duas tabelas estão relacionadas
With ADOQuery1 do begin Close; SQL.Clear; SQL.Add(´select TblaUsuarios.*, TblaEnderecos .*); SQL.Add(´ from TblaUsuarios ); SQL.Add(´inner join TblaEnderecos ) ; SQL.Add(´on TblaUsuarios .Id= TblaEnderecos .Cidade); open; end;
Na Propriedade FielName da coluna Endereço do DbGrid inseri TblaUsuarios .Id e nas demais colunas inseri apenas Nome, Sexo,Idade, e retornou os valores...
REsultado desejado:
Apresente no DbGrid...
Nome | Sexo | Idade | Cidade
Grato.
Gostei + 0
15/05/2009
.lg.
SELECT US.NOME, US.SEXO, US.IDADE, EN.RUA, EN.CIDADE, EN.ESTADO FROM TBLAUSUARIOS US INNER JOIN TBLAENDERECOS EN ON (EN.ID = US.ID) ORDER BY US.NOME
isso deve lhe ajudar. Desculpe o Caps. É costume do padrão que adoto.
:wink:
qualquer dúvida ou problema postae.
Abraços,
.lg.
Gostei + 0
15/05/2009
.lg.
Use o SQL dessa forma. Quando vcê for puchar as colunas no DBGrid, puxe todas e exclua as que não lhe interessar aparecer.
+1x
Att,
.lg.
Gostei + 0
15/05/2009
Freed
Vou aproveitar este tópico e postar mais uma dúvida.. (Apenas para estudo..)
tenho duas tabelas...
TblaEstoqueFrutas // Tabela1
Id - Chave primária
CodFruta
Qt
ValorUnitario
TblaCadastroFrutas // Tabela2
CodFruta
Fruta
O ´CodFruta´ esta relacionado entre as duas tabelas (Access)
Gostaria de apresentar em um DbGrid:
CodFruta | Fruta | QtTotal | PrecoMedio | Total
1º - As frutas não se repitam EX: 1 linha para Laranja
2º - O nome da fruta esta na tabela2 (TblaCadastroFrutas)
3º - QtTotal não tem campo no banco, mas retorne a soma das frutas de mesma espécie EX: some todos os registros de laranja..
4º - PrecoMedio não tem campo no banco, mas retorne o preço médio (Ignorar a quantidade) EX: ValorUnitario=3 + ValorUnitario=5 PrecoMedio = 4
5º - Total não tem campo no banco, mas retorne o total. EX: QtTotal * PrecoMedio = Total
Se tivesem que fazer algo parecido como fariam?
Grato..
Gostei + 0
15/05/2009
.lg.
Minha única questão* é se o ´preço médio´ que vc quer, se é uma média do preço.
Se for talvez isso ajude:
SELECT CF.CODFRUTA, CF.FRUTA, SUM(EF.QT) AS QTTOTAL, AVG(EF.VALORUNITARIO) AS PRECO_MEDIO, SUM(EF.QT * EF.VALORUNITARIO) AS TOTAL FROM TBLACADASTROFRUTAS CF LEFT JOIN TBLAESTOQUEFRUTA EF ON (EF.CODFRUTA = CF.CODFRUTA) GROUP BY CF.CODFRUTA, CF.FRUTA ORDER BY 1
Estou no serviço, por isso estou sem ter como testar a query, então se der errado, da um toque que eu vejo o que pode ser.
Att,
.lg.
Gostei + 0
16/05/2009
Freed
A SQL postada retorna os resultados solicitados....
Porem retorna todas frutas cadastradas na TblaCadastroFrutas (Tabela2) mesmo que a Qt da TblaEstoqueFrutas (Tabela1) seje zero( 0 ) ou seja não tem a fruta no estoque..
tentei inserir:
WHERE QTTOTAL>0 // Ocorre erro.......
WHERE EF.QT>0 // Ocorre erro.......
WHERE QT>0 // Ocorre erro.......
No PRECO_MEDIO alterei para ´ TOTAL/QTTOTAL AS PRECO_MEDIO ´ Desta forma irá apresentar o preço média proporcional a quantidade de frutas...
Se a quantidade no banco for zero( 0 ) ou não contem valor, ocorre o erro abaixo: tem alguma forma de solucionar isto?
---------------------------
Debugger Exception Notification
---------------------------
Project TEste.exe raised exception class EInvalidOp with message ´Invalid floating point operation´.
---------------------------
Break Continue Help
---------------------------
Grato..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)