CONSULTA ENTRE 2 TABELAS

TLOUREIRO82 13/08/2012 14:36:09
#407846
Prezados, tenho o seguinte código

Dim DA As New OleDb.OleDbDataAdapter([Ô]select EMPREGADO.MATRICULA, EMPREGADO.NOME, EMPREGADO.TURMA, EMPREGADO.HORARIO, SUM(APONTA.CALCULO2) AS APONTA.calculo2, from EMPREGADO, APONTA WHERE EMPREGADO.MATRICULA = APONTA.MATRICULA AND EMPREGADO.TURMA LIKE [ô][Ô] & TURMA & [Ô][ô] AND EMPREGADO.HORARIO LIKE [ô][Ô] & HORARIO & [Ô][ô] AND APONTA.DATA BETWEEN # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # And # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # GROUP BY EMPREGADO.MATRICULA, EMPREGADO.NOME, EMPREGADO.TURMA, EMPREGADO.HORARIO[Ô], conexao)

São 2 Tabelas EMPREGADO E APONTA. O que preciso é:
Tabela EMPREGADO (MATRICULA, NOME, TURMA, HORARIO)
Tabela APONTA(MATRICULA, CALCULO2)

A linha acima é um código para [Ô]pegar[Ô] as matriculas do banco EMPREGADO e buscar na tabela APONTA e somar o campo (calculo2). Está dando erro de SELECT
TLOUREIRO82 13/08/2012 16:45:29
#407860
Simplificando... tenho 2 tabelas
EMPREGADO com os campos (MATRICULA, NOME, TURMA, HORARIO)
APONTA com os campos (MATRICULA, CALCULO)

O que não estou conseguindo:

Preencher uma Listview com as seguintes informações consolidadas:

Matricula Nome Turma Horario Calculo(somatorio da tabela APONTA)


A minha dificuldade está na construção do SELECT
ALEVALE 13/08/2012 17:22:32
#407864
Resposta escolhida
Select E.Matricula,E.Nome,E.Turma,E.Horario,A.Aponta from EMPREGADOS E RIGHT OUTER JOIN APONTA A on E.MATRICULA=A.MATRICULA

[ô]SE FOR PRA SOMAR A HORA DIRETO DA TABELA
Select Sum(DateDiff(n,horai, horaf)) / 60 As Horas_Soma,
Sum(DateDiff(n,horai, horaf)) % 60 As Minutos_Soma,
From #tabela -- caso passe de 24 horas

Fonte:http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/0dcaeaac-17d3-4ede-a962-0ac3abeb0be8/
TLOUREIRO82 14/08/2012 09:46:55
#407898
Alevane Obrigado pelo apoio... mas continuo no erro... na minha tabela o campo CALCULO2 já é a diferença, sendo assim, apenas somar todas as ocorrencias da matricula.

Não conseguir encaixar as Where de turma, horario e data (dia requerido)... Usando apenas uma tabela eu consigo. O objetivo é mostrar os empregados, conforme filtros, que estão apontando as horas corretamente. Por isso utilizo a tabela de EMPREGADOS, pois nela estão todos. Minha saída é a listview... abaixo todo meu código que estou tentando fazer para melhor analise.

Dim DA As New OleDb.OleDbDataAdapter([Ô]Select E.Matricula,E.Nome,E.Turma,E.Horario,A.APONTA from EMPREGADO E RIGHT OUTER JOIN APONTA A on E.MATRICULA = A.MATRICULA GROUP BY E.MATRICULA, E.NOME, E.TURMA, E.HORARIO[Ô], conexao) [ô] ESTÁ FALTANDO OS FILTROS
Dim DS As New DataSet

DS.Clear()

DA.Fill(DS, [Ô]EMPREGADO[Ô])
ListView1.Items.Clear()

On Error Resume Next

For i = 0 To DS.Tables([Ô]EMPREGADO[Ô]).Rows.Count - 1

ListView1.Items.Add(DS.Tables([Ô]EMPREGADO[Ô]).Rows(i)([Ô]MATRICULA[Ô]))
ListView1.Items(i).SubItems.Add(DS.Tables([Ô]EMPREGADO[Ô]).Rows(i)([Ô]NOME[Ô]))
ListView1.Items(i).SubItems.Add(DS.Tables([Ô]EMPREGADO[Ô]).Rows(i)([Ô]TURMA[Ô]))
ListView1.Items(i).SubItems.Add(DS.Tables([Ô]EMPREGADO[Ô]).Rows(i)([Ô]HORARIO[Ô]))
ListView1.Items(i).SubItems.Add(DS.Tables([Ô]EMPREGADO[Ô]).Rows(i)([Ô]CALCULO2[Ô]))

NEXT
TLOUREIRO82 14/08/2012 10:35:29
#407905
Consegui dar um passo.... as informações estão aparecendo de acordo com o select abaixo mas falta agrupar e aparecer os empregados que não estão zerados

Dim DA As New OleDb.OleDbDataAdapter([Ô]Select E.Matricula,E.Nome,E.Turma,E.Horario,A.calculo2 from EMPREGADO E RIGHT JOIN APONTA A on E.MATRICULA = A.MATRICULA WHERE DATA BETWEEN # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # And # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # AND E.TURMA LIKE [ô][Ô] & TURMA & [Ô][ô] AND E.HORARIO LIKE [ô][Ô] & HORARIO & [Ô][ô][Ô], conexao)
TLOUREIRO82 14/08/2012 11:28:59
#407912
Mais um passo... consegui agrupar... agora só me resta aparecer os empregados que estão [Ô]nulos[Ô]... Talvez o erro está no select e não estou enxergando... alguem puder me ajudar

Dim DA As New OleDb.OleDbDataAdapter([Ô]select SUM(A.CALCULO2) AS CALCULO2,E.Matricula,E.Nome,E.Turma,E.Horario FROM EMPREGADO E LEFT JOIN APONTA A on E.MATRICULA = A.MATRICULA WHERE DATA BETWEEN # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # And # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # AND E.TURMA LIKE [ô][Ô] & TURMA & [Ô][ô] AND E.HORARIO LIKE [ô][Ô] & HORARIO & [Ô][ô] GROUP BY E.MATRICULA, E.NOME, E.TURMA, E.HORARIO[Ô], conexao)
TLOUREIRO82 14/08/2012 11:34:12
#407913
Citação:

:
Select E.Matricula,E.Nome,E.Turma,E.Horario,A.Aponta from EMPREGADOS E RIGHT OUTER JOIN APONTA A on E.MATRICULA=A.MATRICULA

[ô]SE FOR PRA SOMAR A HORA DIRETO DA TABELA
Select Sum(DateDiff(n,horai, horaf)) / 60 As Horas_Soma,
Sum(DateDiff(n,horai, horaf)) % 60 As Minutos_Soma,
From #tabela -- caso passe de 24 horas

Fonte:http://social.msdn.microsoft.com/Forums/pt-BR/520/thread/0dcaeaac-17d3-4ede-a962-0ac3abeb0be8/




Mais um passo... consegui agrupar... agora só me resta aparecer os empregados que estão [Ô]nulos[Ô]... Talvez o erro está no select e não estou enxergando... alguem puder me ajudar

Dim DA As New OleDb.OleDbDataAdapter([Ô]select SUM(A.CALCULO2) AS CALCULO2,E.Matricula,E.Nome,E.Turma,E.Horario FROM EMPREGADO E LEFT JOIN APONTA A on E.MATRICULA = A.MATRICULA WHERE DATA BETWEEN # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # And # [Ô] & Format(CDate(Tinicio.Text), [Ô]MM/dd/yyyy[Ô]) & [Ô] # AND E.TURMA LIKE [ô][Ô] & TURMA & [Ô][ô] AND E.HORARIO LIKE [ô][Ô] & HORARIO & [Ô][ô] GROUP BY E.MATRICULA, E.NOME, E.TURMA, E.HORARIO[Ô], conexao)
ALEVALE 14/08/2012 12:20:20
#407918
Bom eu costumo antes de executar as query testa-las diretamente no SQL para ver o resultado depois implemento no código.
Começe simplificando a query extraia somente o nome, matricula e soma das horas depois começe com os filtros.

Dúvidas:
1- Entre as datas INICIO e FIM existem colaboredores para esse filtro com valores [ô]NULOS[ô] ?
Por isso falei de tirar os filtros inicialmente.

2 - O cadastro de colabores matriculas estão corretos nas 2 tabelas, verifique espaços em ambos os lados.
TLOUREIRO82 14/08/2012 13:42:00
#407922
Citação:

:
Bom eu costumo antes de executar as query testa-las diretamente no SQL para ver o resultado depois implemento no código.
Começe simplificando a query extraia somente o nome, matricula e soma das horas depois começe com os filtros.

Dúvidas:
1- Entre as datas INICIO e FIM existem colaboredores para esse filtro com valores [ô]NULOS[ô] ?
Por isso falei de tirar os filtros inicialmente.

2 - O cadastro de colabores matriculas estão corretos nas 2 tabelas, verifique espaços em ambos os lados.



Respostas
1 - Sim, nas datas de inicio e fim existem valores nulos dos empregados que não apontaram as horas ou turno de trabalho diferente.

2 - A tabela APONTA é montada com as informações da tabela EMPREGADO

OBS: São esses empregados com valores nulos que pretendo capturar, junto com os que possuem horas somadas para acompanhar a utilização do sistema. Com o select citado acima já estão aparecendo as matriculas, nomes e as horas somadas e agrupadas, só restando que apareça os empregados com valores nulos.
TLOUREIRO82 14/08/2012 15:02:51
#407931
Citação:

:
Bom eu costumo antes de executar as query testa-las diretamente no SQL para ver o resultado depois implemento no código.
Começe simplificando a query extraia somente o nome, matricula e soma das horas depois começe com os filtros.

Dúvidas:
1- Entre as datas INICIO e FIM existem colaboredores para esse filtro com valores [ô]NULOS[ô] ?
Por isso falei de tirar os filtros inicialmente.

2 - O cadastro de colabores matriculas estão corretos nas 2 tabelas, verifique espaços em ambos os lados.



Com esse SELECT já tenho 90% encaminhado... só não estou conseguindo colocar o filtro da data

Dim DA As New OleDb.OleDbDataAdapter([Ô]select SUM(A.CALCULO2) AS CALCULO2,E.Matricula AS MATRICULA,E.Nome AS NOME,E.Turma AS TURMA,E.Horario AS HORARIO FROM APONTA A RIGHT JOIN EMPREGADO E on E.MATRICULA = A.MATRICULA WHERE E.TURMA LIKE [ô][Ô] & TURMA & [Ô][ô] AND E.HORARIO LIKE [ô][Ô] & HORARIO & [Ô][ô] GROUP BY E.MATRICULA, E.NOME, E.TURMA, E.HORARIO ORDER BY E.NOME [Ô], conexao)
ALEVALE 14/08/2012 16:31:53
#407936
Como está o seu formato de data no banco ?
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas