CONCATENAR VARIOS REGISTROS NUMA MESMA CELULA GRID

MARCELO.TREZE 16/08/2011 19:49:55
#381844
para exibir tudo na mesma celula, vc terá de fazer um loop armazenar em uma variavel e depois jogar no grid.exemplo

Dim var_COMP As string

ssql= [Ô]Select MODELO, ANO From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = 2[Ô]
Set Rs = CNN.Execute(ssql)

Do While Not Rs.EOF
var_COMP = Rs!Modelo & [Ô]/[Ô] & Rs!Ano & [Ô],[Ô]
Rs.MoveNext
Loop

grid.TextMatrix(Linha, Coluna) = var_COMP
WEBIER 17/08/2011 10:55:55
#381865
Citação:

:
para exibir tudo na mesma celula, vc terá de fazer um loop armazenar em uma variavel e depois jogar no grid.exemplo

Dim var_COMP As string

ssql= [Ô]Select MODELO, ANO From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = 2[Ô]
Set Rs = CNN.Execute(ssql)

Do While Not Rs.EOF
var_COMP = Rs!Modelo & [Ô]/[Ô] & Rs!Ano & [Ô],[Ô]
Rs.MoveNext
Loop

grid.TextMatrix(Linha, Coluna) = var_COMP



Fiz as seguintes modificações:
Dim var_COMP As String

SQL = [Ô]Select MODELO, ANO From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = 2[Ô]
Set RS = BD.OpenRecordset(SQL)

Do While Not RS.EOF
var_COMP = RS!Modelo & [Ô]/[Ô] & RS!ANO & [Ô],[Ô]
RS.MoveNext
Loop

MsgBox var_COMP


Somente tá aparecendo os dados do primeiro registro.... são 3 registros no total que atendem a essa where

obs: coloquei no msgbox só para testar, pois no grid tava aparecendo assim tb

MARCELO.TREZE 17/08/2011 11:35:51
#381869
desculpe faça esta modificação

Dim var_COMP As String

SQL = [Ô]Select MODELO, ANO From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = 2[Ô]
Set RS = BD.OpenRecordset(SQL)

Do While Not RS.EOF
var_COMP = var_COMP & RS!Modelo & [Ô]/[Ô] & RS!ANO & [Ô],[Ô]
RS.MoveNext
Loop

MsgBox var_COMP
WEBIER 17/08/2011 12:11:29
#381876
Citação:

:
desculpe faça esta modificação

Dim var_COMP As String

SQL = [Ô]Select MODELO, ANO From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = 2[Ô]
Set RS = BD.OpenRecordset(SQL)

Do While Not RS.EOF
var_COMP = var_COMP & RS!Modelo & [Ô]/[Ô] & RS!ANO & [Ô],[Ô]
RS.MoveNext
Loop

MsgBox var_COMP



PERFEITO! FUNCIONOU CORRETAMENTE! VC é O CARA!

sem querer abusar, mas abusando...

Como vou colocar esse loop dentro de uma outra SQL já existente.

exemplo:

SQL = [Ô]SELECT PRODUTOS.*, PRODUTOS_ENTRADA_ITENS.*, (Select first(MODELO) From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = PRODUTOS.CODIGO) as var_COMP FROM (PRODUTOS LEFT JOIN ULTIMAS_ENTRADAS ON PRODUTOS.CODIGO = ULTIMAS_ENTRADAS.CODIGO_PRODUTO) LEFT JOIN PRODUTOS_ENTRADA_ITENS ON (ULTIMAS_ENTRADAS.CODIGO_PRODUTO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO) AND (ULTIMAS_ENTRADAS.ULTENTRADA = PRODUTOS_ENTRADA_ITENS.CODIGO_ENTRADA)[Ô]


quero colocar esse loop ai no lugar disso:
(Select first(MODELO) From PRODUTOS_COMP Where PRODUTOS_COMP.COD_PRODUTO = PRODUTOS.CODIGO) as var_COMP
pois essa parte ai só me traz o primeiro registro... então queria usar esse loop q vc me passou nesse lugar
MARCELO.TREZE 17/08/2011 12:30:51
#381879
Resposta escolhida
poxa vida eu acho que vc teria de fazer duas sql distintas com dois loops, bom daqui a pouco vejo no que posso te ajudar
WEBIER 17/08/2011 13:41:28
#381888
Citação:

:
poxa vida eu acho que vc teria de fazer duas sql distintas com dois loops, bom daqui a pouco vejo no que posso te ajudar



vc diz em fazer 2 sql separadas...

1 para trazer os dados desse loop e a outra para trazer os dados da ultima sql q lhe falei...

ai ai o problema vai ser relaciona-las no grid
WEBIER 17/08/2011 14:21:09
#381895
acabei de conseguir de fazer as 2 SQL distinta e conseguir relacionar no flexgrid


to com meu cerebro moído e doendo rsrsrsrs

agora para finalizar... nesse loop ai, como eu faço para tirar a virgula apos o ultimo ?

modelo/ano, modelo/ano, modelo/ano[txt-color=#e80000],[/txt-color]
WEBIER 17/08/2011 15:57:36
#381914
atendendo o pedido do MENUDO

[ô]Trago os dados de todo o grid
Call Abrir_BancodeDados
[ô][ô]SQL = [Ô]SELECT (PRODUTOS.CATEGORIA) as var_CAT, (PRODUTOS.FABRICANTE) as var_FAB, (PRODUTOS_ENTRADA_ITENS.CODIGO) as var_CODENT, (PRODUTOS.CODIGO) as var_COD, (PRODUTOS.COD_BARRA) as var_CodBarra,(PRODUTOS.DESCRICAO) as var_desc, (PRODUTOS.QUANT_ESTOQUE) as var_Quant, (PRODUTOS.QUANT_MIN) as var_Min, IIF(ISNULL(PRODUTOS_ENTRADA_ITENS.VENDA),0 ,PRODUTOS_ENTRADA_ITENS.VENDA) AS var_VENDA FROM (PRODUTOS LEFT JOIN ULTIMAS_ENTRADAS ON PRODUTOS.CODIGO = ULTIMAS_ENTRADAS.CODIGO_PRODUTO) LEFT JOIN PRODUTOS_ENTRADA_ITENS ON (ULTIMAS_ENTRADAS.CODIGO_PRODUTO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO) AND (ULTIMAS_ENTRADAS.ULTENTRADA = PRODUTOS_ENTRADA_ITENS.CODIGO_ENTRADA) WHERE PRODUTOS.ATIVO = TRUE ORDER BY PRODUTOS.descricao[Ô]
SQL = [Ô]SELECT (PRODUTOS.PRATELEIRA) as var_LOC, (PRODUTOS.CATEGORIA) as var_CAT, (PRODUTOS.FABRICANTE) as var_FAB, (PRODUTOS_ENTRADA_ITENS.CODIGO) as var_CODENT, (PRODUTOS.CODIGO) as var_COD, (PRODUTOS.COD_BARRA) as var_CodBarra,(PRODUTOS.DESCRICAO) as var_desc, (PRODUTOS.QUANT_ESTOQUE) as var_Quant, (PRODUTOS.QUANT_MIN) as var_Min, IIF(ISNULL(PRODUTOS_ENTRADA_ITENS.VENDA),0 ,PRODUTOS_ENTRADA_ITENS.VENDA) AS var_VENDA FROM (PRODUTOS LEFT JOIN ULTIMAS_ENTRADAS ON PRODUTOS.CODIGO = ULTIMAS_ENTRADAS.CODIGO_PRODUTO) LEFT JOIN PRODUTOS_ENTRADA_ITENS ON (ULTIMAS_ENTRADAS.CODIGO_PRODUTO = PRODUTOS_ENTRADA_ITENS.CODIGO_PRODUTO) AND (ULTIMAS_ENTRADAS.ULTENTRADA = PRODUTOS_ENTRADA_ITENS.CODIGO_ENTRADA) WHERE PRODUTOS.ATIVO = TRUE ORDER BY PRODUTOS.descricao[Ô]

Set RS = BD.OpenRecordset(SQL)

[ô]depois preencho o grid e coloco o loop que o marcelo_treze fez
Dim var_COMP As String

With Grid
.Clear
.Cols = 12
.Rows = 2

.ColWidth(0) = 0
.ColWidth(1) = 0
.ColWidth(2) = 0
.ColWidth(3) = 1500
.ColWidth(4) = 3500
.ColWidth(5) = 1200
.ColWidth(6) = 3500
.ColWidth(7) = 800
.ColWidth(8) = 800
.ColWidth(9) = 800
.ColWidth(10) = 1000
.ColWidth(11) = 1550

[ô].RowHeight(-1) = (315 * 1) [ô]definir a altura da linha

.TextMatrix(0, 1) = [Ô]CÓD.ENT[Ô]
.TextMatrix(0, 2) = [Ô]CÓD.PROD[Ô]
.TextMatrix(0, 3) = [Ô]CÓD.BARRA[Ô]
.TextMatrix(0, 4) = [Ô]DESCRIÇÃO[Ô]
.TextMatrix(0, 5) = [Ô]FABRICANTE[Ô]
.TextMatrix(0, 6) = [Ô]COMPARTIBILIDADE[Ô]
.TextMatrix(0, 7) = [Ô]LOCAL[Ô]
.TextMatrix(0, 8) = [Ô]QUANT.[Ô]
.TextMatrix(0, 9) = [Ô]MIN.[Ô]
.TextMatrix(0, 10) = [Ô]VENDA[Ô]
.TextMatrix(0, 11) = [Ô]CATEGORIA[Ô]

Do Until RS.EOF

.Redraw = False

If Not IsNull(RS!var_CodEnt) Then .TextMatrix(.Rows - 1, 1) = RS!var_CodEnt
If Not IsNull(RS!var_COD) Then .TextMatrix(.Rows - 1, 2) = RS!var_COD
If Not IsNull(RS!var_CodBarra) Then .TextMatrix(.Rows - 1, 3) = RS!var_CodBarra
If Not IsNull(RS!var_desc) Then .TextMatrix(.Rows - 1, 4) = RS!var_desc
If Not IsNull(RS!VAR_FAB) Then .TextMatrix(.Rows - 1, 5) = RS!VAR_FAB

If Not IsNull(RS!var_loc) Then .TextMatrix(.Rows - 1, 7) = RS!var_loc
If Not IsNull(RS!var_Quant) Then .TextMatrix(.Rows - 1, 8) = RS!var_Quant
If Not IsNull(RS!var_MIN) Then .TextMatrix(.Rows - 1, 9) = RS!var_MIN
If Not IsNull(RS!var_VENDA) Then .TextMatrix(.Rows - 1, 10) = Format(RS!var_VENDA, [Ô]##,##0.00[Ô])
If Not IsNull(RS!var_CAT) Then .TextMatrix(.Rows - 1, 11) = Format(RS!var_CAT, [Ô]##,##0.00[Ô])

[ô]olha aqui o loop do marcelo

SQL2 = [Ô]Select MODELO, ANO From PRODUTOS_COMP Where COD_PRODUTO = [Ô] & .TextMatrix(.Rows - 1, 2)
Set RS2 = BD.OpenRecordset(SQL2)

Do While Not RS2.EOF
var_COMP = var_COMP & RS2!MODELO & [Ô]/[Ô] & RS2!ANO & [Ô],[Ô]
RS2.MoveNext
Loop

If Not IsNull(var_COMP) Then .TextMatrix(.Rows - 1, 6) = var_COMP
var_COMP = [Ô][Ô]

RS.MoveNext
.Rows = .Rows + 1

Loop

.Rows = .Rows - 1
.Redraw = True
End With


ai continuo sem saber como tira a virgula apos o ultimo no loop
LCSD 17/08/2011 16:23:07
#381916
Depois do seu MOVENEXT, veja se é EOF, se for, retira alí o seu ponto inserido na linha acima, VC pode pegar o LEN da variável, e depois pegar o mid deste LEN de 1 até o LEN-1 (por exemplo, já que na última posição ficará a virgula)
Página 2 de 3 [24 registro(s)]
Tópico encerrado , respostas não são mais permitidas