INSTRU?ÃO DO WHILE ... LOOP OU WHILE ... WEND

CYBERMAC 13/05/2016 09:38:33
#462048
Pessoal,

Bom dia!

Converti meu banco de dados de Access para SQL Server 2008 e necessito mudar o código também. Neste caso tenho uma rotina que busca em uma determinada tabela a quantidade de registros que possue e em outra tabela grava as informações de acordo com a primeira. Isto ficaria assim:
Tabela 1: Empresas (18) registros
Tabela 2: Divisao_Mercadoria

O meu código em ACCESS foi escrito desta forma:

On Error GoTo erronovo
Dim mqtde As Integer
Dim msoma, X As Integer

mcodigo = txtproduto
mqtde = InputBox([Ô]Quantidade[Ô], [Ô]Divisão de Mercadorias[Ô], 0)

Ttempdiv.Index = [Ô]IdxTempDiv[Ô]

midseqdivisao = CInt(txtsequencial)

[ô]inicia a divisao
Tempresa.MoveFirst
msoma = 0
Do While Not Tempresa.EOF
[ô]divide mercadoria para as empresas
mpeso = Tempresa([Ô]peso[Ô])
mdivisao = ((mqtde * mpeso))

Tdivisao.AddNew
Tdivisao([Ô]IdSeqDivisao[Ô]) = midseqdivisao
Tdivisao([Ô]idproduto[Ô]) = mcodigo
Tdivisao([Ô]idempresa[Ô]) = Tempresa([Ô]IdEmpresa[Ô])
Tdivisao([Ô]qtde[Ô]) = mdivisao
Tdivisao([Ô]data_divisao[Ô]) = Date
Tdivisao([Ô]Fantasia[Ô]) = Tempresa([Ô]Fantasia[Ô])
Tdivisao([Ô]Sufixo[Ô]) = Tempresa([Ô]Sufixo[Ô])
Tdivisao.Update

msoma = msoma + mdivisao
[ô]pega proxima empresa
Tempresa.MoveNext
Loop

Ttempdiv.AddNew
Ttempdiv([Ô]IdProduto[Ô]) = mcodigo
Ttempdiv([Ô]Qtde[Ô]) = mqtde
Ttempdiv([Ô]Data[Ô]) = Date
Ttempdiv([Ô]IdSeqDivisao[Ô]) = midseqdivisao
Ttempdiv.Update

MsgBox [Ô]Divisão do produto concluída.[Ô], vbExclamation, [Ô]Divisão de Mercadorias[Ô]
txtsoma = msoma
btndivide_Click
txtproduto.SetFocus

[ô]GRAVA SEQUENCIA DO REGISTRO
Tsistema.Edit
Tsistema([Ô]Contador[Ô]) = mcontador
Tsistema.Update

erronovo:
If Err Then
MsgBox Err.Description
End If
End Sub

Agora preciso fazer isto usando comandos para SQL, como dizer ao VB ler os registros de uma tabela no SQL Server até o fim?

Att.
KERPLUNK 15/05/2016 20:40:29
#462101
Resposta escolhida
Pelo que estou vendo, esse código não tem nada de mais, acho que funcionaria perfeitamente com SQL Server. Já experimentou simplesmente mudar a string de conexão e rodar assim mesmo?
CYBERMAC 16/05/2016 10:31:13
#462124
Kerplunk,

Segue minha string de conexão.

[ô]Configuração Dados de Acesso
Global MyslqServidor As String
Global MyslqUsuario As String
Global MyslqSenha As String
Global MyslqDatabase As String

[ô]Configuração ADO
Global cn As New ADODB.Connection
Global rs, RsDivisao, RsTempDiv, RsSistema As New ADODB.Recordset


[ô]Dados Para Conexão ao Banco MySQL
Public Function Dados_Servidor()

MyslqServidor = [Ô]MTH09-PC[Ô]
MyslqUsuario = [Ô]divisao[Ô] [ô]admin
MyslqSenha = [Ô]metha2016[Ô] [ô]admin
MyslqDatabase = [Ô]Dbdivisao[Ô]

End Function


Public Function Conexao_Servidor(ByVal ssql As String)

Dados_Servidor [ô]Carrega parametros do servidor

If cn.State = 1 Then [ô]Igual a 1 a conexão esta aberta
Exit Function
End If

cn.Provider = [Ô]SQLOLEDB[Ô]
cn.Properties([Ô]Data Source[Ô]).Value = MyslqServidor
cn.Properties([Ô]Initial Catalog[Ô]).Value = MyslqDatabase
cn.Properties([Ô]User ID[Ô]).Value = MyslqUsuario
cn.Properties([Ô]Password[Ô]).Value = MyslqSenha

cn.ConnectionTimeout = 0
cn.Open
End Function
KERPLUNK 16/05/2016 18:56:06
#462150
Me parece ok, não testei seu código, mas me parece ok. Já tentou simplesmente rodar pra ver se algum erro ocorre?
CYBERMAC 18/05/2016 15:04:32
#462213
Citação:

:
Me parece ok, não testei seu código, mas me parece ok. Já tentou simplesmente rodar pra ver se algum erro ocorre?


Deu certo, obrigado.
Tópico encerrado , respostas não são mais permitidas