Clique abaixo para nos ajudar
Conectar-se

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
10 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 10 Visitantes :: 2 Motores de busca

Nenhum

[ Ver toda a lista ]


O recorde de usuários online foi de 468 em 1/3/2012, 10:43
Espessura do cursor intermitente

7/3/2017, 09:08 por Jefferson Matakas

Bom dia a todos !!

Existe uma opcao no windows que pode ser acessada atraves da 'central da …

Comentários: 0

DESENVOLVIMENTO EM REDES

4/3/2017, 18:45 por AJC

Pessoal tem ou conhece livros ou material para programação em
redes usando banco de dados nativo …

Comentários: 0

USAR REPORT FORM

30/12/2016, 09:06 por AJC

Pessoal bom dia,
Estou com um grande problema, já pesquisei muita coisa sobre report form, mas o …

Comentários: 4

Como preencher campos vazios

9/2/2017, 11:55 por Linghston

Pessoal boa tarde,

É o seguinte, eu preciso preencher os campos de uma coluna da tabela DBF que …

Comentários: 2

Enviar msg para WhatsAPP via VFP

7/2/2017, 10:31 por Eliana

Olá Pessoal!

Alguém sabe se é possível enviar mensagem para o WhatsAPP via VFP?


Grata


Comentários: 0

Estatísticas
Temos 7035 usuários registrados
O último usuário registrado atende pelo nome de marcos de boni

Os nossos membros postaram um total de 31 mensagens em 17 assuntos

SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Resolvido SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 18/12/2009, 21:22

SOBRE SELECT DISTINC
Código:
CLOSE DATABASES ALL
CLOSE TABLES ALL
CLOSE ALL
CREATE TABLE PP (NOME_LOGR1 C(50), LOGR C(10))
SELECT PP
INSERT INTO PP( NOME_LOGR1,LOGR) VALUES ('ABRASIL', 'AV')
INSERT INTO PP( NOME_LOGR1,LOGR) VALUES ('PERUCHE', 'AV')
INSERT INTO PP( NOME_LOGR1,LOGR) VALUES ('BRASIL', 'AV')
INSERT INTO PP (NOME_LOGR1,LOGR) VALUES ('BRASIL', 'TRAV')
INSERT INTO PP (NOME_LOGR1,LOGR) VALUES ('BRASIL', 'ALAMEDA')
INSERT INTO PP ( NOME_LOGR1,LOGR) VALUES ('BRASILIA', 'AV')
INSERT INTO PP( NOME_LOGR1,LOGR) VALUES ('BRASILIA', 'TRAV')
INSERT INTO PP (NOME_LOGR1,LOGR) VALUES ('BRASILINA', 'ALAMEDA')
SELECT PP
GO TOP
wachei='BRASIL'
SELECT DISTINCT * FROM PP WHERE PP.nome_logr1=WACHEI INTO TABLE PPS
SELECT PPS
IF _TALLY>0
BROWSE
ELSE
WAIT 'NAO ENCONTREI' +WACHEI TIMEOUT 1
ENDIF

EXECUTEM O CODIGO ACIMA.

*****************************************
SOBRE SELECT DISTINCT PRECISO SOMENTE QUE SELECIONE, BRASIL
**********************************
COM O CODIGO ACIMA PESQUISA NA SELECT
ESTA TRAZENDO AV.BRASILIA, E BRASILINA,E BRASIL

PERGUNTA:
como fazer para A SELECT trazer soMENTE. BRASIL!!!

ESTA EU QUERO VER SOLUCAO?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 22/12/2009, 07:23

Alceu, é necessário acrescentar apenas SET ANSI ON:
Código:
SET ANSI ON

CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE pp (nome_logr1 c(50), logr c(10))
SELECT pp
INSERT INTO pp( nome_logr1,logr) VALUES ('ABRASIL', 'AV')
INSERT INTO pp( nome_logr1,logr) VALUES ('PERUCHE', 'AV')
INSERT INTO pp( nome_logr1,logr) VALUES ('BRASIL', 'AV')
INSERT INTO pp (nome_logr1,logr) VALUES ('BRASIL', 'TRAV')
INSERT INTO pp (nome_logr1,logr) VALUES ('BRASIL', 'ALAMEDA')
INSERT INTO pp ( nome_logr1,logr) VALUES ('BRASILIA', 'AV')
INSERT INTO pp( nome_logr1,logr) VALUES ('BRASILIA', 'TRAV')
INSERT INTO pp (nome_logr1,logr) VALUES ('BRASILINA', 'ALAMEDA')
SELECT pp
GO TOP
wachei='BRASIL'
SELECT DISTINCT * FROM pp WHERE pp.nome_logr1=wachei INTO TABLE pps
SELECT pps
IF _TALLY>0
   BROWSE
ELSE
   WAIT WINDOW 'NAO ENCONTREI' +wachei TIMEOUT 1
ENDIF

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 22/12/2009, 08:58

Vamos complicar mais um pouco
****************************
Vamos colocar numeracao nas ruas preciso achar a av.brasil, no nr.250

sendo inicia e o inico nr da rua
e termina no nr. da rua
**************************************************
so que nao acha av.brasil 250

Código:
SET ANSI ON

CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE pp (nome_logr1 c(50), logr c(10), inicia n(6), termina n(6))
SELECT pp
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('ABRASIL', 'AV',1,100)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('PERUCHE', 'AV',2,45)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV', 1,100)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV',101,399)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV',400,5500)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'ALAMEDA',2,45)
INSERT INTO pp ( nome_logr1,logr,inicia,termina) VALUES ('BRASILIA', 'AV',1,55)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('BRASILIA', 'TRAV',2,55)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASILINA', 'ALAMEDA',2,55)
SELECT pp
GO TOP
wachei='BRASIL'
wcod1=250
SELECT DISTINCT * FROM pp WHERE pp.nome_logr1=wachei and between(wcod1,pp.inicia,pp.termina  )INTO TABLE pps
SELECT pps
IF _TALLY>0
  BROWSE normal
ELSE
  WAIT WINDOW 'NAO ENCONTREI' +wachei TIMEOUT 1
ENDIF

onde eu errei ?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 22/12/2009, 16:30

Alceu, av.brasil 250 não está incluido na tabela!

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 23/12/2009, 11:12

esta sim no 4 registro 101 ao 399

ao inves de
"Set ansi on"

nao e mais facia condicao where nome_logr1 like '%wachei' ?
com este like nao traria?
nao traria so av.brasil
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 23/12/2009, 12:54

É verdade, Alceu!
O registro existe!

Estou analisando o código, pois da forma que está, rodou perfeitamente bem!

O registro foi localizado com sucesso, e não percebi nenhum erro no SELECT

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 23/12/2009, 13:49

é qiue nao posso postar o arqvuo de cliente com 120. mil registros,
Ele ta travando

set ansi on
comomandos
depos
set ansi off


poe no jeito o que eu falei com where e condicao like
para tu ver!!!
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 23/12/2009, 13:58

Com o like ficaria da seguinte forma:
Código:
m.set_ansi = SET("Ansi")

SET ANSI ON

CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE pp (nome_logr1 c(50), logr c(10), inicia n(6), termina n(6))
SELECT pp
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('ABRASIL', 'AV',1,100)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('PERUCHE', 'AV',2,45)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV', 1,100)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV',101,399)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV',400,5500)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'ALAMEDA',2,45)
INSERT INTO pp ( nome_logr1,logr,inicia,termina) VALUES ('BRASILIA', 'AV',1,55)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('BRASILIA', 'TRAV',2,55)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASILINA', 'ALAMEDA',2,55)
SELECT pp
GO TOP
wachei='BRASIL'
wcod1=250
SELECT DISTINCT * FROM pp WHERE pp.nome_logr1 like "%" + m.wachei + "%" and between(wcod1,pp.inicia,pp.termina  )INTO TABLE pps
SELECT pps
IF _TALLY>0
  BROWSE normal
ELSE
  WAIT WINDOW 'NAO ENCONTREI' +wachei TIMEOUT 1
ENDIF

SET ANSI &set_ansi
Resolve o problema?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 23/12/2009, 18:37

veja este codigo e continuacao do primeiro agora o cliente quer o nr inicial e final da rua, so funciona com set ansi on, com like brasil nr. 250 final 425
Código:
SET ANSI ON

CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE pp (nome_logr1 c(50), logr c(10), inicia n(6), termina n(6))
SELECT pp
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('ABRASIL', 'AV',1,100)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('PERUCHE', 'AV',2,45)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV', 1,100)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV',101,399)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'AV',400,5500)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASIL', 'ALAMEDA',2,45)
INSERT INTO pp ( nome_logr1,logr,inicia,termina) VALUES ('BRASILIA', 'AV',1,55)
INSERT INTO pp( nome_logr1,logr,inicia,termina) VALUES ('BRASILIA', 'TRAV',2,55)
INSERT INTO pp (nome_logr1,logr,inicia,termina) VALUES ('BRASILINA', 'ALAMEDA',2,55)
SELECT pp
GO TOP
wachei='BRASIL'
wcod1='250'
wcod2='425'
SELECT DISTINCT * FROM pp WHERE pp.nome_logr1=wachei and between(VAL(wcod1), pp.inicia, pp.termina  ) ;
OR  ALLTRIM(pp.nome_logr1)=ALLTRIM(wachei)  AND  between(val(wcod2), pp.inicia, pp.termina ) ; 
INTO TABLE pps

SELECT pps
IF _TALLY>0
  BROWSE normal
ELSE
  WAIT WINDOW 'NAO ENCONTREI' +wachei TIMEOUT 1
ENDIF

SET ANSI OFF
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 30/12/2009, 11:59

Alceu, qual o problema neste código que você citou?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 30/12/2009, 12:31

problema Macos que tive que fazer 2 selects uma para achar, a faixa inicial e faixa final de numeracao da rua, se o cursor vier com dados

Set ansi on &&BOA TACACA AQUI
ai faco um SELECT DISTIC SO DA AVI.BRASIL

nao conseguir, fazer numa select so

Mais tu quer o encerrar o topico pode
Resolvido
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 5/4/2010, 16:13

Marcos
Nao queria abrir outro topico entao vou fazer a pergunta aqui mesmo,,
preciso fazer uma select todos os campos e somar um determinado campo valor veja a ondi estou errando...

Código:
  aqui esta virgula apos "*" , esta certo
Select * , sum(valor) as wmvalor from vouchers  where vouchers.valor >0 and empty(vouchers.vlr_lib) into cursor ruas
Select ruas
if _tally>0
*wmRE=0
*sum ruas.valor to wmRe for emptY(ruas.vlr_lib)
if wmvalor>0
  thisform.Texto2.value=wmvalor    &&wmRe
  thisform.Texto2.refresh()
Endif

Veja esta select esta certa sem tem que criar uma variavel para somar o campo valor?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 5/4/2010, 21:24

Alceu, veja se assim resolve:
Código:
SELECT NVL(SUM(valor),0) FROM vouchers ;
   WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

IF m.wmvalor>0
   THISFORM.texto2.VALUE=m.wmvalor
   THISFORM.texto2.REFRESH()
ENDIF

Caso não resolva, veja se é possível disponibilizar a tabela, e diga-me à condição necessária para que seja efetuada a soma.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 6/4/2010, 14:56

Código:

CLOSE DATABASES ALL
CLOSE TABLES ALL
CLOSE ALL
CREATE TABLE vouchers(valor  n(10,2), vlr_lib c(5))
SELECT vouchers
INSERT INTO vouchers( vALOR, VLR_LIB) VALUES (10, 'S')
INSERT INTO vouchers( vALOR, VLR_LIB) VALUES (2, '')
INSERT INTO vouchers( vALOR, VLR_LIB) VALUES (1, 'S')
INSERT INTO vouchers (vALOR, VLR_LIB) VALUES (1, 'S')
INSERT INTO vouchers (vALOR, VLR_LIB) VALUES (1, 'S')
INSERT INTO vouchers ( vALOR, VLR_LIB) VALUES (1, 'S')
INSERT INTO vouchers( vALOR, VLR_LIB) VALUES  (3, '')
INSERT INTO vouchers (vALOR, VLR_LIB) VALUES  (1, 'S')
SELECT vouchers
GO TOP
 BROWSE NORMAL
 SELECT NVL(SUM(valor),0) FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

IF m.wmvalor>0
 MESSAGEBOX( 'O VALOR ' +STR(WMVALOR))
 Endif
*  valor deu 5 esta correto
***mais eu preciso da select com o browse dos valores que deram 5,00 reais
Select * , sum(valor) as wmvalor from vouchers  where vouchers.valor >0 and empty(vouchers.vlr_lib) into cursor ruas
Select ruas
if _tally>0
*wmRE=0
*sum ruas.valor to wmRe for emptY(ruas.vlr_lib)
if wmvalor>0

WAIT WINDOW 'O VALOR ' +STR(WMVALOR)
*  thisform.Texto2.value=wmvalor    &&wmRe
 * thisform.Texto2.refresh()
Endif

Marcos
execute o codigo
ai
veja o browse nomal

* valor deu 5 esta correto

Marcos
nesta 2a Select ta dando paus
Código:
Select * , sum(valor) as wmvalor from vouchers  where vouchers.valor >0 and empty


Mais eu preciso da 2a. Select com o browse dos valores que deram 5,00 reais que sao dois registros como fazer?

Se eu colocar group by na segunda select totaliza eu nao quero totalizado como fazer?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 6/4/2010, 15:07

Veja se é bem isto o que estais querendo.
Caso não seja tente explicar melhor.

Código:
CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE vouchers(valor  N(10,2), vlr_lib c(5))
SELECT vouchers
INSERT INTO vouchers( valor, vlr_lib) VALUES (10, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES (2, '')
INSERT INTO vouchers( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers ( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES  (3, '')
INSERT INTO vouchers (valor, vlr_lib) VALUES  (1, 'S')
SELECT vouchers
GO TOP
*BROWSE NORMAL
SELECT NVL(SUM(valor),0) FROM vouchers ;
   WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

IF m.wmvalor>0
*   MESSAGEBOX( 'O VALOR ' +STR(wmvalor))
ENDIF
*  valor deu 5 esta correto
***mais eu preciso da select com o browse dos valores que deram 5,00 reais
SELECT NVL(SUM(valor),0) AS wmvalor FROM vouchers  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR ruas

SELECT ruas
GO TOP
IF RECCOUNT("ruas")>0
   *wmRE=0
   *sum ruas.valor to wmRe for emptY(ruas.vlr_lib)
   IF wmvalor>0

      WAIT WINDOW 'O VALOR ' +STR(wmvalor)
      *  thisform.Texto2.value=wmvalor    &&wmRe
      * thisform.Texto2.refresh()
   ENDIF
ENDIF

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 6/4/2010, 18:21

Marcos vc ainda nao entendeu
ainda da variavel no array que da 5 reais aki esta ok
eu dou um refresh() no text box valor e preencho o valor mas do lado do


textbox tem um botao da composicao dos itens que compoe os 5 reais que no caso sao 2 itens eu preciso da selec com esta composicao.
preciso da select com a composicao dos itens no browse que dao 5 reais

o que eu nao qeria fazer duas select poderia ter uma so pois se ele clica no botao
atualiza a variavel e o textbox que compoe o valor e mostra a select
com a composicao...

entendeu:?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 6/4/2010, 23:30

[Você precisa estar registrado e conectado para ver este link.] escreveu:preciso da select com a composicao dos itens no browse que dao 5 reais
Que itens são estes?
No exemplo que você postou não estou identificando os dois itens que deveriam aparecer no resultado do SELECT.

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 7/4/2010, 07:37

Sim no exemplo que envie o mesmo!!!
Código:
CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE vouchers(valor  N(10,2), vlr_lib c(5))
SELECT vouchers
INSERT INTO vouchers( valor, vlr_lib) VALUES (10, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES (2, '')
INSERT INTO vouchers( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers ( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES  (3, '')
INSERT INTO vouchers (valor, vlr_lib) VALUES  (1, 'S')
SELECT vouchers
GO TOP
BROWSE NORMAL

A primeira Select para saber a soma
Código:
SELECT NVL(SUM(valor),0) FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor
MESSAGEBOX( 'O VALOR ' +STR(wmvalor))

e a segunda select para saber os itens que originiram a soma que deu 5
Código:
SELECT * FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO cursor MuitoDifcil
browse

PERGUNTA :::

Sera que nao da pra fazer uma só Select, com os dois resultados?
Some e ao mesmo tempo mostre os que ficaram na condicao where?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 7/4/2010, 10:38

Alceu, da forma como queres, desconheço uma alternativa, mas veja se esta resolve o teu problema:
Código:
CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE vouchers(valor  N(10,2), vlr_lib c(5))
SELECT vouchers
INSERT INTO vouchers( valor, vlr_lib) VALUES (10, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES (2, '')
INSERT INTO vouchers( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers ( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES  (3, '')
INSERT INTO vouchers (valor, vlr_lib) VALUES  (1, 'S')

SELECT NVL(SUM(valor),0) FROM vouchers WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

SELECT valor, m.wmvalor as somadetodos FROM vouchers ;
   WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR muitodifcil
   
SELECT muitodifcil
GO TOP
BROWSE

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 7/4/2010, 10:55

Realmente funcionou

Código:


CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE vouchers(valor  N(10,2), vlr_lib c(5))
SELECT vouchers
INSERT INTO vouchers( valor, vlr_lib) VALUES (10, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES (2, '')
INSERT INTO vouchers( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers ( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES  (3, '')
INSERT INTO vouchers (valor, vlr_lib) VALUES  (1, 'S')

SELECT NVL(SUM(valor),0) FROM vouchers WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

SELECT vlr_lib,valor, m.wmvalor as somadetodos FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR muitodifcil
 
SELECT muitodifcil
GO TOP
BROWSE



mais se quiser todos os campos tereir que colocar um a um nao posso por astericos
Select *, m.wmvalor as somadetodos FROM vouchers ;
WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR muitodifcil
********aqui acontece o erro
se nao da erro na select e me pede group by
entedeu agora tenho 18 campos o exemplo aqui e simbolico so tem 2 campos.?

Very Happy
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 7/4/2010, 11:25

Também funciona para todos, Alceu:
Código:
CLOSE DATABASES ALL
CLOSE TABLES ALL
*CLOSE ALL
CREATE TABLE vouchers(valor  N(10,2), vlr_lib c(5))
SELECT vouchers
INSERT INTO vouchers( valor, vlr_lib) VALUES (10, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES (2, '')
INSERT INTO vouchers( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers ( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES  (3, '')
INSERT INTO vouchers (valor, vlr_lib) VALUES  (1, 'S')

SELECT NVL(SUM(valor),0) FROM vouchers WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

SELECT *, m.wmvalor as somadetodos FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR muitodifcil
 
SELECT muitodifcil
GO TOP
BROWSE

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 7/4/2010, 11:46

Solucinou
Obrigado

so queria entender!!!
Mais unica duvida no array somou wmvarlor =5

na segunda select ele pegou variavel wmvalor e somou ,,,,,,,,???

Me deu um no na minha cabeca !!

so vc mesmo pra fazer isto hein
Very Happy
poderia dar uma explicacao o que aconteceu realmente?
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 7/4/2010, 14:40

Um select pode conter valores vindos de uma tabela, ou variável.
Neste teu exemplo, armazenamos o resultado da soma do campo desejado num array, em seguida utilizamos o valor do array para preencher o cursor.

Imagine o seguinte select:
Código:
SELECT campo1, campo2, campo3 FROM tabela

O Select acima retornará os valores existentes nos campos "campo1", "campo2" e "campo3".

Agora imagine este select:
Código:
LOCAL variavel1 AS INTEGER
LOCAL variavel2 AS STRING
m.variavel1 = 2
m.variavel2 = "valor qualquer"

SELECT campo1, m.variavel1, m.variavel2 FROM tabela

No exemplo acima será exibido no cursor os valores existentes no campo "campo1" da tabela e repetirá o valor das variáveis "variavel1" e "variavel2" para todos os registros.

Imagine uma tabela com 100 registros... Você terá os resultados para o campo "campo1", referente aos 100 registros existentes na tabela. E também serão repetidos 100 vezes os valores das variáveis "variavel1" e "variavel2" na primeira e segunda coluna do SELECT, respectivamente.

Conseguiu compreender?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por alceu11 em 7/4/2010, 17:32

As conclusoes finais.....
Código:

**1a.Primeira Select

SELECT NVL(SUM(valor),0) FROM vouchers WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

** wmvalor= era igual= 5
**2a.Segunda Select

SELECT *, m.wmvalor as somadetodos FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR muitodifcil
Após as suas explicacoes
O meu entendimento!!!

Pela sua explicacao ele guardo o campo da tabela na variavel wmvalor
NVL(SUM(valor),0) aqui ela foi inicializada com valor 0
mais porem na criacao do primero select, e para preencher o arrray em wmvalor ela tinha 5 de valor,

Qdo vc fez a segunda select, ela zerou e manteve o campo,,isto é incrivel ! Very Happy

Pessoas procuram solucoes, no Forum, nem quer saber o pq,?,
Eu queria entender, esta solucao,,,,,,que voce me apresentou...

Mais nao sei se meu entendimento , esta correto..

Mesmo pq, eu inicializei esta variavel, wmvalor, no select do Array, no init do form, e preenchi o form...no textbox.
Mas no docorre do processo, pode haver inclusoes na tela, e o usuario clicar no botao..ver resultados.......a segunda select mostrara o resultado.. e atuzalizara sempre que haver o refresh na tela e wmvalor.

Desculpe se isto te irritou. mais eu sou assim mesmo!! nao tenho jeito""!!
avatar
alceu11
Usuário 5 Estrelas
Usuário 5 Estrelas


Voltar ao Topo Ir em baixo

Resolvido Re: SOBRE SELECT DISTINCT PRECISO SO DA AV. BRASIL

Mensagem por Marcos Guedes em 7/4/2010, 21:49

Alceu, meu caro... em primeiro lugar, ajudar os colegas não me irrita, senão eu sequer me preocuparia em me conectar a este fórum, e outros, para compartilhar os conhecimentos com o pessoal.
Smile

A melhor forma de aprender, é ensinando. E se ainda restam dúvidas, então certamente não houve uma explicação clara quanto à solução do problema.


Alceu escreveu:Pela sua explicacao ele guardo o campo da tabela na variavel wmvalor
NVL(SUM(valor),0) aqui ela foi inicializada com valor 0
mais porem na criacao do primero select, e para preencher o arrray em wmvalor ela tinha 5 de valor
A função NVL não está inicializando o valor do array com zero, mas tornará o valor igual a zero caso este seja nulo.
Vi necessidade em utilizar esta função pois em alguns casos, quando a consulta não encontra valores, então o campo é retornado como nulo.


Alceu escreveu:Qdo vc fez a segunda select, ela zerou e manteve o campo,,isto é incrivel !
Não entendi como você chegou a esta conclusão.
scratch

Veja o código abaixo com umas pequenas mudanças, desta vez deixei todo comentado:
Código:
CLOSE TABLES ALL && Fecha todas as tabelas abertas
CLOSE DATABASES ALL && Fecha todos os databases abertos

*!* Cria um cursor de exemplo (Simula a tabela)
CREATE CURSOR vouchers(valor  N(10,2), vlr_lib c(5))

*!* Insere registros de exemplo
INSERT INTO vouchers( valor, vlr_lib) VALUES (10, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES (2, '')
INSERT INTO vouchers( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers (valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers ( valor, vlr_lib) VALUES (1, 'S')
INSERT INTO vouchers( valor, vlr_lib) VALUES  (3, '')
INSERT INTO vouchers (valor, vlr_lib) VALUES  (1, 'S')

*!* Armazena num array, o resultado da soma dos registros
*!* contidos no campo "valor" conforme a condição existente no SELECT
SELECT NVL(SUM(valor),0) FROM vouchers WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO ARRAY wmvalor

*!* Faz um SELECT devolvendo os registros de todos os campos com a mesma condição acima,
*!* e também o valor do array, sendo que desta vez, inclui os dados num cursor
SELECT *, m.wmvalor as somadetodos FROM vouchers ;
  WHERE vouchers.valor >0 AND EMPTY(vouchers.vlr_lib) INTO CURSOR muitodifcil
 
*!* Seleciona o cursor gerado acima
SELECT muitodifcil
*!* Posiciona o ponteiro do cursor no primeiro registro
GO TOP
*!* Exibe os dados do cursor da tela
BROWSE

*!* Fecha os cursores abertos
USE IN SELECT("vouchers")
USE IN SELECT("muitodifcil")

Alguma dúvida, ainda?

_________________
Marcos Guedes - Programador e desenvolvedor Web.


Visite o nosso portal:
[Você precisa estar registrado e conectado para ver este link.]

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Página 1 de 2 1, 2  Seguinte

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum