Usuário com melhor resposta
Access + Excel - Contador de "revisões"

Pergunta
-
Salve,
Pessoal gostaria da ajuda de vcs. Estou interligando uma Planilha do Excel com um BD Access.
Nele a pessoa faz os calculos no Excel e enviar para o BD. Até ai Blz. O problema é que preciso ou que o o Access encontre o "Modelo" que está sendo atuzalidado e faça o UPDATE das infos ou que o Access conte em um campo quantas ocorrencias daquele mesmo "Modelo" há no BD, sempre somando +1, para constar como revisão.
Espero ter passado as informações de maneira clara.... vlw
Respostas
-
Slot,
não ficou claro para mim onde você vai rodar este código, se no Access ou no Excel.
Pelo que entendi também, você tem um campo chamado Review, que em conjunto com SalesModel, compõe a chave primária da tabela. Ou seja, você até pode repetir o SalesModel, desde que o Review seja diferente.
Minha sugestão é você fazer um SELECT trazendo o SalesModel e o Review em ordem decrescente. Se a consulta retornar registros, você vai ao primeiro, pega o número do Review (que será o maior, visto que foi ordenado de forma decrescente), soma 1 e gera um novo registro:
[code]
Dim db As DAO.Database
Dim rstDest As DAO.Recordset
Dim strSQL As String
Dim lngReview As Long
Set db=CurrentDB()
strSQL="SELECT * FROM TuaTabela WHERE [SalesModel]='" & TeuSalesModel & "' ORDER BY Review DESC"
Set rst=db.OpenRecordset(strSQL)
With rst
If .RecordCount > 0 Then
.MoveFirst
lngReview = Nz(!Review)+1
Else
lngReview=1
End If
.AddNew
!SalesModel= TeuSalesModel
!Family = TuaFamily
!Box_Type = TeuBoxType
'etc..., campo a campo
!Review = lngReview
.Update
End With
[/code]
Os valores eu coloquei como TeuAlgumaCoisa porque não sei se eles vêm do Excel ou de uma tabela vinculada no Access.
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator domingo, 15 de junho de 2014 13:37
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator domingo, 15 de junho de 2014 13:37
Todas as Respostas
-
Segue como está o código dentro do Excel para fazer a transferencia dos dados:
Sub OK_Armazena()
'
' Macro para armazenar balanciamento do modelo em um banco de dados.
Dim db As database
Dim rs As Recordset
Dim XLTable As TableDef
Dim strSQL As String
If MsgBox("Deseja salvar balanciamento desse modelo?", 3 + 32 + 0 + 0, "LeanPack Analysis") = 6 Then
' seleciona a base de dados e copai na area de transferencia
Range("A2:AK2").Select
Selection.Copy
Range("A5:AK5").Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.Interior.ColorIndex = xlNone
Selection.Font.Bold = False
'abrir database
Set db = OpenDatabase("E:\LeanPack\Novo\RATES_V1.mdb")
'carregar area de transferencia e criar uma pasta temporaria dentro da database
Set XLTable = db.CreateTableDef("TEMP")
XLTable.Connect = "Excel 8.0;DATABASE=E:\LeanPack\Novo\LeanPack_Analysis_Teste.xls"
XLTable.SourceTableName = "BASE2"
db.TableDefs.Append XLTable
'enviar dados da tabela TEMP para a Tabela principal da database
strSQL = "Insert into TABELA_BASE Select * from TEMP"
'Execute the SQL statement.
db.Execute strSQL
'Remove the attached table because it's no longer needed.
db.TableDefs.Delete "temp"
db.Close
MsgBox "Balanciamento salvo com sucesso!", 0 + 64 + 0 + 0, "LeanPack Analysis"
Else
Sheets("Analysis").Select
'Range("C7").Select
End If
End Sub -
Olá....
Code SnippetDim VZ%
VZ = 0
If RS.RecordCount > 0 Then
RS.MoveFirst
Do While Not RS.EOF
If RS.Fields("Campo") = "valor" Then
VZ = VZ + 1
End If
Loop
End IfFaz uma condição do valor que você que encontar dentro de um loop...
No Final a variável vai conter quantas campos tem esta condição..
Qualquer dúvida post denovo..
-
Opa... não é bem isso que é preciso... vou tentar explicar melhor....
Tenho uma Planilha que vc faz varios calculos malucos... e gera:
SALES MODEL FAMILY BOX_TYPE ITEM RATE HEADCOUNT UPH DATE ANALYZER 89543LYESA W243 C_6 6 516 6 86 06/05/08 Andre
o Index deve ser o Sales Model, porque deve existir apenas 1com sua numeração... seguido das configurações posteriores (demais campos). Preciso exportar isso para um BD no access que é o permitido na empresa.
Aqui está o impasse... ou faço a transferencia de um modo que substitua o cadastro do SALES MODEL antigo ou incluo + o Campo REVIEW, que deve contar quanto SALES MODEL existem, sempre somando mais um, para mostrar a mais recente revisão.
Pelo modo de envio que estou fazendo, juntando a falta de experiencia em VBA Access não estou conseguindo interliga-los.
Talvez outro modo de exportar do excel seja mais eficiente nesse caso... onde ele substituiria o registro mais antigo...
Sabe outra maneira mais eficiente de exportar? -
Slot,
não ficou claro para mim onde você vai rodar este código, se no Access ou no Excel.
Pelo que entendi também, você tem um campo chamado Review, que em conjunto com SalesModel, compõe a chave primária da tabela. Ou seja, você até pode repetir o SalesModel, desde que o Review seja diferente.
Minha sugestão é você fazer um SELECT trazendo o SalesModel e o Review em ordem decrescente. Se a consulta retornar registros, você vai ao primeiro, pega o número do Review (que será o maior, visto que foi ordenado de forma decrescente), soma 1 e gera um novo registro:
[code]
Dim db As DAO.Database
Dim rstDest As DAO.Recordset
Dim strSQL As String
Dim lngReview As Long
Set db=CurrentDB()
strSQL="SELECT * FROM TuaTabela WHERE [SalesModel]='" & TeuSalesModel & "' ORDER BY Review DESC"
Set rst=db.OpenRecordset(strSQL)
With rst
If .RecordCount > 0 Then
.MoveFirst
lngReview = Nz(!Review)+1
Else
lngReview=1
End If
.AddNew
!SalesModel= TeuSalesModel
!Family = TuaFamily
!Box_Type = TeuBoxType
'etc..., campo a campo
!Review = lngReview
.Update
End With
[/code]
Os valores eu coloquei como TeuAlgumaCoisa porque não sei se eles vêm do Excel ou de uma tabela vinculada no Access.
- Sugerido como Resposta Felipe Costa GualbertoMVP, Moderator domingo, 15 de junho de 2014 13:37
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator domingo, 15 de junho de 2014 13:37
-
Pessoal, acho que preciso repensar esse projeto.... talvez transferir "o que " a planilha faz para access não seja o melhor, e sim "como" ela faz seja o caminho... vou postar aqui o que ela faz e anexar ela para quem quiser ver...
Fiz para a empresa que trabalho uma planilha dentro do excel, usando macros, formulas e VBA.
A planilha faz basicamente...
(1ª)Ela tem um registro fixo de alguns item, tendo o NOME, TEMPO e DESCRIÇÂO:
Ex.:
A = 1,5minutos = item A
B = 2,5minutos = item B
n = n minutos = Item n
Quando entra um pedido entra, ele tem uma configuração:
82899LYESA = 2x A + 1xB+1xC...= Total de 7 Items.
Os operadores então escolhem cada idem na Planilha PICK, colocando 1 para sim ou 0 para não , montando um PICK LIST do que deve ser separado...
(2ª) Cada item tem um tempo associado a ele. Esse é o tempo que ele vai demorar para ser montado pela linha de produção.
Assim, o operador faz o balanciamento da linha, na aba ANALYSIS, associando os itens escolhidos às posições de 1 a 9. Cada posição pode ter 4 itens associados n máximo.
Nesse tempo a planilha mostra o tempo de cada operação quando cada item é colocado, mostrando se uma posição é mais rápida do a outra e também conta quantas posições ou pessoas será necessário para fazer aquele pedido. (no Minimo 5 no maximo 9)
(3ª) Depois de encontrar uma configuração ideal ele clica em salvar, para que esse pedido, configuraçao das posições dos items e demais calculos fiquem gravados em uma planilha para consulta positerior (sheet!DADOS)
Bem basicamente é isso... vou disponibilizar essa planilha aqui... fiz algumas mudanças por segurança da minha empresa:
http://rapidshare.com/files/120422185/LeanPack_Analysis_SITE.xls.html
Preciso da ajuda, suporte de vcs... sei programar no excel, mas no access só sei conceitos basicos das programações e ferramentas...
Sei que o sistema não vai ficar igual a planilha, nem de perto...
Mas alguem poderia me dar um suporte durante esse projeto????
Desde agradeço muito... segue meu email misterdomingues@gmail.com
Grt SLOT