SQLMIX SELECT de nomes com valores vazios

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

Moderador: Moderadores

Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

SQLMIX SELECT de nomes com valores vazios

Mensagem por Karine Lima Almeida »

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) Exibido 5844 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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagem por Itamar M. Lins Jr. »

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagem por Itamar M. Lins Jr. »

Dá uma lida aqui neste post, deve ajudar ai no select...
http://stackoverflow.com/questions/5285 ... ull-values

Código: Selecionar todos

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

SQLMIX SELECT de nomes com valores vazios

Mensagem por Karine Lima Almeida »

Itamar,
eu troquei:
notnull.png
notnull.png (9.8 KiB) Exibido 5835 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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagem por Itamar M. Lins Jr. »

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.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

SQLMIX SELECT de nomes com valores vazios

Mensagem por alxsts »

Olá!

Use as funções IfNull() e Space() do MySQL:

Código: Selecionar todos

DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) FROM GRUPOS where IS_DELETED='N' order by nome " )
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

SQLMIX SELECT de nomes com valores vazios

Mensagem por Karine Lima Almeida »

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

eu não posso ignora-los são valores que tem que aparecer nessa consulta, mesmo que não tenha nome.
Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

SQLMIX SELECT de nomes com valores vazios

Mensagem por Karine Lima Almeida »

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) Exibido 5822 vezes
vc sabe me dizer o que é?
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagem por Itamar M. Lins Jr. »

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

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagem por Itamar M. Lins Jr. »

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

SQLMIX SELECT de nomes com valores vazios

Mensagem por Karine Lima Almeida »

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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

SQLMIX SELECT de nomes com valores vazios

Mensagem por Itamar M. Lins Jr. »

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.

Código: Selecionar todos

   dbUseArea( .T., , "SELECT code, ifnull(name,space(35)) as Nome, residents FROM country", "country" )
   Browse()
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

SQLMIX SELECT de nomes com valores vazios

Mensagem por alxsts »

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:

Código: Selecionar todos

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)
Avatar do usuário
Karine Lima Almeida
Usuário Nível 1
Usuário Nível 1
Mensagens: 25
Registrado em: 27 Set 2013 10:38
Localização: Limeira-SP

SQLMIX SELECT de nomes com valores vazios

Mensagem por Karine Lima Almeida »

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
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

SQLMIX SELECT de nomes com valores vazios

Mensagem por alxsts »

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)
Responder