Comparar planilha ao banco de dados para gerar o documento

1

Estou tentando simplificar a produção de um documento que precisa ser criado regularmente. Há tarefas associadas a instruções detalhadas sobre como concluí-las e cada uma delas tem um número de ID específico que é reutilizado em vários projetos. Eu absorvi o maior número de identificações de tarefa que consegui em um banco de dados de acesso.
Para cada projeto, alguém puxa uma lista de todas as tarefas necessárias de outro banco de dados que não posso acessar e as coloca em uma pasta de trabalho do Excel com um formato padrão. Para cada projeto, preciso:

  • Preencha todas as tarefas relevantes pelo número de ID
  • Compare-os com a lista padrão no meu banco de dados, que tem as etapas para concluir a tarefa e algumas outras informações
  • Gere um documento com um formato específico usando as informações específicas sobre as tarefas

Escrever uma macro no Excel pareceu um grande trabalho, mas a melhor aposta, mas não posso ter certeza de que o banco de dados de acesso permanecerá sempre no mesmo lugar a que pertence. Como o banco de dados é o item consistente em todos os projetos, pensei em escrever uma macro no Access e ter uma caixa de diálogo perguntando onde a planilha funcionaria, mas usar uma tabela para comparar as duas listas parecia mais complexo do que simplesmente gerar uma folha de comparação dentro do excel. Eu realmente não considerei escrever uma macro dentro do Word, embora essa seja uma possibilidade também.

Estou tentando encontrar a maneira mais lógica de criar essa configuração. Usar 3 programas de escritório diferentes parece bastante confuso, mas estou limitado no software que tenho disponível para fazer isso:

  • Office 2007
  • Além de comparar
  • Os outros programas instalados (não consigo instalar software adicional) não parecem remotamente relevantes para a tarefa

Alguém tem alguma idéia de como fazer isso?

    
por Secundus 18.04.2012 / 05:35

3 respostas

1

Se você tivesse o Crystal Reports, poderia juntar a tabela do Excel às tabelas do Access; em seguida, imprima 2 relatórios, um com correspondência de dados no ID e o outro relatório para listar registros sem correspondências de ID. A formatação é incrível. Eu escrevo relatórios onde associo arquivos do Excel a um banco de dados Oracle para relatórios. Você deve ser capaz de unir o arquivo do Excel a ACCESS e criar o mesmo tipo de relatório, assumindo que ambos tenham os campos de ID correspondentes.

    
por 18.08.2012 / 10:54
0

Você já pensou em usar uma conexão ODBC para vincular os dois conjuntos de dados?

resultados da Google para ODBC e Excel

Se o seu ambiente de trabalho nativo for o banco de dados e você puder trabalhar na automação da entrada desses novos campos de dados, poderá usar consultas simples para selecionar os dados (novos) sem correspondência e trabalhar a partir daí. É uma pena que você não possa simplesmente retirar o primeiro banco de dados do seu, ou ter o primeiro conjunto de exportações de dados simplesmente exportando um CSV de dados novos ou alterados.

Em ambos os lados, você pode anexar os novos dados e compará-los aos existentes (com consultas no Access ou em uma Tabela Dinâmica no Excel). Se você criar uma nova coluna / campo para atuar como um sinalizador booleano simples, poderá diferenciar os conjuntos de dados e mesclá-los na mesma tabela / documento. Como alternativa, aplique um código para importações semanais (ou qualquer outro período) para que você possa usar esse campo "sinalizador" para futuras consultas.

A tabela dinâmica seria meu primeiro ponto de escala, já que você pode trabalhar mais rápido no estágio de escopo do que com as consultas ao banco de dados, e pode visualizar seus requisitos de relatório / comparação na única exibição.

Se você puder "lavar" seus dados para torná-los anônimos, publique alguns exemplos de soluções mais específicas.

    
por 19.04.2012 / 01:41
0

Você pode obter os dados do Excel como um conjunto de registros, o que permitirá fácil comparação

Dim xldb As New adodb.Connection
Dim xlcmd As New adodb.Command
Dim XL As New adodb.Recordset

With xldb
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .ConnectionString = "Data Source=" & FileName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;ReadOnly=True"";"
    .Open
End With

Set xlcmd.ActiveConnection = xldb
xlcmd.CommandType = adCmdText
xlcmd.CommandText = "Select * from [Sheet1$]"
XL.CursorLocation = adUseClient
XL.CursorType = adOpenDynamic
XL.LockType = adLockOptimistic
XL.Open xlcmd

agora você pode usar o conjunto de registros XL e pesquisar / passar por ele e colocar as informações em seu banco de dados

    
por 01.06.2012 / 21:59