ERRO AO TENTAR EXCLUIR DO BANCO DE DADOS.

DANLEONHART 02/02/2011 07:52:50
#364074
Pessoal,

Utilizo este script para excluir do BD:

Dim Conn As OleDbConnection
Dim Cmd As OleDbCommand

Conn = New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
Conn.Open()
Cmd = New OleDbCommand([Ô]DELETE from table1 Where Nome=[ô][Ô] & txt_valor.Text & [Ô][ô][Ô], Conn)
Cmd.ExecuteNonQuery()
Conn.Close()


Porém, se o valor posto na caixa [Ô]txt_valor.Text[Ô] for numérico, ele dá um erro: [Ô]Tipo de Dados incompatível na expressão de critério.[Ô] e aponta para : [txt-color=#e80000]Cmd.ExecuteNonQuery()[/txt-color].

Isso só acontece quando seto para excluir comparando com a Coluna [Ô]ID[Ô] (onde há valores numéricos);
se seto com a Coluna [Ô]Nome[Ô] (onde há nomes) funciona beleza...

Tentei converter para String fazendo assim:

Cmd = New OleDbCommand([Ô]DELETE from table1 Where Cod=[ô][Ô] & Convert.ToString(txt_valor.Text) & [Ô][ô][Ô], Conn)

e assim:

Cmd = New OleDbCommand([Ô]DELETE from table1 Where Cod=[ô][Ô] & txt_valor.Text.ToString & [Ô][ô][Ô], Conn)


sem sucesso...o erro continua...so...o erro continua...
ESLEYSANCHES 02/02/2011 08:07:02
#364076
Resposta escolhida
Estranho, desculpe de verdade ser um pouco ignorante, mas ... Verifique se a tabela realmente está com o nome table1 e se o campo Cod for numerico não use as aspas simples, por exemplo:

Cmd = New OleDbCommand([Ô]DELETE from table1 Where Cod=[Ô] & txt_valor.Text, Conn)


Se ainda assim o erro pesistir, tente fazer do modo que eu normalmente uso (No final da na mesma , mas não custa tentar neh?). rsrs



[ô]Cria as variaveis
Dim Conn As New OleDbConnection()
Dim Cmd As New OleDbCommand()

[ô]Tenta efetuar a conexao
Try
[ô]Adiciona a string de conexao a variavel Conn
Conn.ConnectionString = ([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & Application.StartupPath & [Ô]\bd1.mdb[Ô])
[ô]Diz ao command quem ele usa como conexao padrao
Cmd.Connection = Conn
[ô]Abre a conexao
Conn.Open()
Catch ex As Exception
[ô]Se ocorrer erro para abrir a conexao exiba uma msg
MsgBox([Ô]Erro ao tentar efetuar a conexão[Ô] & ex.Message)
Exit Sub
End Try

[ô]Define qual SQL será utilizada
Cmd.CommandText = ([Ô]DELETE from table1 Where Cod=[ô][Ô] & txt_valor.Text & [Ô][ô][Ô])

Try
[ô]Tenta executa a SQL definida
Cmd.ExecuteNonQuery()
Catch ex As Exception
[ô]Se ocorrer erro
MsgBox([Ô]Erro ao executar a SQL [Ô] & ex.Message)
End Try

Conn.Close()
LUIZCOMINO 02/02/2011 08:09:52
#364077
e assim

Cmd = New OleDbCommand([Ô]DELETE from table1 Where Cod=[Ô] & [ô] [Ô] & txt_valor.Text & [Ô] [ô], Conn)
ESLEYSANCHES 02/02/2011 13:56:35
#364128
Hããã esqueci ... Certifique-se tbm da versão do seu access ser da 2003 para cima, pois 200 ou anterior tive problemas tbm, com esse mesmo erro, quase fiquei sem meus cabelos quando dava uns erros nada a ver com datas. rsrs

Flw !!!
DANLEONHART 02/02/2011 21:29:41
#364167
@ ESLEYSANCHES :
[txt-color=#0000f0]Tem de que se desculpar não cara[/txt-color] ,
criticas construtivas são sempre bem-vindas !
logo quando comecei no VB-6, engolia virgula, colocava aspas onde não existia, trocava apóstrofo por aspas... e fui aos poucos entendendo a lógica através de pessoas com boa vontade como você e muitos outros daqui e de outros sites de linguagem ...

agradeço pela ajuda que todos do VBMania me tem dado (sou autodidata).

Ah ! e o script é assim mesmo:

Cmd = New OleDbCommand([Ô]DELETE from table1 Where Cod=[Ô] & txt_valor.Text, Conn)


Tem que se ter muita atenção se é números ou letras
Tópico encerrado , respostas não são mais permitidas