fazer pesquisa em mysql acrescentando um campo não existente

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por Amparo »

ola amigos, bom dia

Harbour MiniGUI Extended Edition 19.08 (Update 2)
BRMAKE - Make File para Harbour/xHarbour/MiniGUI Versão 2.05 FreeWare
MariaDB 10.2

no banco de dados tenho uma tabela chamada CLIENTES, com os seguintes campos:
codigo
nome
cnpj
vendedor
conceito
limit_cred (limite de credito)
....

faço uma consulta carregando em uma GRID apenas estes campos, preciso acrescentar no GRID uma coluna nova que não existe na tabela de cliente, esta coluna em meu sistema eu chamo de CALCULA, exemplo

IIF( conceito = "BOM", "Venda Liberada", IIF( conceito = "REGULAR","Venda em Analise","Venda Bloqueada" ) )

OU

IIF( limit_cred = 500.00, limit_cred * 1.20, IIF( limit_cred = 1000.00, limit_cred * 1.30, limit_cred * 1.50 ) )

ou

IIF( conceito = "BOM", pinta a célula de verde, IIF( conceito = "REGULAR",pinta a célula de amarelo,pinta a célula de vermelho ) )


abaixo como esta a linha de programação:

Código: Selecionar todos

DELETE ITEM ALL FROM GRID_CLIENTES OF FORM_CLIENTES

SELECT_CLIENTES := OSERVER:QUERY( "SELECT codigo,nome,cnpj,vendedor,conceito, limit_cred FROM CLIENTES USE INDEX (IDX_CODIGO) ORDER BY CODIGO LIMIT 1000")
IF SELE_MSELE_QUERY:NETERR() 
   MSGSTOP( "Erro ao abrir tabela de CLIENTES", MSIST )
   ...
ELSE
   CONTA_REG := 1

   SETMESSAGE( STRZERO( SELE_MSELE_QUERY:LASTREC(),6 ), 4 )

   DO WHILE CONTA_REG <= SELE_MSELE_QUERY:LASTREC()
      DO EVENTS
      ROWS_MSELE_QUERY := SELE_MSELE_QUERY:GETROW( CONTA_REG )

      FOR X = 1 TO LEN( COLUNA_FIELDS )
        IF COLUNA_TIPO[X] = "N" 
           ITEMADD += 'VIRGULA( ROWS_MSELE_QUERY:FIELDGET("' +  COLUNA_FIELDS[X] + '"),' + STR(COLUNA_WIDTH[X],2) + ',' + STR(COLUNA_DECIMAL[X],1) + ' )'
	ELSEIF COLUNA_TIPO[X] = "D" 
           ITEMADD += 'DTOC( ROWS_MSELE_QUERY:FIELDGET("' +  COLUNA_FIELDS[X] + '"))'
	ELSE
           ITEMADD += 'ROWS_MSELE_QUERY:FIELDGET("' +  COLUNA_FIELDS[X] + '")'
	ENDIF

        IF X < LEN( COLUNA_FIELDS )
           ITEMADD += ","
        ENDIF
      NEXT X

      ADD ITEM { &(ITEMADD) } TO &NOME_DA_GRID. OF SGC020101FORM

      ITEMADD := ""
      SELE_MSELE_QUERY:SKIP(1)

      CONTA_REG += 1
   ENDDO
ENDIF
alguem teria uma ideia de como posso acrescentar uma coluna CALCULA conforme explicado a cima, lembrando que esta coluna pode estar no meio dos campos existentes em uma tabela.

obs> a variável COLUNA_FIELDS é um vetor que contem os campos que serão inseridos no GRID também tem o vetor COLUNA_TABELA onde eu identifico se a coluna é um campo de uma tabela ou se é CALCULADA.

desde ja agradeço.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por JoséQuintas »

Pelo que estou vendo, está adicionando uma coluna de cada vez ao grid.
Se está adicionando uma coluna de cada vez, só definir como vai ser essa nova coluna.
Mas se mencionou até sobre a cor do grid... isso tem a ver com a linguagem de programação/LIB gráfica e não com o banco de dados.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por alxsts »

Olá
Tente

Código: Selecionar todos

SELECT codigo
       ,nome
       ,cnpj
       ,vendedor
       ,conceito
       ,limit_cred
       ,0 as Calcula   -- ajuste para o tipo de dados desejado
   FROM CLIENTES 
    USE INDEX (IDX_CODIGO) 
  ORDER BY CODIGO 
  LIMIT 1000
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por Amparo »

OLA AMIGOS

bom dia

alxsts, já tentei mas da erro.

na verdade existe um vetor guardando os nomes dos campos bem como outras informações
codigo, nome,cnpj,vendedor,conceito,limit_cred

para montar o select eu percorro o vetor e acrescento na linha do SELECT ... FROM

acontece que nesse vetor eu posso colocar uma coluna CALCULADA no final ou no meio de qualquer campos

acrescentando isso a variável que monta a seleção ficou assim:

SELECT CODIGO,NOME.CNPJ,VENDEDOR,CONCEITO,LIMIT_CRED,IIF(CONCEITO="BOM","VENDA LIBERADA","VERIFICAR") FROM CLIENTES USE INDEX ...

ai da erro FUNCTION sqlimpium.iif does not exist (mensagem de erro do mariaDB)

abraços
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por JoséQuintas »

if() ou case

https://www.w3schools.com/sql/func_mysql_case.asp

Código: Selecionar todos

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END); 

Código: Selecionar todos

SELECT OrderID, Quantity, IF(Quantity>10, "MORE", "LESS")
FROM OrderDetails; 
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por Amparo »

ola amigos

José Quintas

pelo que eu entendi ele apenas satisfaz uma condição e não cria um coluna nova com o resultado por exemplo

SELETC NOME,CNPJ,CONCEITO, LIM_CREDIT FROM CLIENTES ....

A CONSULTA TRAZ:

NOME CNPJ CONCEITO LIM_CREDIT
ANDRE 028... BOM 250.00
PAULO 116... BOM 300.00
JOSE 562... BOM 450.00
VICENTE 854... NOVO 150.00

agora eu queria cria uma consulta e acrescentar uma coluna com o resultado de alguma expressão: por exemplo

SELETC NOME,CNPJ,CONCEITO, LIMIT_CREDIT, IIF( CONCEITO = "BOM", "APROVA VENDAS", "VERIFICAR") FROM CLIENTES ....

NOME CNPJ CONCEITO LIMIT_CREDIT SITUAÇÃO
ANDRE 028... BOM 250.00 APROVA VENDAS
PAULO 116... BOM 300.00 APROVA VENDAS
JOSE 562... BOM 450.00 APROVA VENDAS
VICENTE 854... NOVO 150.00 VERIFICAR

OU

SELETC NOME,CNPJ,CONCEITO, LIM_CREDIT, IIF( LIMIT_CREDIT < 300.00, LIMIT_CREDIT * 1.20, LIMIT_CREDIT * 1.50 ) FROM CLIENTES ....

NOME CNPJ CONCEITO LIMIT_CREDIT PREVISAO AUMENTO
ANDRE 028... BOM 250.00 300.00
PAULO 116... BOM 300.00 450.00
JOSE 562... BOM 450.00 675.00
VICENTE 854... NOVO 150.00 180.00


ABRAÇOS
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por JoséQuintas »

Não era isto que queria?
teste.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por JoséQuintas »

Código: Selecionar todos

SELECT 
IF( CONCEITO = "BOM", "APROVA VENDAS", "VERIFICAR" ) AS STATUS,
( CASE
WHEN LIMIT_CREDIT < 300 THEN LIMIT_CREDIT * 1.2
ELSE LIMIT_CREDIT * 1.5
END ) AS LIMITE
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

fazer pesquisa em mysql acrescentando um campo não existente

Mensagem por Amparo »

ola amigos


José Quintas

eita que era isso mesmo que eu precisava, valeu!

abraço

Amparo
Responder