Clique abaixo para nos ajudar
Login

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
Últimos assuntos
Bloquear edição do ListBox

17/6/2010, 15:13 por Julio

Pessoal

Boa Tarde!

Tnho uma listbox apenas para exibir o resultado.
Preciso bloquear a listbox …

Comentários: 17

automação do mozilla e chrome

15/1/2017, 12:16 por Handerson Mildroz

Boa tarde a todos!

Sou iniciante no VFP. Preciso de ajuda, pois tenho um código que usa o …

Comentários: 0

COMO ESTÃO DESENVOLVENDO EM WEB?

22/8/2016, 10:48 por AJC

Pessoal, já lí sobre vários topicos aqui no forum sobre desenvolvimento web
mas ainda nada …

Comentários: 2

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: 0

dll pertocheck

15/12/2016, 12:45 por FERNANDOMATRELLA

Alguem teria ja desenvolvido a comunicação com essa dll estou tento muito trabalho aqui e nenhum …

Comentários: 1

Estatísticas
Temos 6987 usuários registrados
O último usuário registrado atende pelo nome de Alexsander Leal

Os nossos membros postaram um total de 3 mensagens em 1 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?

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 ?

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

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!!!

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

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

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?

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?

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:?

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?

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

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?

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""!!

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