PROBLEMAS COM GAVACAO DO MSHFLEXGRIX NO BANCO

USUARIO.EXCLUIDOS 08/06/2007 09:10:39
#220288
Bom dia, estou com um problema, faço o filtro de uns produto pelo sql, e retorna este num mshflexgrid, nete filtro de 200 produto que tenho no cadastro sobram apenas 4 que aparecen no mshflexgrid. Com estes 4 produtos preciso fazer um calculo com umas celulas do excell, e atualizar o preço final destes 4 produtos. Ate fiz normal estes 4 produtos vao ao excel calculam e retornam no mshflexgrid os preços de venda correto. O problema e no Banco de dados Access7, estes 4 produtos aparecem com o mesmo preço, o do ultimo produto calculado..

EX: Aparece assim no mshflexgrid:

Produto 1 10 reais
Produto 2 20 reais
Produto 3 30 reais
Produto 4 40 reais

Isto e correto, mas no Banco aparece assim:

Produto 1 40 reais
Produto 2 40 reais
Produto 3 40 reais
Produto 4 40 reais

Caso alguem possa ajudar fico agradecido...Obrigado.
USUARIO.EXCLUIDOS 08/06/2007 09:29:03
#220290
Dificil que o pessoal possa te ahudar de verdade sem que você mostre como está gravando os dados de volta ao banco, depois de calcular no Excel.

O Flexgrid não grava no banco de forma automática, desse modo, o problema deve estar justamente nesse trecho de código que realiza a gravação.

Aparentemente, você está realizando um loop pela grade e para cada linha, atualiza o registro. Como todos acabaram com o mesmo valor, o provável é que você esteja atualizando a tabela usando o próprio objeto recordset instanciado e sem identificar o registro que deve ser atualizado. Explicaria o ocorrido.

Mas sem saber como você está fazendo, fica difícil.
USUARIO.EXCLUIDOS 08/06/2007 09:56:21
#220296
Ok, professor segue abaixo o fonte, caso possa me auxiliar agradeço...



Set Rs = New ADODB.Recordset
Sql = "Select * From tbmerc Where lote Like '" & Txtlote.Text & "%' ORDER BY codigo"
Module.AbrirConexao
Rs.Open Sql, cnnproagro, adOpenKeyset, adLockPessimistic
Set Grid.DataSource = Rs
Grid.Row = Grid.Row - 1
If Not Rs.EOF Then


Do While Not Rs.EOF
Grid.col = 9
Grid.Row = Grid.Row + 1
colun = Grid.Text



If colun = cel1 Then

MsgBox "COL1!"
Dim custr01 As String
Dim valcustr1 As String
Dim valcustr11 As String
Dim valcusbr11 As String
Dim valcusus11 As String
Dim valcuspr11 As String

Grid.col = 11
custr01 = Grid.Text

valcustr1 = custr01 / coeficiente
Grid.col = 10
valcustr1 = "" & Format(valcustr1, "###,###,##0.00")
Grid.Text = valcustr1
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr11 = valcustr1 * tcusths1
Grid.col = 14
valcustr11 = "" & Format(valcustr11, "###,###,##0.00")
Grid.Text = valcustr11
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr11 = valcustr1 * tcustbr1
Grid.col = 13
valcusbr11 = "" & Format(valcusbr11, "###,###,##0.00")
Grid.Text = valcusbr11
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus11 = valcustr1 * tcustus1
Grid.col = 12
valcusus11 = "" & Format(valcusus11, "###,###,##0.00")
Grid.Text = valcusus11
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr11 = valcusus11 * tcustus1
Grid.col = 15
valcuspr11 = "" & Format(valcuspr11, "###,###,##0.00")
Grid.Text = valcuspr11
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql

End If

If colun = cel2 Then

MsgBox "COL2!"
Dim custr02 As String
Dim valcustr2 As String
Dim valcustr22 As String
Dim valcusbr22 As String
Dim valcusus22 As String
Dim valcuspr22 As String

Grid.col = 11
custr02 = Grid.Text

valcustr2 = custr02 / coeficiente
Grid.col = 10
valcustr2 = "" & Format(valcustr2, "###,###,##0.00")
Grid.Text = valcustr2
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr22 = valcustr2 * tcusths2
Grid.col = 14
valcustr22 = "" & Format(valcustr22, "###,###,##0.00")
Grid.Text = valcustr22
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr22 = valcustr2 * tcustbr2
Grid.col = 13
valcusbr22 = "" & Format(valcusbr22, "###,###,##0.00")
Grid.Text = valcusbr22
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus22 = valcustr2 * tcustus2
Grid.col = 12
valcusus22 = "" & Format(valcusus22, "###,###,##0.00")
Grid.Text = valcusus22
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr22 = valcusus22 * tcustus2
Grid.col = 15
valcuspr22 = "" & Format(valcuspr22, "###,###,##0.00")
Grid.Text = valcuspr22
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql

End If

If colun = cel3 Then

MsgBox "COL3!"
Dim custr03 As String
Dim valcustr3 As String
Dim valcustr33 As String
Dim valcusbr33 As String
Dim valcusus33 As String
Dim valcuspr33 As String

Grid.col = 11
custr03 = Grid.Text

valcustr3 = custr03 / coeficiente
Grid.col = 10
valcustr3 = "" & Format(valcustr3, "###,###,##0.00")
Grid.Text = valcustr3
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr33 = valcustr3 * tcusths3
Grid.col = 14
valcustr33 = "" & Format(valcustr33, "###,###,##0.00")
Grid.Text = valcustr33
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr33 = valcustr3 * tcustbr3
Grid.col = 13
valcusbr33 = "" & Format(valcusbr33, "###,###,##0.00")
Grid.Text = valcusbr33
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus33 = valcustr3 * tcustus3
Grid.col = 12
valcusus33 = "" & Format(valcusus33, "###,###,##0.00")
Grid.Text = valcusus33
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr33 = valcusus33 * tcustus3
Grid.col = 15
valcuspr33 = "" & Format(valcuspr33, "###,###,##0.00")
Grid.Text = valcuspr33
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql


End If
If colun = cel4 Then

MsgBox "COL4!"
Dim custr04 As String
Dim valcustr4 As String
Dim valcustr44 As String
Dim valcusbr44 As String
Dim valcusus44 As String
Dim valcuspr44 As String

Grid.col = 11
custr04 = Grid.Text

valcustr4 = custr04 / coeficiente
Grid.col = 10
valcustr4 = "" & Format(valcustr4, "###,###,##0.00")
Grid.Text = valcustr4
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr44 = valcustr4 * tcusths4
Grid.col = 14
valcustr44 = "" & Format(valcustr44, "###,###,##0.00")
Grid.Text = valcustr44
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr44 = valcustr4 * tcustbr4
Grid.col = 13
valcusbr44 = "" & Format(valcusbr44, "###,###,##0.00")
Grid.Text = valcusbr44
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus44 = valcustr4 * tcustus4
Grid.col = 12
valcusus44 = "" & Format(valcusus44, "###,###,##0.00")
Grid.Text = valcusus44
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr44 = valcusus44 * tcustus4
Grid.col = 15
valcuspr44 = "" & Format(valcuspr44, "###,###,##0.00")
Grid.Text = valcuspr44
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql

End If
If colun = cel5 Then

MsgBox "COL5!"
Dim custr05 As String
Dim valcustr5 As String
Dim valcustr55 As String
Dim valcusbr55 As String
Dim valcusus55 As String
Dim valcuspr55 As String
Dim codigo5 As String

Grid.col = 1
codigo5 = Grid.Text
Grid.col = 11
custr05 = Grid.Text

valcustr5 = custr05 / coeficiente
Grid.col = 10
valcustr5 = "" & Format(valcustr5, "###,###,##0.00")
Grid.Text = valcustr5
Sql = "Select * From tbmerc Where lote Like '" & codigo5 & "%'"
cnnproagro.Execute Sql
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr55 = valcustr5 * tcusths5
Grid.col = 14
valcustr55 = "" & Format(valcustr55, "###,###,##0.00")
Grid.Text = valcustr55
Sql = "Select * From tbmerc Where lote Like '" & codigo5 & "%'"
cnnproagro.Execute Sql
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr55 = valcustr5 * tcustbr5
Grid.col = 13
valcusbr55 = "" & Format(valcusbr55, "###,###,##0.00")
Grid.Text = valcusbr55
Sql = "Select * From tbmerc Where lote Like '" & codigo5 & "%'"
cnnproagro.Execute Sql
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus55 = valcustr5 * tcustus5
Grid.col = 12
valcusus55 = "" & Format(valcusus55, "###,###,##0.00")
Grid.Text = valcusus55
Sql = "Select * From tbmerc Where lote Like '" & codigo5 & "%'"
cnnproagro.Execute Sql
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr55 = valcusus55 * tcustus5
Grid.col = 15
valcuspr55 = "" & Format(valcuspr55, "###,###,##0.00")
Grid.Text = valcuspr55
Sql = "Select * From tbmerc Where lote Like '" & codigo5 & "%'"
cnnproagro.Execute Sql
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql

End If
If colun = cel6 Then

MsgBox "COL6!"
Dim custr06 As String
Dim valcustr6 As String
Dim valcustr66 As String
Dim valcusbr66 As String
Dim valcusus66 As String
Dim valcuspr66 As String

Grid.col = 11
custr06 = Grid.Text

valcustr6 = custr06 / coeficiente
Grid.col = 10
valcustr6 = "" & Format(valcustr6, "###,###,##0.00")
Grid.Text = valcustr6
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr66 = valcustr6 * tcusths6
Grid.col = 14
valcustr66 = "" & Format(valcustr66, "###,###,##0.00")
Grid.Text = valcustr66
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr66 = valcustr6 * tcustbr6
Grid.col = 13
valcusbr66 = "" & Format(valcusbr66, "###,###,##0.00")
Grid.Text = valcusbr66
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus66 = valcustr6 * tcustus6
Grid.col = 12
valcusus66 = "" & Format(valcusus66, "###,###,##0.00")
Grid.Text = valcusus66
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr66 = valcusus66 * tcustus6
Grid.col = 15
valcuspr66 = "" & Format(valcuspr66, "###,###,##0.00")
Grid.Text = valcuspr66
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql

End If
If colun = cel7 Then

MsgBox "COL7!"
Dim custr07 As String
Dim valcustr7 As String
Dim valcustr77 As String
Dim valcusbr77 As String
Dim valcusus77 As String
Dim valcuspr77 As String

Grid.col = 11
custr07 = Grid.Text

valcustr7 = custr07 / coeficiente
Grid.col = 10
valcustr7 = "" & Format(valcustr7, "###,###,##0.00")
Grid.Text = valcustr7
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr77 = valcustr7 * tcusths7
Grid.col = 14
valcustr77 = "" & Format(valcustr77, "###,###,##0.00")
Grid.Text = valcustr77
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr77 = valcustr7 * tcustbr7
Grid.col = 13
valcusbr77 = "" & Format(valcusbr77, "###,###,##0.00")
Grid.Text = valcusbr77
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus77 = valcustr7 * tcustus7
Grid.col = 12
valcusus77 = "" & Format(valcusus77, "###,###,##0.00")
Grid.Text = valcusus77
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr77 = valcusus77 * tcustus7
Grid.col = 15
valcuspr77 = "" & Format(valcuspr77, "###,###,##0.00")
Grid.Text = valcuspr77
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql
End If
If colun = cel8 Then
MsgBox "COL8!"
Dim custr08 As String
Dim valcustr8 As String
Dim valcustr88 As String
Dim valcusbr88 As String
Dim valcusus88 As String
Dim valcuspr88 As String

Grid.col = 11
custr08 = Grid.Text

valcustr8 = custr08 / coeficiente
Grid.col = 10
valcustr8 = "" & Format(valcustr8, "###,###,##0.00")
Grid.Text = valcustr8
Sql = "UPDATE tbmerc SET custor='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcustr88 = valcustr8 * tcusths8
Grid.col = 14
valcustr88 = "" & Format(valcustr88, "###,###,##0.00")
Grid.Text = valcustr88
Sql = "UPDATE tbmerc SET cusths='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusbr88 = valcustr8 * tcustbr8
Grid.col = 13
valcusbr88 = "" & Format(valcusbr88, "###,###,##0.00")
Grid.Text = valcusbr88
Sql = "UPDATE tbmerc SET custbr='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcusus88 = valcustr8 * tcustus8
Grid.col = 12
valcusus88 = "" & Format(valcusus88, "###,###,##0.00")
Grid.Text = valcusus88
Sql = "UPDATE tbmerc SET custus='" & Grid.Text & "'"
cnnproagro.Execute Sql

valcuspr88 = valcusus88 * tcustus8
Grid.col = 15
valcuspr88 = "" & Format(valcuspr88, "###,###,##0.00")
Grid.Text = valcuspr88
Sql = "UPDATE tbmerc SET preco='" & Grid.Text & "'"
cnnproagro.Execute Sql

End If
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
Module.FecharConexao
End If
End Sub
USUARIO.EXCLUIDOS 08/06/2007 16:56:38
#220419
Valeu moçada.. mas ja consegui uma solução... Coloquei 1 DATA e no final da logica eu dei um Refresh neste data e atualizou o banco corretamente,, Mesmo assim obrigado a todos que me auxiliaram,,Valeu...
Tópico encerrado , respostas não são mais permitidas