PROBLEMAS COM O INSERT INTO

FAUSTOARAXA 06/02/2010 10:45:31
#333781
Amigos do forum ontem postei este problema, tive muito retorno e agradeci pela ajuda sabe poste atarde e foi mexer a noite com as dicas dos programadores mas infelismente o caminho do programador é ardo fiz como todos me falaram ontem mas continua ainda com o mesmo problema no insert into sabe ate mudei para tipo como vcs me falaram e nada como vc podem me ajudar resolver vou postar todo codigo para vcs analizarem

conexao em um form proprio
Set cnnPDV = New ADODB.Connection
With cnnPDV
.Provider = [Ô]Microsoft.JET.OLEDB.4.0[Ô]
.ConnectionString = App.Path & [Ô]\Db\PDV.mdb[Ô]
.Open
End With


adora o module

Global cnnPDV As New ADODB.Connection

Private Sub cmdSalvar_Click()

Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean


[ô]Verifica os dados digitados:
If txtu2.Text = Empty Then
MsgBox [Ô]O campo usuário não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If

If txtu3.Text = Empty Then
MsgBox [Ô]O campo Senha não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If



Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnPDV
.CommandType = adCmdText
[ô]Verifica a operação e cria o comando SQL correspondente:
If vInclusao Then
[ô]Inclusão:
.CommandType = [Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text = [Ô][ô],[ô][Ô] & _ essa não funciona da a mesagem que o gravado no banco mas quando vai olhar não tem nada
txtu2.Text = [Ô][ô],[ô][Ô] & _
txtu3.Text = [Ô][ô]);[Ô]
Else
.CommandText = [Ô]UPDATE USUARIO SET [Ô] & _
[Ô]U1 = [ô][Ô] & txtu1.Text & [Ô][ô],[Ô] & _ Esta parte funciona normal
[Ô]U2 = [ô][Ô] & txtu2.Text & [Ô][ô],[Ô] & _
[Ô]U3 = [ô][Ô] & txtu3.Text & [Ô][ô][Ô] & _
[Ô]WHERE U1 = [Ô] & txtu1.Text & [Ô];[Ô]
End If
.Execute
End With

MsgBox [Ô]Gravação concluída com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]

[ô]Chama a sub que limpa os dados do formulário:
txtu1.Text = [Ô][Ô]
txtu2.Text = [Ô][Ô]
txtu3.Text = [Ô][Ô]


Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing

Exit Sub
End Sub


Banco access 2000

refeencia ado Microsdoft activex data objects 2,6 libray


Tabela = USUARIO

ID = Auto numeração com chave primaria
U1 = numero
U2 = texto
U3 = numero

3 textbox no form

txtU1 = U1 que é o codigo
txtU2 = U2 que é o usuario
txtu3 = U3 que senha

Nome da tabela usuario

obs seu eu excluir a parte do upadate nao funiona da erro txtu3.Text = [Ô][ô]);[Ô]
erro fala
ru-time 13 type mismatch e fica amarelo todo o insert into e marca com um seta amarela o txtu3.Text = [Ô][ô]);[Ô]
amigos que misterio é esse por favor me de um help

agradeço a todos pela atenção
FAUSTOARAXA 06/02/2010 10:48:00
#333782
obs
esta em um form proprio
Private Sub cmdSalvar_Click()
RICART 06/02/2010 11:03:59
#333784
.CommandType = [Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text = [Ô][ô],[ô][Ô] & _ essa não funciona da a mesagem que o gravado no banco mas quando vai olhar não tem nada
txtu2.Text = [Ô][ô],[ô][Ô] & _
txtu3.Text = [Ô][ô]);[Ô]

Bom, vejo duas situações:
1-Qual é o tipo do campo U1. No insert vc está acrescentando haspas simples só no final;
2-no update vc não está colocando haspas simples na cláusula WHERE [Ô]WHERE U1 = [Ô] & txtu1.Text & [Ô];[Ô]

Se for varchar, falta colocar haspas simpes no u1 do insert. Se for integer, precisa retirar o que está no final do U1.

FAUSTOARAXA 06/02/2010 11:17:21
#333785
isso da a mensagem que gravou mas quando vou olhar não tem nada no banco

Campo U1 é numerico porque é o código
no update está assim [Ô]WHERE U1 = [Ô] & txtu1.Text & [Ô];[Ô] este é o update

oque devo fazer amigo


RICART 06/02/2010 11:23:34
#333786
[Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text = [Ô][ô],[ô][Ô] & _ essa não funciona da a mesagem que o gravado no banco mas quando vai olhar não tem nada
txtu2.Text = [Ô][ô],[ô][Ô] & _
txtu3.Text = [Ô][ô]);[Ô]


Tira essa haspa simples. Se for autoincrement, não precisa informar o campo
[Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text = [Ô],[ô][Ô] & _ essa não funciona da a mesagem que o gravado no banco mas quando vai olhar não tem nada
txtu2.Text = [Ô][ô],[ô][Ô] & _
txtu3.Text = [Ô][ô]);[Ô]


ou


[Ô]INSERT INTO USUARIO [Ô] & _
[Ô]( U2,U3) VALUES ([ô][Ô] & _ essa não funciona da a mesagem que o gravado no banco mas quando vai olhar não tem nada
txtu2.Text = [Ô][ô],[ô][Ô] & _
txtu3.Text = [Ô][ô]);[Ô]
FAUSTOARAXA 06/02/2010 11:42:04
#333788
nudei do jeito que vc me falou e nada o problema eu acho que é o else se tirar ele e upadate todo da erro type minitch 13 no insert into
RICART 06/02/2010 11:48:40
#333789
Então o que está ocorrendo é que a sua variável If vInclusao Then está sempre com False.

Veja na chamada no form se vc está indicando a variável para True.

Agora, como há a haspa simples informada indevidamente, está retornando o erro.

Então, veja a variável e corija a sintaxe da sql como lhe indiquei.
FAUSTOARAXA 06/02/2010 13:10:02
#333793
vou tentar mais tarde para ver se vai dar certo amigo qualquer eu volto há postar muito obrigado
MARCELO.TREZE 06/02/2010 15:30:24
#333797
Resposta escolhida
o problema é a té simples, porém niguém se atentou para o mesmo, e a unica coisa que está errada é a como vc escreveu a string.

veja o correto

.CommandType = [Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text & [Ô][ô],[ô][Ô] & _
txtu2.Text & [Ô][ô],[ô][Ô] & _
txtu3.Text & [Ô][ô]);[Ô]


você estava colocando um sinal de igual, isso não existe

[txt-color=#e80000]'FORMA QUE ESTAVA ERRADA[/txt-color]
.CommandType = [Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text [txt-color=#e80000]=[/txt-color] [Ô][ô],[ô][Ô] & _
txtu2.Text [txt-color=#e80000]=[/txt-color] [Ô][ô],[ô][Ô] & _
txtu3.Text[txt-color=#e80000] =[/txt-color] [Ô][ô]);[Ô]


VEJA OS SINAIS EM VERMELHO
FAUSTOARAXA 08/02/2010 09:42:34
#333860
Olá amigos do forum bom dia

Depois de muita ajuda de vcs do forum e muita pesquisa consegui achei o problema do insert into
era essa variavel com problema não transferia os dados para a tabela

If vInclusao Then assim que retirei essa varivel funcionou perfeitamente

muito obrigado a todos que me ajudaram aqui no forum

a vida de um programador é arduo e com muitas pedras no caminho estude muito e pesquise muito obrigado amigos
FAUSTOARAXA 08/02/2010 09:47:09
#333862
ai em baixo está o codigo funciomando perfeitamente

Para os que quiserem estudar nele está todo funcional está e minha contribuição

Private Sub cmdNovo_Click()

txtu1.Enabled = True
txtu2.Enabled = True
txtu3.Enabled = True
cmdSalvar.Enabled = True
cmdNovo.Enabled = False

txtu1.Text = [Ô][Ô]
txtu2.Text = [Ô][Ô]
txtu3.Text = [Ô][Ô]

txtu1.SetFocus

End Sub

Private Sub cmdSair_Click()
Unload Me
End Sub

Private Sub cmdSalvar_Click()

Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vErro As Boolean

[ô]Verifica os dados digitados:
If txtu2.Text = Empty Then
MsgBox [Ô]O campo usuário não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If

If txtu3.Text = Empty Then
MsgBox [Ô]O campo Senha não foi preenchido.[Ô], vConfMsg, [Ô]Erro[Ô]
vErro = True
End If

Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnPDV
.CommandType = adCmdText

[ô]cria um comando sql para inclusao de cliente[ô]
.CommandText = [Ô]INSERT INTO USUARIO [Ô] & _
[Ô](U1, U2, U3) VALUES ([Ô] & _
txtu1.Text & [Ô],[ô][Ô] & _
txtu2.Text & [Ô][ô],[ô][Ô] & _
txtu3.Text & [Ô][ô]);[Ô]
.Execute
End With

MsgBox [Ô]Gravação concluída com sucesso.[Ô], _
vbApplicationModal + vbInformation + vbOKOnly, _
[Ô]Gravação OK[Ô]

[ô]Chama a sub que limpa os dados do formulário:
txtu1.Text = [Ô][Ô]
txtu2.Text = [Ô][Ô]
txtu3.Text = [Ô][Ô]

txtu1.Enabled = False
txtu2.Enabled = False
txtu3.Enabled = False
cmdSalvar.Enabled = False
cmdNovo.Enabled = True

Saida:
Screen.MousePointer = vbDefault
Set cnnComando = Nothing

Exit Sub
End Sub

Private Sub Form_Load()

txtu1.Enabled = False
txtu2.Enabled = False
txtu3.Enabled = False
cmdSalvar.Enabled = False

End Sub

Private Sub txtu1_LostFocus()

Dim cnnComando As New ADODB.Command
Dim rsSelecao As New ADODB.Recordset

Screen.MousePointer = vbHourglass
With cnnComando
.ActiveConnection = cnnPDV
.CommandType = adCmdText
[ô]Monta o comando SELECT para selecionar o registro na tabela:
.CommandText = [Ô]SELECT * FROM USUARIO WHERE U1 = [Ô] & _
txtu1.Text & [Ô];[Ô]
Set rsSelecao = .Execute
End With

With rsSelecao
If .EOF And .BOF Then
[ô]Se o recordset está vazio, não retornou registro com esse código:
[ô]Identifica a operacao como Inclusão:
vInclusao = True
Else
[ô]Senão, atribui aos campos os dados do registro:
txtu1.Text = !U1
txtu2.Text = !U2
txtu3.Text = !U3

MsgBox [Ô]Informe um novo Código para fazer o cadastro[Ô], vbInformation, [Ô]Aviso[Ô]
txtu1.Enabled = False
txtu2.Enabled = False
txtu3.Enabled = False
cmdSalvar.Enabled = False
cmdNovo.Enabled = True
vInclusao = False
End If
End With

[ô]Elimina o command e o recordset da memória:
Set rsSelecao = Nothing
Set cnnComando = Nothing
Screen.MousePointer = vbDefault
Exit Sub

End Sub

Private Sub txtu1_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys [Ô]{TAB}[Ô]
End If
End Sub
Private Sub txtu2_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys [Ô]{TAB}[Ô]
End If
End Sub

Private Sub txtu3_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys [Ô]{TAB}[Ô]
End If
End Sub

Private Sub txtu4_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
If KeyAscii = 13 Then
KeyAscii = 0
SendKeys [Ô]{TAB}[Ô]
End If
End Sub
Tópico encerrado , respostas não são mais permitidas