Clique abaixo para nos ajudar
Login

Esqueci minha senha

Estamos no Facebook
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Quem está conectado
20 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 20 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
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

Tudo dá errado

3/2/2017, 16:50 por Douglas Pascini

Troquei de maquina, achei que seria uma boa, [Você precisa estar registrado e conectado para ver esta imagem.]  pois passei para uma maquina melhor.

Instalei o …

Comentários: 1

URGENTE - Instalação do aplicativo

24/1/2017, 08:51 por Douglas Pascini

Bom dia. Estou com um problema, ao fazer a instalação (colocar os arquivo) do aplicativo na …

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

Estatísticas
Temos 7018 usuários registrados
O último usuário registrado atende pelo nome de Marcos Souza

Os nossos membros postaram um total de 21 mensagens em 12 assuntos

Collations

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

Resolvido Collations

Mensagem por brulec em 17/7/2009, 14:37

Estou com o seguinte problema.

Os campos do tipo varchar do meu banco de dados estão todos com COLLATE como 'latin1_swedish_ci'.

Só que eu notei que não consigo fazer pesquisas com algum caracter com trema, exemplo: "Müller". Ele não retorna a linha que contém esse caracter no campo.

Para simular basta criar um campo varchar com o collate 'latin1_swedish_ci' e inserir um registro com um caracter com trema. Tente fazer a pesquisa sem o trema com a "LIKE".
Se eu alterar o collate para 'latin1_german1_ci' funciona!

Eu queria saber se tem uma forma de eu alterar todas as colunas no banco com essa collate. E se tem perigo de ocorrer algum efeito não esperado nas pesquisas.

Obrigado.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 18/7/2009, 10:17

brulec fiz uns testes para simular o problema que está ocorrendo contigo, mas não tive o mesmo problema.

Só que eu notei que não consigo fazer pesquisas com algum caracter com trema, exemplo: "Müller". Ele não retorna a linha que contém esse caracter no campo.
- De que forma você está realizando as consultas? Poderias postar um exemplo?
- Você verificou a questão de caracteres maiúsculos e minúsculos?
- Que ferramenta estais utilizando para realizar as consultas? Utilizo o MySQLQueryBrowser e através do mesmo pude verificar que as palavras chegam corretamente e minhas consultas obtiveram sucesso.

Eu queria saber se tem uma forma de eu alterar todas as colunas no banco com essa collate. E se tem perigo de ocorrer algum efeito não esperado nas pesquisas.
Eu não lhe aconselharia realizar uma alteração deste tipo em seu banco, principalmente se ele já conter dados, pois poderá interferir em algumas coisas.
Se irás começar algo a partir do zero, então acredito não haver problemas.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 18/7/2009, 19:14

Marcos, estou usando o like, e o problema ocorre sim. ex:

select * from pessoa where nome like "%Muller%"

Obs.: Note que a pesquisa está sem trema. Mas pela expressão like deveria trazer tbm, mas não traz...já testei com outras pessoa e o problema ocorre mesmo.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 18/7/2009, 23:51

Brulec, creio que você está enganado.
A seguinte expressão:
Código:
select * from pessoa where nome like "%Muller%"
Devolverá todos os registros da tabela pessoa, onde existe, em algum lugar, no campo nome a palavra "Muller".
Neste caso, "Muller" é diferente de "Müller", em alguns casos também é diferente de "MULLER" ou "MuLLer". E por aí vai...

De acordo com a linguagem que você esteja usando para acessar o banco, o ideal seria você criar uma função/método para tratar palavras com acentos.

Espero ter esclarecido sua dúvida!

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 19/7/2009, 10:13

Marcos quando voce usa o like ele ignora os acentos, pode testar pesquisa uma pálavra que tenha acento (exceto o trema) sem o acento, ele acha também.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 08:13

Você tem razão, Brulec!
Fiz uns testes e apenas o trema não é devolvido.

Pelo que pesquisei até o momento, a única solução seria criar uma função para retirar acentos e utilizá-la no SELECT.
Continuarei pesquisando, mas se desejares utilizar função, segue dois exemplos os quais você poderá converter para a linguagem que você está utilizando.

Javascript:
http://forum.programacaobrasil.com/javascript-f45/funyyees-yteis-t61.htm?sid=2f1f68089ce8cb5328e1406f0d760851#101

ASP Clássico:
http://forum.programacaobrasil.com/asp-f3/funyyees-yteis-t60.htm#98

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 20/7/2009, 08:48

Bom dia Marcos, mas não entendi como posso utilizar uma função dessas no select, pois a pesquisa já é feita sem acento, o problema é o item pesquisado que está no banco, esse não tem como ignorar o acento. Você tentou depois utilizar o tipo 'latin1_german1_ci' ? Deu certo daí né?

T+

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 08:56

Não mudei para latin1_german1_ci porque creio que você já esteja com sua tabela preenchida, então não seria uma boa trocar para esta opção pois poderia lhe causar problemas no registro e também nas consultas futuramente.

Estais usando que linguagem para acessar o banco mysql?

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 20/7/2009, 09:41

FoxPro

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 11:20

Brulec, como ouve mudança na ortografia brasileira (http://recantodasletras.uol.com.br/gramatica/1379990), eu incluiria o conteúdo sem o sinal de trema, da seguinte forma:

Função para remover o "trema" da letra "U/u":
Código:
FUNCTION tirartrema
   LPARAMETERS conteudo AS STRING

   m.conteudo = STRTRAN(m.conteudo, "ü", "u")
   m.conteudo = STRTRAN(m.conteudo, "Ü", "U")
   
   RETURN m.conteudo
ENDFUNC

No meu caso, utilizo a rotina abaixo para trabalhar com MySQL x VFP (http://forum.programacaobrasil.com/visual-foxpro-f4/mysql-x-visual-foxpro-t72.htm?highlight=mysql):
Código:
DEFINE CLASS acessomysql AS CUSTOM

   HIDDEN conexao AS adodb.CONNECTION
   gnconnhandle = 0
   *strconexao="DRIVER={MySQL ODBC 3.51 Driver};SERVER=200.111.111.111;DATABASE=NOMEDOBANCO;USER=NOMEDOUSUARIO;PASSWORD=SENHA;OPTION=3;"
   strconexao="Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=teste; User=root;Password=12345;Option=3;"

   FUNCTION conectamysql AS logical
      *!* Conecta-se ao banco de dados a partir da string de conexão
      THIS.gnconnhandle = SQLSTRINGCONNECT(THIS.strconexao)
      RETURN THIS.gnconnhandle
   ENDFUNC

   FUNCTION desconectamysql AS logical
      LPARAMETERS gnconnhandle AS INTEGER
      *!*
      IF (VARTYPE(m.gnconnhandle)!="N") THEN
         m.gnconnhandle=THIS.gnconnhandle
      ENDIF
      *!*
      IF (m.gnconnhandle>=0) THEN
         RETURN SQLDISCONNECT(m.gnconnhandle)
      ELSE
         RETURN -1
      ENDIF
   ENDFUNC

   FUNCTION executacomando
      LPARAMETERS gnconnhandle AS INTEGER, comandosql AS STRING, nomecursor AS STRING
      *!*
      IF (THIS.gnconnhandle>=0) THEN
         IF (VARTYPE(m.gnconnhandle)!="N") THEN
            m.gnconnhandle=THIS.gnconnhandle
         ENDIF
         *!*
         RETURN SQLEXEC(m.gnconnhandle,m.comandosql,m.nomecursor)
      ELSE
         RETURN -1
      ENDIF
   ENDFUNC

   HIDDEN PROCEDURE INIT AS void
      THIS.conexao = NEWOBJECT("adodb.connection")
   ENDPROC

   HIDDEN PROCEDURE DESTROY AS void
      THIS.conexao = NULL
   ENDPROC
ENDDEFINE

Então o INSERT ficaria da seguinte forma:
Código:
CLEAR
m.obj = NEWOBJECT('acessoMysql')
m.nomecursor = SYS(2015)
m.gnconnhandle = m.obj.conectamysql()
?m.gnconnhandle
*!* INSERT
?m.obj.executacomando(m.gnconnhandle, "INSERT INTO teste1 VALUES ('"+tirartrema("üüüüüüüü")+"')", m.nomecursor)
*!* SELECT
?m.obj.executacomando(m.gnconnhandle, "SELECT * FROM teste1 WHERE campo1 LIKE '%u%'", m.nomecursor)
?m.obj.desconectamysql(m.gnconnhandle)
*!*
IF USED(m.nomecursor) THEN
   SELECT(m.nomecursor)
   BROWSE
   USE IN SELECT(m.nomecursor)
ENDIF
*!*
m.obj = NULL

Espero ter ajudado!
Se eu conseguir uma forma de filtrar os dados com trema sem alterar a estrutra da tabela, lhe comunico.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 20/7/2009, 11:55

Marcos, infelizmente não posso fazer isso, pois trata-se de nomes próprios, e o sistema que trabalho é para cartórios, aí o negócio complica mais ainda. Mas blz, eu dei uma olhada nos seguinte comandos no mysql.
Fiz um inserto com o nome 'Röberto' e utilizei o seguinte select:
Código:

select * from pessoaf where nom_pef like _latin1 "%ROBERTO%" COLLATE latin1_german1_ci;

Blz, ele retornou só que agora se eu pesquisar por 'RÖBERTO' (com trema), não acha. Bah, complicado esse negócio.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 12:13

Ótima solução!
Tente desta forma, então:
Código:
select * from pessoaf where nom_pef like "RÖBERTO" OR nom_pef like _latin1 "%ROBERTO%" COLLATE latin1_german1_ci;
Comigo funcionou!

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 20/7/2009, 13:27

Funciona, mas no meu caso vai ser mais complicado, afinal aqui a pesquisa nos sistemas, é única pra tudo, o buraco é mais em baixo, mas de qualquer forma obrigado pela ajuda Marcos. Se conseguíssemos fazer mais pessoas utilizarem esse fórum sobre Mysql, seria ótimo, afinal não encontrei nenhum outro fórum interessante sobre o Mysql. O do VfpBrasil tá meio abandonado né.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 13:50

Funciona, mas no meu caso vai ser mais complicado, afinal aqui a pesquisa nos sistemas, é única pra tudo, o buraco é mais em baixo...
Estais usando o fox, não é?!
De que forma estais acessando o banco?
Como se trata apenas de uma condição, creio que não irá interferir nas consultas (para este caso).

Se conseguíssemos fazer mais pessoas utilizarem esse fórum sobre Mysql, seria ótimo, afinal não encontrei nenhum outro fórum interessante sobre o Mysql.
Isto é verdade!
Tenho divulgado o máximo que posso, mas aos poucos chegaremos lá.
hehe

Este semestre irei pagar banco de dados na universidade, e provavelmente a linguagem será MySQL, então aproveitarei para divulgar aos alunos também.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 20/7/2009, 13:54

Uso fox sim, mas a questão é que aqui os comandos de select, como posso dizer, "se montam sozinhos" (isso incluindo joins e tudo). E assim eu teria que verificar o tipo de campo no banco de dados para incluir essa cláusula collate. Bom, é difícil explicar isso, pra entender só vendo mesmo, heheeh.
Blz então Marcos, vou continuar pesquisando pra ver oque encontro sobre isso.

Valeu

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 14:50

Tens como postar uma parte da estrutura?
Tenho muitos SELECT's que são gerados sozinhos em minhas aplicações.

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 20/7/2009, 14:57

Infelizmente não Marcos, tem muita coisa ligada uma na outra.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 14:59

Ok, então!
Sem problemas!
Qualquer coisa, estou a disposição.
Smile

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 20/7/2009, 20:02

Brulec, andei pesquisando com um colega meu e ele me lembrou do coringa.
Serviria para você se fosse uma pesquisa deste tipo:
Código:
select * from pessoaf where nom_pef like "%M_uller%"
????
Dependendo da situação, bastaria você colocar um STRTRAN() no nome, subistituíndo o "Ü/ü" por um "_".

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 21/7/2009, 07:59

Bom dia Marcos, interessante esse caracter coringa, nem sabia que tinha. Eu uso sempre o '%'. Só que isso também não ajuda pois o problema está quando o usuário pesquisa sem 'ü' por exemplo, ele coloca apenas 'u'. Valew

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 21/7/2009, 08:14

É isto que estou tentando te explicar.
Se você usar a função STRTRAN() não terá muito com o que se preocupar,
pois será alterada apenas a letra desejada.
Executa o código abaixo e verifica como ficaria o teu SELECT:
Código:
CLEAR
LOCAL oqBusca as String && Conteúdo que será pesquisado
LOCAL oSelect as String && SELECT

*!* Exemplo com "U" (sem trema)
m.oqBusca = "Muller"
m.oqBusca = STRTRAN(m.oqBusca, "U", "_")
m.oqBusca = STRTRAN(m.oqBusca, "u", "_")
m.oqBusca = STRTRAN(m.oqBusca, "Ü", "_")
m.oqBusca = STRTRAN(m.oqBusca, "ü", "_")

m.oSelect = "SELECT * FROM suaTabela WHERE campo like '%" + m.oqBusca + "%'"
?m.oSelect

*!* Exemplo com "Ü" (com trema)
m.oqBusca = "Müller"
m.oqBusca = STRTRAN(m.oqBusca, "U", "_")
m.oqBusca = STRTRAN(m.oqBusca, "u", "_")
m.oqBusca = STRTRAN(m.oqBusca, "Ü", "_")
m.oqBusca = STRTRAN(m.oqBusca, "ü", "_")

m.oSelect = "SELECT * FROM suaTabela WHERE campo like '%" + m.oqBusca + "%'"
?m.oSelect

*!* Outro exemplo qualquer
m.oqBusca = "Maria"
m.oqBusca = STRTRAN(m.oqBusca, "U", "_")
m.oqBusca = STRTRAN(m.oqBusca, "u", "_")
m.oqBusca = STRTRAN(m.oqBusca, "Ü", "_")
m.oqBusca = STRTRAN(m.oqBusca, "ü", "_")

m.oSelect = "SELECT * FROM suaTabela WHERE campo like '%" + m.oqBusca + "%'"
?m.oSelect

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 21/7/2009, 09:32

UHm, entendi, voce diz substituir o "U" também. É, seria uma alternativa. Se não achar algo que posso sera melhorado no banco acho que vou ter que partir para essa idéia mesmo. Quero esgotar todas as alternativas antes de fazer algo assim. Porque, parece meio "errado" eu alterar a string que está sendo pesquisada pelo usuário, levando-se em conta que se ele digita um "u" ali, ele realmente quer um "U" entendeu? hehe... Sem falar que eu teria que fazer com as outras vogais também. Teria que fazer algo do tipo:

Código:

Chrtran(cFilttro,'AEIOUaeiou','__________')

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 21/7/2009, 09:57

Porque, parece meio "errado" eu alterar a string que está sendo pesquisada pelo usuário, levando-se em conta que se ele digita um "u" ali, ele realmente quer um "U" entendeu?
Você poderia acrescentar uma opção à busca.
Algo do tipo, "Pesquisar exatamente por" (Esta seria marcada apenas quando o usuário quizesse uma pesquisa exata.).

Sem falar que eu teria que fazer com as outras vogais também.
Isto iria depender das palavras aceitas pelo seu sistema.
Antes da mudança na gramática brasileira, creio que - no Brasil - usava-se trema apenas na letra "U/u"

Continuarei pesquisando outras alternativas também.
Caso você escolha por uma das opções discutidas, favor nos comunicar para darmos o tópico como resolvido.
Smile

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por brulec em 21/7/2009, 10:10


Isto iria depender das palavras aceitas pelo seu sistema.
Antes da mudança na gramática brasileira, creio que - no Brasil - usava-se trema apenas na letra "U/u"

Como disse antes, meu sistema não depende da grámatica brasileira, pois trata-se de um sistema para cartório, tremas são muito usados na lingua alemã por exemplo. E nomes próprios é muito comum o uso do trema em algumas linguas. Vou continuar pesquisando. Mas se você achar melhor, poderia setar o tópico como resolvido, pois já foram dados algumas soluções para o problema.
Mais uma vez, obrigado pela ajuda Marcos.

brulec
Começando a Participar
Começando a Participar


Voltar ao Topo Ir em baixo

Resolvido Re: Collations

Mensagem por Marcos Guedes em 22/7/2009, 13:56

Brulec, se isto não resolver, acho que não há outra solução.
Very Happy

Testa desta forma:
Código:
select * from pessoaf where nom_pef SOUNDS like '%muller%'
select * from pessoaf where nom_pef SOUNDS like '%röberto%'

Espero ter conseguido lhe ajudar!
Smile

Marcos Guedes
Webmaster
Webmaster


Voltar ao Topo Ir em baixo

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