SQLMIX SELECT de nomes com valores vazios
Moderador: Moderadores
- Karine Lima Almeida
- 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
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: 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. alguém pode me ajudar?
é 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: 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. alguém pode me ajudar?
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
SQLMIX SELECT de nomes com valores vazios
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.
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.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
SQLMIX SELECT de nomes com valores vazios
Dá uma lida aqui neste post, deve ajudar ai no select...
http://stackoverflow.com/questions/5285 ... ull-values
Saudações,
Itamar M. Lins Jr.
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
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Karine Lima Almeida
- 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
Itamar,
eu troquei: 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
eu troquei: 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
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
SQLMIX SELECT de nomes com valores vazios
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.
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.
Itamar M. Lins Jr.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
SQLMIX SELECT de nomes com valores vazios
Olá!
Use as funções IfNull() e Space() do MySQL:
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)
Alexandre Santos (AlxSts)
- Karine Lima Almeida
- 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
Eu entendi Itamar,
e não são so 12 kkk
são 56946
eu não posso ignora-los são valores que tem que aparecer nessa consulta, mesmo que não tenha nome.
e não são so 12 kkk
são 56946
eu não posso ignora-los são valores que tem que aparecer nessa consulta, mesmo que não tenha nome.
- Karine Lima Almeida
- 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
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: vc sabe me dizer o que é?
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: vc sabe me dizer o que é?
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
SQLMIX SELECT de nomes com valores vazios
Ai é no tbrowse...
Cadê o código ?
Saudações,
Itamar M. Lins Jr.
Cadê o código ?
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
SQLMIX SELECT de nomes com valores vazios
Ola!
Itamar M. Lins Jr.
Troque por:DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) FROM GRUPOS where IS_DELETED='N' order by nome " )
Saudações,DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IfNull(nome, Space(35)) as nome FROM GRUPOS where IS_DELETED='N' order by nome ","Nome_Do_DBF" )
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Karine Lima Almeida
- 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
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!
funcionou com isso: sem o 'as"
DBUSEAREA( .T., 'SQLMIX', "SELECT codigo,IFNULL(nome,space(35)) nome FROM GRUPOS; " )
obrigada a todos!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
SQLMIX SELECT de nomes com valores vazios
Deve ser a versão do seu MySQL aqui é o 5.6.funcionou com isso: sem o 'as"
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()
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
SQLMIX SELECT de nomes com valores vazios
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:
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)
Alexandre Santos (AlxSts)
- Karine Lima Almeida
- 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
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
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

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
SQLMIX SELECT de nomes com valores vazios
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 *.
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)
Alexandre Santos (AlxSts)