CAMPO DO TIPO NUMERICO

DARIOSALLES 30/10/2012 15:33:03
#413163
Estou resgatando 3 campos do tipo textbox um valor numérico e jogando em arrays para fazer um INSERT dinamico

Dim qtd() As String = {txtcli_qtd1.Text, txtcli_qtd2.Text, txtcli_qtd3.Text, txtcli_qtd4.Text, txtcli_qtd5.Text, txtcli_qtd6.Text}
Dim vun() As String = {txtcli_vu1.Text, txtcli_vu2.Text, txtcli_vu3.Text, txtcli_vu4.Text, txtcli_vu5.Text, txtcli_vu6.Text}

[ô]soma totais
Dim somatotal() As String = {lblcli_st1.Text, lblcli_st2.Text, lblcli_st3.Text, lblcli_st4.Text, lblcli_st5.Text, lblcli_st6.Text}

Na sql ta o seguinte:

sql = [Ô]Insert into item_pedido(npedido,produto,un,qtd,valorun,valortotal,ativado) values([Ô] & txtcli_npedido.Text & [Ô],[ô][Ô] & produto(i) & [Ô][ô],[ô][Ô] & unprod(i) & [Ô][ô],[Ô] & qtd(i) & [Ô],[Ô] & vun(i) & [Ô],[Ô] & somatotal(i) & [Ô],[ô]S[ô])[Ô]

Add Watch abaixo para ver como ficou a sql
Insert into item_pedido(npedido,produto,un,qtd,valorun,valortotal,ativado) values(234,[ô]AGROTAPE - FITA ADESIVA PARA REPARO DE FILME AGRÍCOLA[ô],[ô]RL[ô],2,45,90,[ô]S[ô])


no access os campos npedido, qtde, valorun, valortotal são do tipo numérico

Mas ta dando erro de dados incompatíveis na expressão de critério
ALTAIR148 30/10/2012 15:36:46
#413164
Tente assim:

sql = [Ô]Insert into item_pedido(npedido,produto,un,qtd,valorun,valortotal,ativado) values([ô][Ô] & txtcli_npedido.Text & [Ô][ô],[ô][Ô] & produto(i) & [Ô][ô],[ô][Ô] & unprod(i) & [Ô][ô],[ô][Ô] & qtd(i) & [Ô][ô],[ô][Ô] & vun(i) & [Ô][ô],[ô][Ô] & somatotal(i) & [Ô][ô],[ô]S[ô])[Ô]
DARIOSALLES 30/10/2012 15:40:59
#413166
tentei da o mesmo erro
lembrando que sao 4 campos do tipo numérico
no sql os campos numericos nao usam somente aspas duplas??????

ALTAIR148 30/10/2012 15:49:09
#413168
Resposta escolhida
Uma outra coisa que vc pode tentar é utilizar parâmetros ao invés de concatenar strings. Então vc não precisa se preocupar com esses detalhes de implementação.
DARIOSALLES 30/10/2012 15:58:46
#413170
me da um exemplo de parametros, nunca usei
ALTAIR148 30/10/2012 16:15:59
#413171
Fica +/- assim:

cn = New OleDbConnection(strconexao)
cn.Open()

Dim stringInsert As String = [Ô]Insert into item_pedido(npedido,produto,un,qtd,valorun,valortotal,ativado) values(@npedido,@produto, @unprod,@unprod & [Ô][ô],[ô][Ô] & qtd(i) & [Ô][ô],[ô][Ô] & vun(i) & [Ô][ô],[ô]Total[ô],[ô]S[ô])[Ô]
Dim cmd As OleDbCommand = New OleDbCommand(stringInsert, cn)
cmd.Parameters.AddWithValue([Ô]@npedido[Ô], txtcli_npedido.Text)
cmd.Parameters.AddWithValue([Ô]@produto[Ô], produto(i))
cmd.Parameters.AddWithValue([Ô]@unprod[Ô], unprod(i))
cmd.ExecuteNonQuery()
Next


Repare que não fiz em todos os campos, apenas em alguns. O restante fica por sua conta. Se não der certo, quando for postar novamente, poste o código como ficou.
DARIOSALLES 31/10/2012 08:36:36
#413225
Deu certo porem tive que mudar o tipo de campo no bd para texto em todos os campos, somente o campo produto para memorando pois ele é grande.
com campos numéricos no bd sempre da o mesmo erro de dados incompatíveis na expressão do critério.
ALTAIR148 31/10/2012 08:40:25
#413227
Teria que verificar o erro, pelo seguinte, campos pelo seguinte o correto é gravar valores em campos numéricos. Isso depois evita alguns problemas.

Você tentou fazer a inserção por parâmetros?
DARIOSALLES 31/10/2012 08:49:59
#413228
Tentei sim salvar por parâmetros antes de mudar o tipo de campo no bd mas tava dando o mesmo erro anterior

Tipo incompativel na expressao de critério

ALTAIR148 31/10/2012 08:57:36
#413232
hum... muito estranho. Teria que fazer uma análise mais detalhada então.
DARIOSALLES 31/10/2012 09:05:14
#413235
Resolvido, era um erro no bd mesmo, agora todos campos no bd estao numericos e com parametros deu certo..

Estou encerrando este tópico
Obrigado novamente
Tópico encerrado , respostas não são mais permitidas