MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


3 participantes

    Ajuda com Banco de Dados

    avatar
    pfdstm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 04/11/2016

    Ajuda com Banco de Dados  Empty Ajuda com Banco de Dados

    Mensagem  pfdstm 4/11/2016, 17:40

    Olá amigos do fórum,

    Não sei é referente ao assunto, se não for, podem mover para o grupo certo.

    É a minha primeira postagem, não conheço muito de access, mas já o utilizei para resolver um problema com os simulados do colégio onde trabalho. Faço tudo manualmente, desde a importação das planilhas como os relatórios, gostaria de automatizar ao máximo esse processo. Diante disso tentarei ser o mais detalhista possível para explicar o que pretendo fazer com a ajuda de vocês. O post vai ficar longo mas vamos lá (Espero que alguém leia)
    Temos um simulado aqui no colégio na qual eu faço a conferência dos cartões-resposta pelo scanner, esse arquivo de conferência é no formato XLS no Excel na quais as colunas estão distribuídas da seguinte forma:
    RA             RESP-01  RESP-02  TOTAL

    20155555         A           B          90
    Planilha Resultados
    Obs: as RESP vão de RESP-01 a RESP-90 na planilha
    Onde RA é o registro acadêmico do aluno, resp-0X a alternativa que ele marcou e total é a quantidade de acertos.
    Outra tabela é onde ficam armazenados os nomes dos alunos e seus respectivos RAs.

    R.A.           Aluno        Período letivo      Curso           Nº do aluno    Habilitação Situação de matrícula      Turma
    20065003    José João   2016D          Ensino Médio       1                  1ª Série           Ativo                    M_1SC

    Tabela Turmas

    Há também uma prova de redação que é feita separadamente do simulado feito com os cartões resposta.
    Agora vou detalhar o que faço:
    1 – Na planilha resultados, excluo a primeira linha em branco ou outras linhas que contiverem o RA em Branco e adiciono mais uma coluna chamada Nota da Redação, e na coluna criada adiciono zeros a todos os valores e depois salvo a planilha como mostra a tabela abaixo
    RA           RESP-01   RESP-02     TOTAL     Nota da Redação
    20155555       A          B               90                  0

    2 – Na planilha turmas não faço nada
    3 – Abro o Access e começo um novo banco de dados
    4 – Vou em Dados Externos e importo as Planilhas de resultados e também a de turmas. Configuro como chave primária tanto o Campo RA da tabela de resultados como o Campo RA da tabela turmas. Obs: Por isso excluir as linhas em branco e os RAs , para o Access não dar erro de chave primária
    5 – Depois em Relações, crio as relações entre tabelas usando as chaves primarias. Salvo e fecho
    6 – Crio uma consulta que exibe o RA, Número do Aluno, Nome, Nota do Simulado, Nota da Redação, Total e Conceito. A consulta é mostrada abaixo
    SELECT Turmas.Identificação, Turmas.RA, Turmas.[Nº do aluno], Turmas.Aluno, [3_SERIE_A].Total AS Nota_Simulado, [3_SERIE_A].Redação AS Nota_Redação, [3_SERIE_A]![Total]+[3_SERIE_A]![Redação] AS Total_Geral, Switch([3_SERIE_A].Redação+[3_SERIE_A].Total<=34,"F",[3_SERIE_A].Redação+[3_SERIE_A].Total>=35 And [3_SERIE_A].Redação+[3_SERIE_A].Total<=49,"E",[3_SERIE_A].Redação+[3_SERIE_A].Total>=50 And [3_SERIE_A].Redação+[3_SERIE_A].Total<=64,"D",[3_SERIE_A].Redação+[3_SERIE_A].Total>=65 And [3_SERIE_A].Redação+[3_SERIE_A].Total<=79,"C",[3_SERIE_A].Redação+[3_SERIE_A].Total>=80 And [3_SERIE_A].Redação+[3_SERIE_A].Total<=92,"B",[3_SERIE_A].Redação+[3_SERIE_A].Total>=93 And [3_SERIE_A].Redação+[3_SERIE_A].Total<=100,"A") AS Conceito
    FROM Turmas INNER JOIN 3_SERIE_A ON Turmas.RA = [3_SERIE_A].INSCRIÇÃO
    ORDER BY Turmas.Turma, Turmas.[Nº do aluno];
    Obs.: Se eu não colocar o zero na tabela redação, não é mostrado o conceito, nem é mostrada mensagem de erro.
    Depois disso tudo crio um formulário para inserção das notas da redação, daí gero um relatório com os conceitos.

    O que gostaria de fazer e automatizar?

    1 – Importação da planilha do Excel para o Access. Na parte da planilha de resultados já excluísse as linhas em branco e com o RA e também faria a inserção da coluna nota da redação no ato a importação. Não sei se é possível criar uma macro ou fazer por VBA.

    2 – Automatizar a relação das tabelas.
    Não sei se usei os termos certos, mas não achei no fórum essas questões para o meu objetivo. Não sei se é possível criar uma macro ou fazer por VBA.

    Se alguém souber e puder indicar agradeço também.
    rubenscouto
    rubenscouto
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 679
    Registrado : 02/10/2011

    Ajuda com Banco de Dados  Empty Re: Ajuda com Banco de Dados

    Mensagem  rubenscouto 15/11/2016, 01:54

    A parte da importação da planilha de resultados creio que ainda pode ficar sendo feita no excell, mas a do cadastro de Alunos, Periodo, Curso, Habilitação e Turma pode perfeitamente ser feito no access. Só me diga uma coisa: para cada planilha de resultados você cria um banco de dados novo?
    avatar
    pfdstm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 04/11/2016

    Ajuda com Banco de Dados  Empty Re: Ajuda com Banco de Dados

    Mensagem  pfdstm 16/11/2016, 18:41

    Não crio um novo banco, utilizo o anterior removendo as tabelas de resultados e depois recrio as relações. Quero eliminar esse processo. Quero automatizar essa importação e que nela já faça a exclusão dos arquivos null e já faça a relação com a tabela turmas. Não sei se expliquei de forma correta.
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Ajuda com Banco de Dados  Empty Re: Ajuda com Banco de Dados

    Mensagem  Silvio 16/11/2016, 19:23

    apenas um simples pitaco...

    eu uso esse código abaixo para importar do Excel para o Acess

    Código:
    Private Sub bt_ImportarPreposto_Click()
    ' Requer referencia a Microsoft Office 11 Object Library
        On Error GoTo PROC_ERR
       
        Dim fd As FileDialog
        Set fd = Application.FileDialog(msoFileDialogFilePicker)
       
        fd.Title = "selecione o arquivo"
        fd.Filters.Add "Arquivo XLS", "*.xls", 1  'se for o caso, mude a extensão para XLSX, onde esta xls

        fd.Show
       
        If (fd.SelectedItems.Count > 0) Then
            '------inicio importação excel para sincronização
            Dim strPathFile As String, strFile As String, strPath As String
            Dim strTable As String
            Dim blnHasFieldNames As Boolean
            blnHasFieldNames = True
            strPathFile = fd.SelectedItems(1)
            strTable = "TblPrepostoTmp"  ' tabela temporária
         
            'apaga temporários, não é necessário, mas por segurança estou limpando a tabela antes
            DoCmd.RunSQL "Delete * from TblPrepostoTmp"
           
            'importa para tabela local temporária
            DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames
            MsgBox "Registros importados com sucesso !" & vbCrLf & _
                  "Atualizando registros de comissão", vbInformation, Me.Caption
                   
                   
            'Declaração das Variaveis
    Dim db As Database
    Dim rs As DAO.Recordset ' TblPrepostoTmp - onde estão os dados que serão importados
    Dim rs1 As DAO.Recordset ' tblacertocomissao -  para onde irão os dados a serem importados.


    Set db = CurrentDb()


                    'Filtra os dados da tabela de Origem e Define a tabela de Destino dos dados.
        Set rs = db.OpenRecordset("SELECT * FROM TblPrepostoTmp ")
        Set rs1 = db.OpenRecordset("tblacertocomissao")

     
    'Inicia a Gravação dos dados na Tabela de Destino Selecionada Nas Condições acima
    'Repete até COPIAR todos os Registros que foram importados
    Do While Not rs.EOF
            'Inicia a Gravação dos dados na tblacertocomissao
            rs1.AddNew
            rs1("CodPed") = rs("CodPed")
            rs1("DataPed") = rs("DataPed")
            rs1("NossoPedido") = rs("NossoPedido") & " / " & rs("VendedorOculta")
            rs1("VendedorOculta") = rs("VendedorOculta")
            rs1("Cliente") = rs("Cliente")
            rs1("PrazoOculta") = rs("PrazoOculta")
            rs1("ValortotalPedido") = rs("ValortotalPedido")
            rs1("ForneOculta") = rs("ForneOculta")
            rs1("Efetivado") = rs("Efetivado")
            rs1.Update
        rs.MoveNext
        Loop


        'Ao Final Encerra as Conexões
        rs.Close
        rs1.Close
        db.Close

       


           
            MsgBox "Operação concluída.", vbInformation, Me.Caption
           
            'apaga temporarios da tblprepostotmp que recebeu a importação.
            DoCmd.RunSQL "Delete * from TblPrepostoTmp"
           
        Else
            MsgBox "Não foi escolhido nenhum arquivo", vbInformation, Me.Caption

        End If
       
    PROC_EXIT:
        Exit Sub
       
    PROC_ERR:
        DoCmd.Hourglass False
        If Err.Number = 3011 Then
          LocalXML = ""
          MsgBox ("Arquivo inválido.")
        Else
            MsgBox Err.Description
        End If
        Resume PROC_EXIT
    End Sub

    Adapte-o conforme a tua necessidade.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    avatar
    pfdstm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 04/11/2016

    Ajuda com Banco de Dados  Empty Re: Ajuda com Banco de Dados

    Mensagem  pfdstm 17/11/2016, 14:33

    Muito obrigado pelas respostas, vou verificar e adequar a necessidade. Depois posto o resultado.
    rubenscouto
    rubenscouto
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 679
    Registrado : 02/10/2011

    Ajuda com Banco de Dados  Empty Re: Ajuda com Banco de Dados

    Mensagem  rubenscouto 20/11/2016, 16:56

    poderia dispor o arquivo exemplo da importação do excell conforme mensagem silvio?

    Conteúdo patrocinado


    Ajuda com Banco de Dados  Empty Re: Ajuda com Banco de Dados

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 15:14