CONCATENAR VARIOS REGISTROS NUMA MESMA CELULA GRID
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
Citação::
para exibir tudo na mesma celula, vc terá de fazer um loop armazenar em uma variavel e depois jogar no grid.exemploDim 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
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
Citação::
desculpe faça esta modificaçãoDim 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
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
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
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]
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]
atendendo o pedido do MENUDO
ai continuo sem saber como tira a virgula apos o ultimo no loop
[ô]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
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)
Tópico encerrado , respostas não são mais permitidas