AJUDA EM LOOP

AZORSCA 02/10/2012 09:52:48
#411008
Bom dia.
Mais uma vez eu aqui.


é o seguinte eu tenho uma dúvida que gostaria da ajuda de vocês.

é um bloco que refere-se ao acerto de estoque.

Eu tenho que criar um laço de repetição, onde este laço faz a conexão com o banco de dados SQL Server, verifica se o preço atual de venda, preço de custo estão maiores ou menores que o atual da base de dados, se maior ou menor ele verifica se o usuário deseja atualizar os preços e então faz um update na tabela e produtos.
Porém não se a minha lógica está correta é ai que eu gostaria da ajuda de vocês.

Olhe abaixo como eu estava pensando em fazer:

[ô] Aqui eu realizo a conexão com a Base de dados setando a tabela Ger003

Set oConCadC = New ADODB.Connection [ô] oConCadC é o objeto de conexão com Base
oConCadC.ConnectionString = Init.vStrConSQLServer
oConCadC.Open

Set oRecCadC = New ADODB.Recordset [ô] oRecCadC é a Recordset
vStrSql = [Ô]Select * from ger003[Ô] [ô] A Tabela Ger003 é a tabela de Produtos
oRecCadC.Open vStrSql, oconcad, adOpenDynamic, adLockBatchOptimistic

[ô] Faz atualizações na Tabela Ger003 Equipamentos (Verifica os preços e os atualiza caso o usuário opte por sim)
With grdEquipamentos
For i = 1 To .Rows - 1

[ô] é aqui dentro que eu gostaria de realizar as consultas e os Updates. Alguém poderia me ajudar?

Next i
End With

[ô] Fecha as conexões com a Base de Dados
Call fechaObjetoConnection(oConCadC)
Call fechaObjetoRecordset(oRecCadC)




Uma outra dúvida é se devo realizar as conexões dentro ou fora do laço de repetição?

Grato.
AZORSCA 02/10/2012 09:59:23
#411010
Só para esclarecer o grdEquipamentos é um FlexGrid onde eu listo todos os itens novos.
OMAR2011 02/10/2012 10:07:46
#411013
A melhor coisa.
Coloca o cabeção para funcionar.
E mais uma Dica.Use o Listview.
Bem mais rápido.
Vou enviar um exemplo para seu
Email,ai você olha.
AZORSCA 02/10/2012 10:15:35
#411015
Obrigado Omar
ERIVELTONVGA 02/10/2012 10:19:08
#411017
Omar tem como mandar pra mim tambem???

obrigado
MARCELO.TREZE 02/10/2012 13:46:24
#411039
Resposta escolhida
Colega em qual variavel você está armazenando o preço atual de venda e/ou de custo?

pelo que entendi vc possui possui os preços no grid então seria algomais ou menos assim.


mas no flexgrid mesmo da pra fazer

 Set oConCadC = New ADODB.Connection                            [ô] oConCadC é o objeto de conexão com Base
oConCadC.ConnectionString = Init.vStrConSQLServer
oConCadC.Open

Set oRecCadC = New ADODB.Recordset [ô] oRecCadC é a Recordset

[ô] Faz atualizações na Tabela Ger003 Equipamentos (Verifica os preços e os atualiza caso o usuário opte por sim)
With grdEquipamentos
For i = 1 To .Rows - 1
vStrSql = [Ô]UPDATE ger003 SET precovenda = [ô][Ô] & .TextMatrix(i, 1) & [Ô][ô],precocusto=[ô][Ô] & .TextMatrix(i,2) & [Ô][ô] WHERE precovenda <> [ô][Ô] & .TextMatrix(i, 1) & [Ô][ô] And precocusto <> [ô][Ô] & .TextMatrix(i,2) & [Ô][ô] And codigo = [Ô] & .TextMatrix(i,0)
oRecCadC.Open vStrSql, oconcad, adOpenDynamic, adLockBatchOptimistic
Next i
End With

[ô] Fecha as conexões com a Base de Dados
Call fechaObjetoConnection(oConCadC)
Call fechaObjetoRecordset(oRecCadC)


bom no exemplo acima fiz uma comparação levando emconsideração que:

na coluna 0 (.TextMtarix(i,0)) esteja o codigo do produto
na coluna 1 (.TextMatrix(i,1)) esteja o precodevenda
na coluna 2 (.TextMatrix(i,2)) esteja o preço de custo

basta vc alterar para as colunas exatas

OMAR2011 02/10/2012 13:47:51
#411041
Tenho que admitir,deu uma verdadeira [txt-color=#e80000]BICUDA[/txt-color].
Acabei de verificar o exemplo e não satisfaz
a sua necessidade.Desculpe.Falha nossa.
AZORSCA 02/10/2012 14:27:27
#411047
Exato Marcelo na grade estão todas as informações e eu devo percorrer o Grid para realizar o Update.

Vou testar a maneira que você indicou e já dou um retorno. Mais uma vez Obrigado.
Tópico encerrado , respostas não são mais permitidas