INCLUSO DE DADOS COM APOSTROFE NO BANCO

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

INCLUSO DE DADOS COM APOSTROFE NO BANCO

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#464509 - 05/07/2016 20:05:47

MILTONSILVA94
CANOAS / RIO GRANDE DO SUL
Cadast. em:Janeiro/2015


Sempre que digito um [](apostrofe) em um campo de texto na minha tela ele apresenta []Erro de sintaxe (operador faltando) na expresso de consulta[]...

Nas telas que tem diversos campos, vou colocar replace para cada campo?

Abaixo um exemplo de outro formulrio, como deveria fazer para ele no apresentar o erro ao salvar no banco?
lsql = []INSERT INTO AGENDAMENTOS (id_agendamento, data_hora, nome, telefone, data, horario, descricao, valor_total_rs, status_agendamento, atualizado_por, ultima_atualizacao) Values ([] & txtIdAgendamento.Text & [], [][] & txtDataHora.Text & [][], [][] & txtNome.Text & [][], [][] & txtTelefone.Text & [][], [][] & txtData.Text & [][], [][] & txtHorario.Text & [][], [][] & txtDescricao.Text & [][], [][] & FormatNumber(txtValorTotalRs.Text, 2) & [][], [][] & []AGENDADO[] & [][], [][] & lblAtualizadoPor.Caption & [][], [][] & lblUltimaAtualizacao.Caption & [][])[]



#464510 - 05/07/2016 20:38:26

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
PARE de usar concatenao para SQL. Use comandos parametrizados.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#464514 - 05/07/2016 22:03:24

MILTONSILVA94
CANOAS / RIO GRANDE DO SUL
Cadast. em:Janeiro/2015






Resposta escolhida #464515 - 05/07/2016 22:22:59

IRENKO
BELO HORIZONTE
Cadast. em:Janeiro/2005


Talvez ajude com essa funo:

Public Function ComApostrofo(Str As String, Optional lngPos As Long = 1) As String

    Dim intPosStr As Integer []variavel que recebe a posicao do caracter da string
    
    intPosStr = InStr(lngPos, Str, [][][])
    If intPosStr > 0 Then
        ComApostrofo = Left(Str, intPosStr) & [][][] & Mid(Str, intPosStr + 1)
        Str = ComApostrofo
    End If
    
    If InStr(intPosStr + 2, Str, [][][]) > 0 Then
        Str = ComApostrofo(Str, intPosStr + 2)
    End If
    
    ComApostrofo = Str
End Function

Chamando:
ComApostrofo(txtNome.Text)



#464518 - 05/07/2016 22:56:14

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Se no puder fazer como disse o Kerpelunk, ento faa assim:
Exemplo:[][] & Replace(txtDescricao.Text,[][][],[][][][]) & [][]




#464524 - 06/07/2016 00:57:05

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Gente, tentem ver isso como uma crtica construtiva: Enquanto ficarem focados nesses []workarounds[], nunca vo conseguir aprender de verdade. No v pela via do []remediar[], ao invs disso, faa do jeito certo que nunca mais vai ter problemas e mesmo que tenha, eles sero muito mais fceis de serem resolvidos. Usem orientao objetos, usem ORM[]s para seus projetos, usem sempre as melhores prticas. Elas no so para []ter cdigo bonitinho[], elas existem e so adotadas pelos melhores profissionais porque so realmente melhores, no questo esttica, no questo de modinha, simplesmente so as melhores prticas mesmo. Ficar insistindo nos erros, no vai levar lugar algum, pelo contrrio, vai s atrasar sua evoluo profissional.

_______________________________________________________________________
Virei Orculo!
The end is nigh, be ready for the nukes!


#464526 - 06/07/2016 01:17:21

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


concordo com Kerplunk,
estou a apenas 3 semanas estudando C#, tentando utilizar as melhores prticas possveis
e no h um dia sequer que no vejo vantagens sobre o VB6. Me arrependo profundamente de no ter migrado antes.

realmente um sql concatenado desse jeito chega doer na alma quando se conhece recursos novos.












#464529 - 06/07/2016 07:19:01

PERCIFILHO
MATAO [SP]
Cadast. em:Dezembro/2009


MiltonSilva, concordo em gnero, nmero e grau com o Kerplunk. J tive muitos problemas como esses que voc est tendo e tambm []apanhei[] muito at conseguir resolver todos, porm, depois que descobri novas tcnicas mostradas pelo Kerplunk nos vdeos do canal dele, confesso que fiquei maravilhado com as vantagens. Ainda ontem eu estava pensando nisso, antigamente, para se fazer um simples cadastro eu gastava horas codificando e corrigindo os erros que apareciam (sempre apareciam), hoje com orientao a objetos e reflection, eu consigo fazer um simples cadastro em menos da metade desse tempo, e com menos erros para corrigir.
No gosto de dizer isso, mas creio que j est na hora de voc tambm migrar para o C#, voc pode pensar que difcil, porm o que muda simplesmente a sintaxe e isso com o tempo voc vai se acostumando. A lgica ser sempre a mesma. Quando voc ver o que capaz de fazer com o C#, voc vai se arrepender de no ter migrado antes, como disse o nosso amigo Michaell. Pense nisso!!

____________________________________________________
No h nessa vida algo que no se possa alcanar, voc s precisa ir buscar.

#464536 - 06/07/2016 10:01:55

ROOLSI
ESTEIO
Cadast. em:Fevereiro/2015


Milton, tu pode usar o prprio ADO para inserir um registro na tabela, a propriedade ADDNEW ir fazer a incluso, e no ter problemas com o apstrofe.



#464541 - 06/07/2016 11:00:10

JCM0867
BALNEARIO CAMBORIU
Cadast. em:Março/2012


Uma vez s usava concatenao, ainda tenho muitas consultas assim, mas quando fao alguma manuteno ou novas colsultas uso Parametrizado  @
no tive mais problemas com o apostrofo


_____________________________________________
Precisando de um Sistema de Gesto Educacional?
Desenvolvido em VB.NET + SQL Server + Crystal Reports
Conhea nossa Soluo: www.cjsystem.com.br



#464951 - 19/07/2016 17:39:48

MILTONSILVA94
CANOAS / RIO GRANDE DO SUL
Cadast. em:Janeiro/2015


Citação:
:
Talvez ajude com essa funo:

Public Function ComApostrofo(Str As String, Optional lngPos As Long = 1) As String

    Dim intPosStr As Integer []variavel que recebe a posicao do caracter da string
    
    intPosStr = InStr(lngPos, Str, [][][])
    If intPosStr > 0 Then
        ComApostrofo = Left(Str, intPosStr) & [][][] & Mid(Str, intPosStr + 1)
        Str = ComApostrofo
    End If
    
    If InStr(intPosStr + 2, Str, [][][]) > 0 Then
        Str = ComApostrofo(Str, intPosStr + 2)
    End If
    
    ComApostrofo = Str
End Function

Chamando:
ComApostrofo(txtNome.Text)


IRENKO, irei testar hoje e fechar o tpico, obrigado

Muito obrigado aos demais pelas sugestes dada.



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


Tópico encerrado, respostas não sao permitidas
Encerrado por MILTONSILVA94 em 20/07/2016 21:01:37