ERRO NO EXECUTENONQUERY

LUART 22/03/2016 17:24:09
#459679
Estou desenvolvendo um programa e quando vou gravar as informações nos diversos textboxes e maskedtextboxes acusa erro na linha do ExecuteNonQuery; estou no Microsoft Visual Studio 2013 e não aparece nenhum informação na depuração. Segue abaixo o que programei. Gostaria de saber onde estou errando.

Private Sub btnGravar_Click(sender As Object, e As EventArgs) Handles btnGravar.Click
If txtNome.Text = [Ô][Ô] Then
MsgBox([Ô]Informe o Nome do paciente.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]TxtNome.Locked = False
txtNome.Focus()
Exit Sub
End If
If txtData.Text = [Ô][Ô] Then
MsgBox([Ô]Informe a Data da Internação Clínica.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtData.Focus()
Exit Sub
End If
If txtDx.Text = [Ô][Ô] Then
MsgBox([Ô]Informe o/a Diagnóstico/Hipótese Diagnóstica.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtDx.Focus()
Exit Sub
End If
If txtEntrada.Text = [Ô][Ô] Then
MsgBox([Ô]Informe a Data da Entrada.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtEntrada.Focus()
Exit Sub
End If
If txtConvenio.Text = [Ô][Ô] Then
MsgBox([Ô]Informe o Convenio ou caso for particular informe no campo.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtConvenio.Focus()
Exit Sub
End If
If txtValor.Text = [Ô][Ô] Then
MsgBox([Ô]Informe o valor da internação.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtValor.Focus()
Exit Sub
End If
If TxtLocal.Text = [Ô][Ô] Then
MsgBox([Ô]Informe o local da internação.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
TxtLocal.Focus()
Exit Sub
End If
If txtAlta.Text = [Ô][Ô] Then
MsgBox([Ô]Informe a data da Alta ou Previsão (Edite o registro caso haja dias adicionais ou subtraidos).[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtAlta.Focus()
Exit Sub
End If
If txtDescricao.Text = [Ô][Ô] Then
MsgBox([Ô]Informe a Descrição.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtDescricao.Focus()
Exit Sub
End If

[ô]Dim Dcom As New OleDb.OleDbCommand
cnnStr = New OleDb.OleDbConnection([Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\bd1.accdb[Ô])

cnnStr.Open()
Dim DAdap As New OleDb.OleDbDataAdapter([Ô]Select * from internação where nome=[ô][Ô] & txtNome.Text & [Ô][ô][Ô], cnnStr)
Dim ds As New DataSet
ds = New DataSet([Ô]internação[Ô])
DAdap.Fill(ds, [Ô]internação[Ô])

If ds.Tables([Ô]internação[Ô]).Rows.Count <> 0 Then
MsgBox([Ô]internação[Ô], MsgBoxStyle.Exclamation, [Ô]error[Ô])
txtNome.Focus()
cnnStr.Close()
Exit Sub
End If


SQL = [Ô]Insert into internação(nome,data,diagnóstico,entrada,alta,convênio,local,descrição,valor) values([ô][Ô] & txtNome.Text & [Ô][ô], [ô][Ô] & txtData.Text & [Ô][ô], [ô][Ô] & txtDx.Text & [Ô][ô], [ô][Ô] & txtEntrada.Text & [Ô][ô], [ô][Ô] & txtAlta.Text & [Ô][ô], [ô][Ô] & txtConvenio.Text & [Ô][ô], [ô][Ô] & TxtLocal.Text & [Ô][ô], [ô][Ô] & txtDescricao.Text & [Ô][ô], [ô][Ô] & txtValor.Text & [Ô][ô])[Ô]

[ô]DCom.CommandType = CommandType.Text
[ô]DCom.Connection = cnnStr
DCom = New OleDb.OleDbCommand(SQL, cnnStr)
DCom.ExecuteNonQuery()
cnnStr.Close()
[ô]PreencheForm()
COnnect()
CountNow()

btnGravar.Enabled = False
btnCancelar.Enabled = False
btnNovo.Enabled = True
BTNeDITAR.Enabled = True
btnSalvar.Enabled = False
btnExcluir.Enabled = True

TravaForm()
End Sub

No que estou errando, não consigo identificar.
Grato desde já
KURTGU 22/03/2016 17:30:42
#459680
O principal cade o erro?
LUART 22/03/2016 17:43:40
#459681
Mudei à pouco tempo para o Visual Studio 2013. E percebi que particularmente neste erro ele não mostra nenhuma informação sobre. ele apenas para a execução nessas duas linhas com o [Ô]DCom[Ô] selecionado:
[txt-color=#0000f0]DCom[/txt-color] = New OleDb.OleDbCommand(SQL, cnnStr)
[txt-color=#0000f0]DCom[/txt-color].ExecuteNonQuery()

Se alguém souber como depurar este erro; fico agradecido
KERPLUNK 22/03/2016 18:40:19
#459685
Resposta escolhida
Você deveria usar blocos Try...Catch para poder ter suas exceções devidamente capturadas.
OMAR2011 22/03/2016 19:20:06
#459689
De preferência não use Ç~ e mais destes caracteres.
Use sempre o Trim. Ex: txtnome.Text.Trim.
Causa falha ao gravar,isto é ,não erro.

Fiz uma mudança por não ter postado a declaração das variáveis.

Private Sub btnGravar_Click(sender As Object, e As EventArgs) Handles btnGravar.Click
If txtnome.Text.Trim = [Ô][Ô] Then
MsgBox([Ô]Informe o Nome do paciente.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]TxtNome.Locked = False
txtnome.Focus()
Exit Sub
End If
If txtdata.Text.Trim = [Ô][Ô] Then
MsgBox([Ô]Informe a Data da Internação Clínica.[Ô], vbExclamation, [Ô]Gravar Internação Clínica[Ô])
[ô]Text2.Locked = False
txtdata.Focus()
Exit Sub
End If




[ô]Dim Dcom As New OleDb.OleDbCommand
Dim cnnStr As New OleDb.OleDbConnection([Ô]Provider=Microsoft.ACE.OLEDB.12.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\bd1.accdb[Ô])

cnnStr.Open()
Dim DAdap As New OleDb.OleDbDataAdapter([Ô]Select * from internacao where nome=[ô][Ô] & txtnome.Text & [Ô][ô][Ô], cnnStr)
Dim ds As New DataSet
ds = New DataSet([Ô]internacao[Ô])
DAdap.Fill(ds, [Ô]internacao[Ô])

If ds.Tables([Ô]internacao[Ô]).Rows.Count <> 0 Then
MsgBox([Ô]internação[Ô], MsgBoxStyle.Exclamation, [Ô]error[Ô])
txtnome.Focus()
cnnStr.Close()
Exit Sub
End If


Dim Sql As String = [Ô]Insert into internacao(nome,data) values([ô][Ô] & txtnome.Text & [Ô][ô], [ô][Ô] & txtdata.Text & [Ô][ô])[Ô]

[ô]DCom.CommandType = CommandType.Text
[ô]DCom.Connection = cnnStr
Dim DCom As New OleDb.OleDbCommand(Sql, cnnStr)
DCom.ExecuteNonQuery()
cnnStr.Close()
[ô]PreencheForm()
End Sub
Gravou.
LUART 22/03/2016 19:24:05
#459690
Fiz exatamente o que o amigo KERPLUNK sugeriu:
O Erro foi [Ô]Erro de sintaxe na instrução INSERT INTO.[Ô]

Revisei essa sintaxe e sinceramente não sei no que estou errando. Creio que seja o campo de data precisa ser tratado [Ô]txtData.text[Ô], [Ô]txtEntrada.Text[Ô], [Ô]txtAlta.Text[Ô] (são três maskedbox)

Algum detalhe que eu esteja esquecendo?
obrigado
LUART 22/03/2016 19:39:33
#459693
mudei o nome da tabela de Internação para Internacao (sem acento e cedilha) e também substitui no codigo internação por internacao mas ainda o erro de sintaxe INSERT INTO permanece

alguém tem alguma sugestão?
obrigado
LUART 22/03/2016 19:47:04
#459696
Problema resolvido
Há uma coluna com palavra de exceção que é a palavra local; quando mudei para localx houve a gravação

mais detalhes no link abaixo
https://support.microsoft.com/pt-br/kb/248738

Obrigado à todos
boa noite
KURTGU 22/03/2016 19:53:49
#459697
Ta vendo com o erro na mão fica bem mais fácil de achar a solução fico feliz qu e tenha resolvido
LUART 22/03/2016 19:57:00
#459698
Sugestão; uso de colchetes também resolve; exemplo:
sql = [Ô]INSERT INTO usuario ([user], [password], [nome], [email]) VALUES ([ô][Ô] & var_user & [Ô][ô],[ô][Ô]& var_pass &[Ô][ô],[ô][Ô] & var_nome & [Ô][ô],[ô][Ô] & var_email & [Ô][ô])[Ô]
Vantagem: banco de dados intacto.

Problema resolvido
Grato à todos
OMAR2011 22/03/2016 20:06:06
#459700
Verifiquei o endereço.Não imaginei que local fosse uma palavra reservada.
Quanto ao colchetes eu já sabia devido ao FFCOUTO ter postado.
Resolvido, pode fechar o tópico.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas