ASPAS SIMPLES NO BINDING SOURCE

 Tópico anterior Próximo tópico Novo tópico

ASPAS SIMPLES NO BINDING SOURCE

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#474199 - 26/05/2017 15:02:59

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


Boa tarde, tenho um projeto onde realizo a pesquisa por nomes num binding source, at a, tudo funcionando, menos um pequeno detalhe: se uso o apstrofo tal como no nome: JOANA D[]ARC
o binding source d esse erro:
A expresso contm uma constante de cadeia de caracteres invlida: [].

Sei que a aspas simples (usada com apstrofo) usada como delimitador de texto em consultas SQL e at mesmo no binding source
tem como corrigir? mesmo que tenha que refazer todo o cdigo, no h problemas, quero evitar esse erro sem excluir o apstrofo dos nomes.
Sei que consultas parametrizadas pode-se usar o apstrofo sem problemas, mas a tabela muito grande, e filtrar cada vez que se digita uma letra perde-se desempenho. e sim, necessrio filtrar dessa forma: letra a letra

essa minha linha de filtro: BS.Filter = []Nome Like [][] & TxtNomePesquisa.Text & []%[][]

obrigado a todos


O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


Resposta escolhida #474201 - 26/05/2017 16:41:17

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


O desempenho que voc vai perder usando parmetros mnimo, tendo em vista, que o que ir demorar mesmo na consulta, o processamento de dados por parte do servidor e no no cliente.
Outra dica para um melhor desempenho, fazer uma indexao bem elaborada. No seu caso, criar um ndice no clusterizado para o campo Nome, parece ser uma boa (mas precisaria ver as outras consultas e a estrutura do seu banco)

Outra dica nesse caso, : antes de realizar a consulta, esperar uns 2 segundos. Porque o que acontece geralmente a pessoa digitar uma palavra e levar menos de 1 segundo entre uma letra e outra. A voc acaba carregando uma consulta que nem vai ser mais vlida, porque o cliente j digitou mais 2 letras. A ele vai passar por outra letra, e apenas depois chegar na consulta que voc quer. Manjou?

Caso no queira nada disso, voc pode considerar usar:

BS.Filter = []Nome Like [][] & TxtNomePesquisa.Text.Replace([][][],[][][][]) & []%[][]

Ou seja, substituindo aspas simples, por duas aspas simples... voc consegue o valor desejado. E ainda te livra de umas encrencas com SQL Injection rs

Abraos!

[]Cansei de frases intelectuais[] - Eu mesmo


#474243 - 29/05/2017 15:22:02

DAMASCENO.CESAR
ADAMANTINA
Cadast. em:Fevereiro/2009


DS2T, testei o replace e funcionou do jeito que eu queria, mas vou montar adequadamente com parmetros e o tempo de espera, obrigado, e desculpe a demora para responder

O conhecimento como o dinheiro: quanto mais temos, mais queremos ter (Josh Billings)  


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por DAMASCENO.CESAR em 29/05/2017 15:22:20