UNIR OS DADOS DE 2 GRIDS E MONTAR O 3 TERCEIRO

WEBIER 11/01/2010 20:43:33
#331637
possuo 2 grid com dados de uma tabela (Grid1 e Grid2)

ambos os grid possuem os mesmos campos:

If Not IsNull(Rs!CODIGO) Then .TextMatrix(.Rows - 1, 1) = Rs!CODIGO
If Not IsNull(Rs!COD_ETAPA) Then .TextMatrix(.Rows - 1, 2) = Rs!COD_ETAPA
If Not IsNull(Rs!COD_MOTOQUEIRO) Then .TextMatrix(.Rows - 1, 3) = Rs!COD_MOTOQUEIRO
If Not IsNull(Rs!NOME) Then .TextMatrix(.Rows - 1, 4) = Rs!NOME
If Not IsNull(Rs!INICIO) Then .TextMatrix(.Rows - 1, 5) = Rs!INICIO
If Not IsNull(Rs!TERMINO) Then .TextMatrix(.Rows - 1, 6) = Rs!TERMINO
If Not IsNull(Rs!var_RESULTADO) Then .TextMatrix(.Rows - 1, 7) = CDate(Rs!var_RESULTADO)


tenho o terceiro grid chamado Grid3...

Quero relacionar os 2 grids pelos campo COD_MOTOQUEIRO e mostrar o campo var_RESULTADO do primeiro grid e do segundo grid nesse grid 3

exemplo:
GRID1:
CODIGO | COD_ETAPA | COD_MOTOQUEIRO | NOME | INICIO | TERMINO | var_RESULTADO |
1 10 3 Roberto 08:00 08:30 00:30
2 10 7 Maria 08:10 08:45 00:35
3 10 9 Silva 08:10 08:30 00:20

GRID2:
CODIGO | COD_ETAPA | COD_MOTOQUEIRO | NOME | INICIO | TERMINO | var_RESULTADO |
1 17 3 Roberto 09:00 10:35 01:35
2 17 7 Maria 09:10 10:50 01:40
3 17 9 Silva 09:10 10:20 01:10

GRID3:
| COD_MOTOQUEIRO | NOME | GRID1 | GRID2 | TOTAL ||
3 Roberto 00:30 01:35 02:05
7 Maria 00:35 01:40 02:15
9 Silva 00:20 01:10 01:30

ou seja, unir todos os 2 grid pelo campo COD_MOTOQUEIRO... logo apos o NOME coloquei na outra coluna no valor do campo var_RESULTADO do GRID1 e logo em seguida o campo var_RESULTADO do GRID2 e a ultima coluna é a soma das duas colunas var_RESULTADO daquela linha.

PS: logo acima coloquei o codigo onde localiza cada campo no grid.

Como faço isso?
ASHKATCHUP 11/01/2010 21:14:53
#331638
Resposta escolhida
Cara, não leva a mal o comentário, mas você não acha melhor TENTAR e PENSAR antes de postar?
Você está perguntando como se faz um cálculo... isso não envolve dicas de programação ou técnicas mas sim lógica, apenas lógica.

O VBMania é um forum para ajudar em dicas e não fazer o programa pra ti.
MARCELO.TREZE 12/01/2010 09:06:59
#331649
bom vou ajudar

faça um laço ou loop no primeiro grid, compare com o segundo e inclua as coincidencias de nomes no terceiro.

depois some as duas colunas de horas do terceiro e jogue na coluna total.


WEBIER 12/01/2010 10:32:32
#331655
ASHKATCHUP:

Baseado no Aurelio:
Fórum de discussão é uma ferramenta para páginas de Internet destinada a promover debates através de mensagens publicadas abordando uma mesma questão.

Se eu quizesse que programasse por mim, mandaria o projeto para ser baixado.... Sou usuario desse forum desde 2003... caso vc nao tenha [Ô]paciencia[Ô] ou [Ô]conhecimento[Ô] o suficiente para me ajudar é só ignorar-los.

Caso do dono do site ou os modeladores acharem q to perguntando demais (afinal, aqui num eh pra perguntar?) eu me retirarei do forum!

Caso contrario, usuarei bem meus 5 topicos abertos para tirar minhas duvidas....

MARCELO-TREZE:
Obrigado pela ajuda!
Bom, pensei em fazer uma sql q unisse os dos grid usando o LEFT JOIN e os campos COD_MOTOQUEIRO
será se dar certo usando o LETF JOIN nesse caso?
LUCIANOMA 12/01/2010 10:52:57
#331656
Parceiro verificando sua duvida acredito que um select da grid 1 com inner join da grid 2 seria mais indicado pois com left vc teria da primeira e nao da segunda, e verifique tb o formato dos campos hora para que o calculo aconteça sem problemas eu fiz ai uma ideia de como seria o select como nao sei qual formato vc uso nos campos inicio e termino nao coloquei nenhum tratamento
select
g1.COD_MOTOQUEIRO,g1.NOME
,GRID1 = (g1.TERMINO - g1.INICIO)
,GRID2 = (g2.TERMINO - g2.INICIO)
,TOTAL = (g1.TERMINO - g1.INICIO) + (g2.TERMINO - g2.INICIO)
from grid1 g1
inner join grid2 g2 on
g1.COD_MOTOQUEIRO = g2.COD_MOTOQUEIRO
MARCELO.TREZE 12/01/2010 11:25:55
#331658
vamos lá

os dados vem de duas tabelas?

qual a estrutura do banco de dados?
WEBIER 12/01/2010 16:52:35
#331707
fiz algumas modificações!!!

possuo uma tabela somente chamada ETAPA_PARTICIPANTES nela possui os seguintes campos:
CODIGO long
COD_MOTOQUEIRA long
NOME text
INICIO date
TERMINO date
CATEGORIA text
CILINDRADA text
ETAPA text

possuo 6 textbox:

txtCategoria1
txtCilindrada1
txtEtapa1
txtCategoria2
txtCilindrada2
txtEtapa2


preciso montrar um grid com o resultado da subtração dos campos INICIO e TERMINO com esse criterio CATEGORIA = [ô][Ô] & txtCategoria1.Text & [Ô][ô] AND CILINDRADA = [ô][Ô] & txtCilindrada1.Text & [Ô][ô] AND ETAPA = [ô][Ô] & txtEtapa1.Text & [Ô][ô]

isso eu fiz:
SQL = [Ô]Select (cdate(INICIO)-CDATE(TERMINO)) AS var_RESULTADO, * From ETAPA_PARTICIPANTES WHERE CATEGORIA = [ô][Ô] & txtCategoria1.Text & [Ô][ô] AND CILINDRADA = [ô][Ô] & txtCilindrada1.Text & [Ô][ô] AND ETAPA = [ô][Ô] & txtEtapa1.Text & [Ô][ô] [Ô]


meu problema agora eh unir nessa mesma SQL outra subtração com outro criterio CATEGORIA = [ô][Ô] & txtCategoria2.Text & [Ô][ô] AND CILINDRADA = [ô][Ô] & txtCilindrada2.Text & [Ô][ô] AND ETAPA = [ô][Ô] & txtEtapa2.Text & [Ô][ô]

então essas outra ficaria assim:
SQL = [Ô]Select (cdate(INICIO)-CDATE(TERMINO)) AS var_RESULTADO2, * From ETAPA_PARTICIPANTES WHERE CATEGORIA = [ô][Ô] & txtCategoria2.Text & [Ô][ô] AND CILINDRADA = [ô][Ô] & txtCilindrada2.Text & [Ô][ô] AND ETAPA = [ô][Ô] & txtEtapa2.Text & [Ô][ô] [Ô]


entao na verdade preciso unir essas 2 SQL numa só!

WEBIER 13/01/2010 10:06:13
#331750
Alguem?
To precisando muito disso!
MARCELO.TREZE 13/01/2010 12:30:21
#331761
Sabe o que está confundindo a ente é o seguinte

porque unir duas sql que retornam o mesmo resultado

ou seja nos exemplos acima os campos para consulta são os mesmo (categoria e cilindrada), ou seja txtcategoria1 e txtcilindrada1 farão a mesma coisa que txtcategoria2 e txtcilindrada2, não é possivel unir duas QUERYS sendo que elas executam a mesma função apenas com campos difirentes, vc deve usa-las separadas mesmo.

ou fazer algo meio diferente

ao invés de criar os campos txtCilindrada1 e 2 txtCategoria1 e 2 txtEtapa1 e 2, você criar um array do campo e depois fazer um laço for

exemplo

txtCategoria(0)
txtCategoria(1)
txtCilindrada(0)
txtCilindrada(1)
txtEtapa(0)
txtEtapa(1)

For F = 0 To 1
SQL = [Ô]Select (cdate(INICIO)-CDATE(TERMINO)) AS var_RESULTADO, * From ETAPA_PARTICIPANTES WHERE CATEGORIA = [ô][Ô] & txtCategoria(F).Text & [Ô][ô] AND CILINDRADA = [ô][Ô] & txtCilindrada(F).Text & [Ô][ô] AND ETAPA = [ô][Ô] & txtEtapa(F).Text & [Ô][ô]
....
Next F


o laço acima irá executar a primeira depois a segunda consulta

fora isto não da pra fazer mais nada
WEBIER 13/01/2010 13:00:46
#331764
SÃO 2 RESULTADOS DIFERENTES!

eh pq vou usar o resultado das 2 consultas numa mesma linha do grid.

exemplo

MOTOQUEIRO ETAPA1 ETAPA2
Raimundo resultado1 resultado2
Maria resultado1 resultado2
José resultado1 resultado2

por isso preciso dos 2 resultados....

resultado1 = txtcategora1 e txtcilindrada1 e etapa1
resultado2 = txtcategora2 e txtcilindrada2 e etapa2
WEBIER 13/01/2010 19:46:14
#331813
Alguem?
Página 1 de 3 [22 registro(s)]
Tópico encerrado , respostas não são mais permitidas