Notifications
Clear all

Como corrigir esse erro no SQL?

4 Posts
1 Usuários
0 Reactions
1,200 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Pessoal,
tenho um formulário no excel onde salvo algumas informações em uma banco em ACCESS, um comando simples...

Public Sub insert_dados()

    Dim connectionString As String
      connectionString = ThisWorkbook.Path & "/BD_RESP.MDB"
     Dim conn As ADODB.Connection
    Dim rst As ADODB.Recordset
    
    
   sql = "INSERT INTO Respostas (NOME, Resp1, Resp2, Resp3, Resp4, Resp5, Resp6, Resp7, Resp8, Resp9,Resp10,Resp11) VALUES('" & UserForm1.TextBox1.Value & "' , '" & Plan2.Cells(1, 3).Value & "', '" & Plan2.Cells(2, 3).Value & "' , '" & Plan2.Cells(3, 3).Value & "', '" & Plan2.Cells(4, 3).Value & "', '" & Plan2.Cells(5, 3).Value & "', '" & Plan2.Cells(6, 3).Value & "', '" & Plan2.Cells(7, 3).Value & "', '" & Plan2.Cells(8, 3).Value & "', '" & Plan2.Cells(9, 3).Value & "', '" & Plan2.Cells(10, 3).Value & "', '" & Plan2.Cells(11, 3).Value & "')"

    ' Cria o objeto Connection.
    Set conn = New ADODB.Connection
    With conn
        ' Define o provedor OleDB para a conexão.
        .Provider = "Microsoft.JET.OLEDB.4.0"
        ' Abre uma conexão com o Northwind.mdb.
        .Open connectionString ', "Administrador", "Sin@09!"
    End With
    Set rst = New ADODB.Recordset
    With rst
        .ActiveConnection = conn
        .Open sql, conn, adOpenDynamic, adLockBatchOptimistic
    End With

    Set rst = Nothing
    conn.Close
    End Sub

porém se alguma das minhas resposta tiver um aspas ( ' ), ele me retorna um erro.

Erro de sintaxe ( Operador Faltando ) na expressão de consulta...( o questão que tem a aspas)

Enfim, como faço para corrigir isso?, preciso que não aconteça esse erro caso alguma das resposta tiver aspas.

 
Postado : 23/08/2011 8:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Caio,

vai um palpite, pois sem o banco e os dados fica dificil "ver" o erro.

Se tiver algum campo data o mesmo deve ser inserido entre "#" e não haspas simples.

Tambem, normalmente a instrução sql finda com ";" .
Ou
Deve tratar os registros na origem antes de carregar para o mdb

 
Postado : 23/08/2011 1:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Em relação a Data tudo bem,
O lance do erro é quando a pessoa digita por exemplo CAIXA D'AGUA..

ai essa aspas vai me retornar um erro.

a minha dúvida é, qual a forma mais fácil de tratar isso???

 
Postado : 23/08/2011 2:04 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vc pode alterar a origem subistituindo "'" por "" (ou algum outro valor)
a sintese seria

Cells(1, 1) = Application.WorksheetFunction.Substitute(Cells(1, 1), "'", "")

 
Postado : 23/08/2011 2:23 pm