none
apostrofe RRS feed

  • Pergunta

  • Olá Pessoal, alguém pode me ajudar com esse problema?

    É possível aceitar num campo textbox o símbolo de apóstrofe ?

    Tenho um cadastro de cliente onde alguns nomes usam esse símbolo e está dando problema quando salva.

    Obrigado!!!

    sábado, 30 de março de 2019 20:29

Respostas

  • No meu caso testei a parametrização para ver se resolvia, mas não adiantou. Tive que tratar dessa maneira mesmo.

    “First do it, then do it right, then do it better.” - Addy Osmani

    • Marcado como Resposta RViveiros segunda-feira, 24 de junho de 2019 13:36
    quarta-feira, 3 de abril de 2019 13:01

Todas as Respostas

  • Olá, RViveiros!

    Você usa querys SQL? TextBoxes não tem restrição quanto a isso, mas dependendo do tratamento que estiver fazendo, pode causar problema na sua query SQL, caso use.


    “First do it, then do it right, then do it better.” - Addy Osmani

    sábado, 30 de março de 2019 21:57
  • olá Wallace, obrigado pelo retorno.

    Sim, uso SQL Server 2012, Visual Basic 2017 em VB.

    O único tratamento que coloquei na Textbox foi o Upper.

    Porém, quando digito algum nome com " ' ", ele não salva no SQL.

    A query que estou usando é INSERT INTO quando o registro é novo.

    UPDATE, quando o registro é existente.

    Aguardo retorno.

    Abs

    domingo, 31 de março de 2019 22:43
  • Mais uma informação, caso ajude na solução.

    Utilizo a Busca de CEP dos Correios. E quando no campo nome da rua vem com apóstrofe, é mais um caso de não salvar na base de dados SQL.

    Abs

    domingo, 31 de março de 2019 23:16
  • Passei por uma situação semelhante há algum tempo atrás. No meu caso tinha uma SQL semelhante a essa:

    string sql ="INSERT INTO CLIENTE (NOME, CIDADE) VALUES ('{Nome}', '{Cidade}')";
    
    database.ExecutarQuery(sql);

    No entanto, se o nome inserido tivesse alguma aspa simples, dupla ou apóstrofe, a query não funcionava. Acontecia que, por ser concatenação de string, a query acabava não sendo formada corretamente. Resolvi fazendo um replace nos dados de entrada do meu formulário.

    // Para INSERT, UPDATE
    Nome = Nome.Replace("'", "&apos").Replace("""", "&aspa");
    
    //Para SELECT
    Nome.Replace("&apos","'").Replace("&aspa", """");

    Experimente fazer esse tipo de tratamento e veja se funciona. Para mim resolveu perfeitamente.


    “First do it, then do it right, then do it better.” - Addy Osmani

    segunda-feira, 1 de abril de 2019 12:23
  • Olá Wallace, obrigado pelo retorno.

    Você substituiu a aspa simples(apóstrofe) por uma dupla ? é isso ?

    Abs

    segunda-feira, 1 de abril de 2019 14:18
  • Olá, tenta ajustar o conteúdo do TextBox de uma aspa simples para duas aspas simples...

    TextBox1.Text = TextBox1.Text.Replace("'", "''");
    

    Fonte: https://stackoverflow.com/a/1586588

    Se ajudou, marque como resposta! Obrigado.

    segunda-feira, 1 de abril de 2019 14:40
  • No meu caso substitui por outro caractere e depois fiz o processo inverso para recuperar o texto na mesma forma que o usuário digitou. O importante é retirar do texto aquilo que está atrapalhando, que no seu caso é o apóstrofo.

    Você retira e grava o texto modificado no banco de dados. Na hora de recuperar do banco de dados, faça o processo inverso.


    “First do it, then do it right, then do it better.” - Addy Osmani

    segunda-feira, 1 de abril de 2019 15:38
  • Ao invés de fazer esses tratamentos que a longo prazo podem te trazer problemas, você pode usar os parâmetros para fazer sua solicitação.

    Por exemplo:

    Dim cmd As   New   OleDbCommand 
    
    cmd.Connection = con
    cmd.CommandText   =   "INSERT INTO MINHATABELA(CAMPO1, CAMPO2) SELECT campo1 + @seuparametro FROM MINHATABELA WHERE CAMPO2=true" 
     
    cmd.Parameters.Add("@seuparametro", OleDbType.VarChar).Value = TxtRecebeParametro.Text

    Se foi útil marque como respota.

    Abraço! :)

    quarta-feira, 3 de abril de 2019 12:57
  • No meu caso testei a parametrização para ver se resolvia, mas não adiantou. Tive que tratar dessa maneira mesmo.

    “First do it, then do it right, then do it better.” - Addy Osmani

    • Marcado como Resposta RViveiros segunda-feira, 24 de junho de 2019 13:36
    quarta-feira, 3 de abril de 2019 13:01