Finformática 29/4/2020, 20:11
Caro Zaccariotto,
Desculpas amigo, me expressei mal. Crie o botão e cole essa parte: (ao clicar)
'------------------------------------------------------------------------------------------------------------------------------------
On Error GoTo trata_erro
Dim rsk As DAO.Recordset
Dim fncTabelaExiste As String
On Error Resume Next
Set rsk = CurrentDb.OpenRecordset("ValorMoedaX")
If Err Then
fncTabelaExiste = False
Else
fncTabelaExiste = True
End If
Set rsk = Nothing
If fncTabelaExiste = True Then
MsgBox "Tabela EXISTE"
DoCmd.DeleteObject acTable, "ValorMoedaX"
MsgBox "Tabela deletada para ser recriada..."
Else
MsgBox "Tabela NÃO EXISTE...Vai ser criada"
End If
'------------------------------------------------------------------------------------------------------------------------------------
Call CriaTabs
'------------------------------------------------------------------------------------------------------------------------------------
Dim DB As Database
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Set DB = CurrentDb()
Dim PrimeiraVez As String
Dim MoedaXYZ As String
Dim ValorAnteriorX As Double
PrimeiraVez = "Sim"
'MoedaXYZ = InputBox("Informe Moeda?")
' CORRETO Set rs = DB.OpenRecordset("SELECT * FROM [ValorMoeda]")
Set rs = DB.OpenRecordset("SELECT * FROM [ValorMoeda] Where Moeda = " & "EURUSD")
'sql = "SELECT * FROM tblTeachers WHERE TeacherID=5"
If rs.RecordCount > 0 Then
MsgBox "Registro Encontrado"
DoCmd.Close
DB.Close
Else
MsgBox "Registro Encontrado"
End If
'"Select * FROM [tbl Pedido] WHERE [Numero do Pedido] = " & NumpedFat & ""
Set rs2 = DB.OpenRecordset("SELECT * FROM [ValorMoedaX]")
Do While Not rs.EOF
rs2.AddNew
If PrimeiraVez = "Sim" Then
rs2![Id] = rs![Id]
rs2![Codigo] = rs![Codigo]
rs2![Data] = rs![Data]
rs2![Moeda] = rs![Moeda]
rs2![ValorInicial] = rs![ValorInicial]
rs2![ValorAnterior] = 0
PrimeiraVez = "Não"
Else
rs2![Id] = rs![Id]
rs2![Codigo] = rs![Codigo]
rs2![Data] = rs![Data]
rs2![Moeda] = rs![Moeda]
rs2![ValorInicial] = rs![ValorInicial]
rs2![ValorAnterior] = rs![ValorInicial] - ValorAnteriorX
End If
ValorAnteriorX = rs![ValorInicial]
If rs2![ValorAnterior] > 0 Then
rs2![ValorX] = rs2![ValorAnterior]
rs2![ValorY] = 0
Else
rs2![ValorY] = rs2![ValorAnterior]
rs2![ValorX] = 0
End If
rs2.Update
rs2.Requery
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
rs2.Close
Set rs2 = Nothing
DB.Close
Set DB = Nothing
Exit Sub
trata_erro:
'Call MsgBox "Erro gerado: " & Err.Number & " - " & Err.Description & "", vbCritical, "Erro"
Call MsgBox("Erro nº " & Err.Number & " - " & Err.Description)
MsgBox "TERMINADO..."
'------------------------------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------------------------------
Aqui abaixo cole a função para criar a tabela:
Function CriaTabs()
On Error GoTo trata_erro
Dim SqlV As String
MsgBox "Vamos criar Tabela ValorMoedaX........."
SqlV = "CREATE TABLE ValorMoedaX " & _
"(Id varchar (5), " & _
"Codigo Long NOT NULL, " & _
"Data DATE," & _
"Moeda VARCHAR(25) NOT NULL," & _
"ValorInicial MONEY NOT NULL," & _
"ValorAnterior MONEY," & _
"ValorX MONEY," & _
"ValorY MONEY," & _
"Nome CHAR(40)," & _
"CONSTRAINT PK_Id PRIMARY KEY (Codigo))"
DoCmd.RunSQL SqlV
MsgBox "Tabela ValorMoedaX criada com sucesso..."
Exit Function
trata_erro:
MsgBox "Erro gerado: " & Err.Number & " - " & Err.Description & "", vbCritical, "Erro"
Exit Function
'End
End Function
'----------------------------------------------------------------------------------------------------------------------------------------
'----------------------------------------------------------------------------------------------------------------------------------------
Do modo que havia falado antes realmente não tinha sentido.
Agora, Ao clicar, irá verificar se tabela auxiliar existe. Se existir, vai apagar e criar novamente, se não existir, cria. É aqui que chama a função para criar a tabela.
Continuando o código, em seguida, ler sua tabela "ValorMoeda", faz as devidas verificações e atualiza na tabela auxiliar "ValorMoedaX", conforme seu exemplo.
Espero que agora tenha sido mais claro.
Forte abraço.