Clipper On Line • Ver Tópico - SQLMIX SELECT de nomes com valores vazios

SQLMIX SELECT de nomes com valores vazios

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

SQLMIX SELECT de nomes com valores vazios

Mensagempor Karine Lima Almeida » 23 Jun 2015 13:14

Pessoal estou com um problema na hora de fazer um select,

é o seguinte , eu faço a busca e ordeno em como segue abaixo:
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,nome FROM GRUPOS where IS_DELETED='N' order by nome " )

o resultado saí assim:
nome.png
nome.png (9.64 KiB) Visualizado 4342 vezes

talvez seja porque os primeiros campos da coluna "NOME", estão vazios.
porem ele não mostra o nome completo das pessoas a partir dos valores zerados, eu tenho somente um carácter para o campo nome.

porém quando uso assim:
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,nome FROM GRUPOS where IS_DELETED='N' order by nome desc " )
ele não traz o campo nome com mascara de um caracter somente,
mas eu preciso da ordem asc.
nomedesc.png


alguém pode me ajudar?
Avatar de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 13:22

Ola!
Eu vejo que isso é um problema, que quando ele vai criar a estrutura do BROWSE ou DBF está pegando campo com NULL, e o tamanho está sendo setado para space(1), mudando a estrutura lá no MYSQL para NOT NULL deve resolver isso.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 13:28

Dá uma lida aqui neste post, deve ajudar ai no select...
http://stackoverflow.com/questions/5285448/mysql-select-only-not-null-values

SELECT col1, col2, ..., coln
FROM yourtable
WHERE col1 IS NOT NULL
AND col2 IS NOT NULL
-- ...
AND coln IS NOT NULL


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor Karine Lima Almeida » 23 Jun 2015 13:32

Itamar,
eu troquei:
notnull.png
notnull.png (9.8 KiB) Visualizado 4333 vezes


mas ainda não deu certo e também fiz:
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,nome FROM GRUPOS where IS_DELETED='N' and nome IS NOT NULL order by nome " )

att. Karine
Avatar de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 13:37

Vc setou para DEFAULT "" Carcatere sem nada.
Melhor deixar NULL, e usar o select IS NOT NULL ou colocar alguma coisa lá nos campos que estão NULL tipo "AQUI CAMPO SEM DESCRICAO" naqueles 12 primeiros...

O select falhou por isso.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor alxsts » 23 Jun 2015 13:45

Olá!

Use as funções IfNull() e Space() do MySQL:
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) FROM GRUPOS where IS_DELETED='N' order by nome " )
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor Karine Lima Almeida » 23 Jun 2015 13:49

Eu entendi Itamar,
e não são so 12 kkk
são 56946
situacao2.png
situacao2.png (9.09 KiB) Visualizado 4329 vezes


eu não posso ignora-los são valores que tem que aparecer nessa consulta, mesmo que não tenha nome.
Avatar de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagempor Karine Lima Almeida » 23 Jun 2015 14:18

Oi alxsts, obrigada pela dica, funciona no comando sql, e é exatamente o que eu preciso,

DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) FROM GRUPOS where IS_DELETED='N' order by nome " )

só que no meu código da esse erro:
eval.png
eval.png (3.84 KiB) Visualizado 4320 vezes


vc sabe me dizer o que é?
Avatar de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 14:43

Ai é no tbrowse...
Cadê o código ?

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 14:58

Ola!
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) FROM GRUPOS where IS_DELETED='N' order by nome " )

Troque por:
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) as nome FROM GRUPOS where IS_DELETED='N' order by nome ","Nome_Do_DBF" )


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor Karine Lima Almeida » 23 Jun 2015 15:05

Itamar eu tentei o "as"

funcionou com isso: sem o 'as"

DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IFNULL(nome,space(35)) nome FROM GRUPOS; " )

obrigada a todos!
Avatar de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagempor Itamar M. Lins Jr. » 23 Jun 2015 15:19

funcionou com isso: sem o 'as"

Deve ser a versão do seu MySQL aqui é o 5.6.
E eu uso o Harbour 3.4 fork do Viktor Szakats.
   dbUseArea( .T., , "SELECT code, ifnull(name,space(35)) as Nome, residents FROM country", "country" )
   Browse()


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor alxsts » 23 Jun 2015 15:36

Olá!

Esqueci de colocar o nome da coluna. Toda vez que se usa uma função no SELECT, é preciso fazer isto pois não é gerado. Aliás, usar apelidos (alias) de colunas é um recurso muito útil com TBrowseDB(), pois já retorna os nomes desejados para as colunas. O erro que ocorreu foi na função Browse(), como informou o Itamar, pois ela recebeu uma coluna sem nome.

No caso da função IfNull(), você pode optar por colocar outro valor ao invés de espaços, do mesmo tipo de dados da coluna. Exemplo:
dbUseArea( .T., , "SELECT code Código, IfNull(name,RPad('   *** Não disponível ***', 35, ' ') ) País, residents 'Poupulação do País'  FROM country", "country"
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

SQLMIX SELECT de nomes com valores vazios

Mensagempor Karine Lima Almeida » 23 Jun 2015 15:48

Legal alxsts,

e se por exemplo eu querer usar select * from tabela, vai ter alguma forma de fazer esse consulta
atribuindo o ifnull(nome,space(35)) ?

att. Karine
Avatar de usuário

Karine Lima Almeida
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 25
Data de registro: 27 Set 2013 10:38
Cidade/Estado: Limeira-SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagempor alxsts » 23 Jun 2015 16:05

Olá!

Não, com SELECT * não tem jeito. O tratamento deve ser feito nas colunas que precisarem dele, individualmente. Aliás, já postei que a boa prática é sempre colocar os nomes das colunas, mesmo que sejam todas, ao invés de usar SELECT *.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro