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

    [Resolvido]Do Excel para o Access

    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty [Resolvido]Do Excel para o Access

    Mensagem  Flashed 22/8/2011, 01:48

    Bem pessoal para ser mais pratico é objectivo reformulei o meu pedido de ajuda.


    A minha duvida é a seguinte:

    Neste link: http://www.4shared.com/file/pySwxu86/Do_excel_para_o_access_Emprega.html?

    Envio-vos um ficheiro de access, onde tem duas tabelas:

    Empregados
    Dados

    Na tabela "Dados" existem vários registos, cada registo corresponde a um utilizador diferente. Cada utilizador pode ter vários registos iguais ou não para o mesmo dia.

    Na tabela Empregados tenho os seguinte campos:

    numero
    nome
    horario
    horas a fazer
    Total de horas de produção normal
    Total de horas de produção extra
    Total de horas de descanso normal
    Total de horas de descanso extra

    Objectivo:

    A informação nos 4 primeiros campos sou eu que escrevo, nos seguintes campos a informação aparece através de cálculos.

    Por exemplo:

    numero=1
    nome=João
    horario=8:00/18:03
    horas a fazer=8,3
    Total de horas de produção normal=?
    Total de horas de produção extra=?
    Total de horas de descanso normal=?
    Total de horas de descanso extra=?

    O campo "Total de horas de produção normal" devera ser calculado da seguinte forma.

    O access procura todos os registos com campo numero = 1 na tabela "Dados" com tax= normal e tipodeserviço= produção e por final campo data= Entre 10-08-2011 e 15-08-2011.

    Nota: A data é definida no código, é fixa.

    Resultado seria:

    numero=1
    nome=João
    horario=8:00/18:03
    horas a fazer=8,3
    Total de horas de produção normal=8,3
    Total de horas de produção extra=0
    Total de horas de descanso normal=0
    Total de horas de descanso extra=0

    Resumindo: Os cálculos seriam feitos e mostrados na própria tabela "Empregados".
    Eu fazo isso em excel, onde Dados é uma sheet e Empregados é outra. Mas estou a querer mudar para access pois o numero de dados começa a ser muito e o excel começa a empancar.

    Também compreendo que o access não é o excel, dai estar na duvida de isto sera funcional. Mas no total preciso é de uma tabela onde tenha a info que eu escrevo dos Empregados e os cálculos correspondentes a cada.

    Para se perceber melhor eu transquevi o exemplo que dei em cima para o ficheiro access.

    Como podem ver na tabela DAdos o numero=1 só tem registo onde o campo tax=normal e tipodeserviço= produção e a data situa-se entre os dias= 10-08-2011 e 15-08-2011.

    Por isso na tabela Empregados o campo Total de horas de produção normal é igual a 8,3.

    Caso não percebam alguma coisa digam por favor.
    Obrigado pessoal por lerem este testamento Smile

    Cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 22/8/2011, 13:36

    Vamos la Amigão...

    Como eu disse no post anterio que tratava do assunto... Tabela são receptáculos de dados apenas... Todo o cálculo que pretente dever ser feito via código VBA, ai sim depois o resultado seria levando a tabela pelo comando UPDATE Sacou.??


    Verei o teu bd, qualquer coisa retorno

    Saudações
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 22/8/2011, 13:41

    Boas, Obrigado Smile

    Assim fica um topico mais limpo...o outro já tinha muitas ideias...Razz Que confusão lol
    fico aguardar resposta.

    cumps
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 22/8/2011, 23:50

    Harysohn sempre dá para fazer o que falo em cima? ou +e melhor arranjar outra forma.

    cumps
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  vieirasoft 22/8/2011, 23:54

    As minhas desculpas pela intromissão, mas o tópico anterior foi Resolvido (fechado)?
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 22/8/2011, 23:58

    Nao tem que pedir desculpas Smile

    Não está resolvido, pois este é a continuação. Eu apenas abri um novo para o assunto ficar mais claro.
    Eu ja devia ter posto o outro topico como resolvido..mas não encontro o botão Smile Onde é?

    ciumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 00:32

    Amigão.. no outro poste, digite uma mensagem dizendo que o assunto esta sendo resolvido neste tópico, e ao envia observe que há um botão Resolvido.. Clique nele ai depois envie a mensagem..

    Eu farei algo para voce amanha... hoje estou realmente muito atarefado.. não posso desviar o raciocinio que estou tendo com um código aqui...

    Me lembre amanha ok?

    Saudações
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 00:35

    Haaa achei o botão Smile Nunca olhei tanto para uma pagina a procura de um botão e afinal estava noutra lol

    Amanha envio-lhe uma mensagem privada Wink

    Boa sorte ai no código.
    Cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 11:20

    Me exlique a questão das Datas.. Poque serão fixas?
    Não mudará nunca?
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 11:41

    É assim:

    Todas as semanas eu terei que criar um nova tabela de empregados. E nessa altura defino a data que os cálculos deveram abranger.
    Cada tabela corresponde a uma semana do ano. Por isso para cada a tabela a data é fixa.

    Cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 11:42

    Ammigão... continuo a falar... As tabelas que enviaste continuam sem relacionamentos... sem chaves primárias... Isto está Errado!!!!!
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 11:46

    Então a tabela dados e empregados não precisam ser relacionadas?

    Em que momento voce cria a tabela dados? quando cria a de empregados?

    te confesso que não estou consweguindo entender sua lógica de utilização
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 11:58

    Não sei o porque de estarem relacionada...ainda não sei bem o proposito do relacionamento

    E assim:

    A tabela dados é sempre fixa apenas muda os seu dados. A tabela dados é uma tabela de dados externos, de um txt.
    Quando mudo o txt (que se localiza numa pasta de rede) a info muda na tabela Dados.

    A tabela empregados é criada uma nova todas as semana do ano!

    Por exemplo:

    Empregados Semana1
    Empregados Semana2

    Os campos
    numero
    nome
    horario
    horas a fazer

    Podem ser iguais entre as duas semanas ou ser diferentes, posso na semana 1 ter 11 empregados e na semana 2 tiver 10. já é diferente.

    Percebeu? expliquei bem?
    cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 11:59

    Vamos recaptular para que eu possa entender...

    A tabela dados voce já tem os valores estabelecidos... data e horas... quer apenas calcular os campos e os levar para a tblFUncionários

    é Isso?
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 12:07

    Sim, os valores que eu ja tenho são:

    Tabela Dados: Todos os campos, pois são os valores dos registos dos empregados

    Tabela empregados:

    Eu por semana decido os empregados que quero avaliar.
    Então formato (apago / adiciono) os campos numero/nome/horario/horas a fazer

    Os campos a serem calculados são:

    totalhorasdeproducaonormal
    totalhorasdeproducaoextra
    totalhorasdedescansonormal
    totalhorasdedescansoextra

    Neste campos aparecem os calculos que são efetuados pela logica que ja falei:

    Excerto do inico do tópico:

    Objectivo:

    A informação nos 4 primeiros campos sou eu que escrevo, nos seguintes campos a informação aparece através de cálculos.

    Por exemplo:

    numero=1
    nome=João
    horario=8:00/18:03
    horas a fazer=8,3
    Total de horas de produção normal=?
    Total de horas de produção extra=?
    Total de horas de descanso normal=?
    Total de horas de descanso extra=?

    O campo "Total de horas de produção normal" devera ser calculado da seguinte forma.

    O access procura todos os registos com campo numero = 1 na tabela "Dados" com tax= normal e tipodeserviço= produção e por final campo data= Entre 10-08-2011 e 15-08-2011.

    Nota: A data é definida no código, é fixa.


    cumps
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 14:54

    Harysohn precisa que esclareça alguma coisa? como está a correr?

    thanks
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 15:15

    Take Easy Brother!!
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 15:20

    Very Happy
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 16:32

    Vamos Lá Flashed... Preste bastante atenção e estude o exemplo...

    Ele lhe servirá de base para todos os cálculos que pretender.. O fiz pra Extra e normal... de resto use a imaginação e a lógica empregada no código para os demais cálculos que pretente...

    Pois bem:



    Private Sub Comando16_Click()
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim ws As DAO.Workspace
    Dim StrSql As String 'Variável que receberá a SQL
    Dim StrHoras As Double 'Variável que receberá o valor das horas calculados

    Set ws = DBEngine.Workspaces(0)
    Set Db = ws.OpenDatabase(CurrentProject.Path & "\Empregados_2.accdb", False, False, "MS Access;PWD=senha")
    'Acima as declarações necessárias ao recordset


    'Aqui carrego a variável com a SQL que é filtrada com o Empregado selecionado na Cbo no form
    'Observe que o campo utlizado no filtro é o txtID, conseguido no evento após atualizar da cbo, o filtro tambem é com relação ao tipo de hora escolhida na Cbo txtTax (Normal ou Extra)

    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And Tax = '" & Me.txtTax & "';"

    'Aqui carrego o Recordser com a instrução SQL contida na Variável StrSQL
    Set Rs = Db.OpenRecordset(StrSql)

    'Aqui se o recordset não retornar valores maiores que 0
    If Rs.RecordCount = 0 Then
    MsgBox "sem registro selecionado", vbInformation, "Atenção"
    'Caso contrário, caso seja valor maior que 0
    Else
    'Carrego a variável com valor 0 para mais adiante no código fazer a adição do mesmo com os valores das horas contidas no recordset
    StrHoras = 0

    'Inicio do código que executará o loop no recordset para o funcionário, fazendo a somatoria das horas
    Do While Not Rs.EOF
    StrHoras = StrHoras + Rs!horas 'Aqui será somado as horas... Se mais de um campo.. Vai adcionando, convem frizar que a hora somada aqui depende do tipo de hora escolhida na cbo txtTax no form (Normal ou extra) se normal soma as normais, se extra soma as extras
    Rs.MoveNext 'Passo ao proximo registro do recordset para a proxima hora (Normal ou extra) se existir

    Loop 'Executo o Loop
    End If
    'Aqui executa a atualização do total de horas de produção nornal, caso esteja selecionada no form
    If Me.txtTax = "Normal" Then
    CurrentDb.Execute "UPDATE Empregados SET totalhorasdeproducaonormal= '" & StrHoras & "' WHERE Numero =" & Me.txtID & ";"
    End If
    'Aqui executa a atualização do total de horas de produção Extra, caso esteja selecionada no form
    If Me.txtTax = "Extra" Then
    CurrentDb.Execute "UPDATE Empregados SET totalhorasdeproducaoExtra= '" & StrHoras & "' WHERE Numero =" & Me.txtID & ";"
    End If

    End Sub

    Experimente escolher os funcionarios e o tipo de hora e faça a atualização, depois vá na tbl Empregados e observe o resultado

    http://dl.dropbox.com/u/26441349/Flashed_23_08_11.rar


    Bom trabalho e estudo
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:09

    Boas

    Ficou demais. finalmente o meu projeto esta a andar Smile

    No form existe a possibilidade de eliminar as combo? Apenas escolher a data e ao carregar ele fazia os calculos para todos os numeros que tem no campo "numero" da tabela "Empregados". Não é necessário apresentar os valores que ele vai calcular.

    Apenas escolher a data, carregar no botão e ele faz os calculos para os empregados.

    Por exemplo: Para o campo "totalhorasdeproducaonormal" devera exister um codigo para tax= Normal e Tipo de de servico = Produção

    Da forma que esta fica muito demorado, pois no exemplo tenho apenas 2 empregados mas na realidade tenho 300 empr.

    Gosto do código muito bom mesmo...eu não tinha chegado lá!
    Obrigado
    Cumps
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:20

    REparei que é necessario postar o numro do empregado para se fazer os calulos.

    É por isso que usa o txtID,né?

    Em vez da comobo podia-se criar um datagrid onde eram postados todos os números. Esse datagrid teria uma coluna que era de opção sim ou não.

    Bastava selecionar todas as linha e o codigo:

    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And Tax = '" & Me.txtTax & "';" ' AND (data >=#" & Me.DataInicial & "# And data <= #" & Me.DataFinal & "#)"

    vinha buscar a informação do numero ao datagrid e não ao campo txtID.

    Isto para se conseguir selecionar os empregados todos.

    Para este setup txtTax (que já não existe) é normal.

    é apenas uma ideia..acha pratico?

    cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:34

    Bem amigão.. a ideia principal esta ai... é so utilizar a imaginação e fazer as alterações que achar conveniente...

    A ideia de selecionar é válida sim...

    A questão é voce tem que ter paramentros para identificar qual funcionario terá a linha atualizada...

    Se todos tivessem horas tipo iguais seria façil, não precisaria combo.. mas como são diferentes.. como o código iria saber qual a atualizar entendeu?

    Por isso é necessário ter o txtID do funcionério, que é para justamente fazer os calculos pertinentes a este, posto que são diferentes de um funcionario para outro...
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:37

    Todos os funcionaris terão a linha atualizada quando eu carregar no botão

    O objectivo é atualizar todos. Não dá para por o código a atualizar todos os números que estejam no campo numero da tblDados?
    Ou precisa sempre do txtID? Eu dei a ideia da dtagrid mas se houver uma opção mais simples tmbm serve.

    cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:39

    Creio que este tópico está resolvido...

    Nova Dúida, Novo Tópico, pois o tópico não deve tratar do desenvolvimento completo do sistema e sim da dúvida em si...

    Siga passo a passo

    Saudações
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:41

    Amigão.. pense comigo... como identificara a hora e o tipo de hora para quem é quem?????

    Como seu código vai somar sem saber de que funcionário é????

    Ele vai simplesmente somar todos juntos...

    Tem que ter o filtro...
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:42

    Ok.

    vou postar duvida noutro tópico.

    Como listar dados de uma coluna num userform e eliminar dados repetidos. Wink

    obrigado pela ajuda Smile

    antes de resolver..a data não está a ser assumida..
    Penso que seja esta linha que não está a ssumir..

    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And Tax = '" & Me.txtTax & "' And Data >= " & Me.DataInicial & " And Data <= " & Me.DataFinal & ""

    cumops
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:43

    Uma ideia....

    O que talvez pode ser feito é uma Lstbox com todos os funcinários.. e uma automatização nos registros da List, passando para o seguinte e aplicando este codigo...

    Algo Assim:

    Nas list

    Func 1 .... Executa código
    Seguidamente um código para mudar automaticamente para o
    Func 2 ..... Executa código..

    e assim sucessivamente
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:45

    Tive problemas com a data no caso.. ainda estou a tentar resolver isto..

    Esta parte eu desabilitei...

    Assim que resolver posto

    Saudações
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:47

    Ok...
    Fico aguardar.

    Já abri um novo link conforme disse: http://maximoaccess.forumeiros.com/t3997-listbox-listar-dados#34114

    Se poder ajudar agradeço Wink

    Obrigado
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:49

    Pense sobre isto.. talvez se consiga o que pretende utilizando a automatização da seguinte lógica:


    O que talvez pode ser feito é uma Lstbox com todos os funcinários.. e uma automatização nos registros da List, passando para o seguinte e aplicando este codigo...

    Algo Assim:

    Nas list

    Func 1 .... Executa código
    Seguidamente um código para mudar automaticamente para o
    Func 2 ..... Executa código..

    e assim sucessivamente
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:53

    Exactamente:)

    Executa o codigo para cada func.

    Então a listbox é valida ne? depois o codigo lé o numero do func da mesma maneira que lé na textbox? Quero dizer, lé de linha a linha?

    cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:54

    Este tópico creio que foi resilvido com a solução apresentada... Faltou apenas o resolvido Amigão...

    Saudações
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 17:55

    Sim claro...
    Aom clicar em um botão automatiza a passagem de um registro a outro da listBox, e no intervalo executar o codigo de atualização Sacou!!??


    Saudações
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 17:56

    Sacei Smile

    Então..proximo passo. Listar todos os números sem repetição numa listbox.

    Depois alterar o codigo vba para ler na listbox e nos intervalos executar a consulta (posso chmar assim né?) á tblDados.

    cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 18:00

    Listar é o de menos.. Apenas transforma a Cbo no seu form em uma listBox... Click encima dela e com o botão direito tem a opção de converter em outro objeto...

    Sem precisar criar uma nova list...


    Voce tem que encontrar agora um jeito de automatizar a navegação na list Box...

    Manualmente se voce clicar na list.. com o teclado (Setas) podes ir aos outros registros da list... o que tem que consegui é fazer isto por código Entendeu?
    Proximo Registro >>>>>>>Codigo Atualiza
    Codugo para ir para o proximo registro...
    Proximo Registri >>>>>>> Codigo Atualiza...

    E assim sucessivamente
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 18:06

    Estou a perceber.
    Ja consegui criar a listbox.

    Se usar-mos as setas ele corre diretio né?
    Se criarmos uma macro que faz o que a tecla para baixo faz no teclado? Assim depois de codigo Actualiza ele executa a macro que simulado o operador a carregar na seta.

    Que acha?
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 18:23

    Veja solução mais simples...

    O Código Atualiza.. Transformei em uma pequena função:


    Código:

    Private Sub Atualizar()
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim ws As DAO.Workspace
    Dim StrSql As String
    Dim StrHoras As Double

    Set ws = DBEngine.Workspaces(0)
    Set Db = ws.OpenDatabase(CurrentProject.Path & "\Empregados_2.accdb", False, False, "MS Access;PWD=senha")

    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And Tax = '" & Me.txtTax & "';" ' AND (data >=#" & Me.DataInicial & "# And data <= #" & Me.DataFinal & "#)"

        Set Rs = Db.OpenRecordset(StrSql)

    If Rs.RecordCount = 0 Then
            MsgBox "sem registro selecionado", vbInformation, "Atenção"
    Else
     StrHoras = 0
     
    Do While Not Rs.EOF
    StrHoras = StrHoras + Rs!horas
    Rs.MoveNext
    Loop
    End If
    'Aqui executa a atualização do total de horas de produção nornal, caso esteja selecionada no form
        If Me.txtTax = "Normal" Then
            CurrentDb.Execute "UPDATE Empregados SET totalhorasdeproducaonormal= '" & StrHoras & "'  WHERE Numero =" & Me.txtID & ";"
        End If
    'Aqui executa a atualização do total de horas de produção Extra, caso esteja selecionada no form
        If Me.txtTax = "Extra" Then
            CurrentDb.Execute "UPDATE Empregados SET totalhorasdeproducaoExtra= '" & StrHoras & "'  WHERE Numero =" & Me.txtID & ";"
        End If

    End Sub


    Criei um código para o botão que muda automaticamente a txtID e executa a função acima a cada loop do txtID

    No Form criei uma caixa texto para o Numero de funcionários da empresa.. pois o loop só será executado ate este numero

    Código:
    Private Sub Comando16_Click()
    On Error GoTo TrataErro
    Dim StrNumFunc As String
    Dim inti As Integer

    StrNumFunc = Me.txtNumFunc
    inti = 0

        fInLoop = True
        fExitLoop = False
       
        Do Until inti > StrNumFunc Or fExitLoop
       
                DoEvents
           
            inti = inti + 1
            Me.txtID = inti
            Call Atualizar
               
        Loop
     
        fInLoop = False

    TrataErro:
    If Err.Number = 2220 Then
        MsgBox "XXXXX"
    Else
    Resume Next
    End If
    End Sub



    http://dl.dropbox.com/u/26441349/Flashed_23_08_11.rar



    Agora tem materia suficiente para brincar...

    Agora é so alterar de acordo com sua necessidade.. trate erros,, preveja msg's para final de codigo etc...
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 18:30

    Fogo Smile Quem sabe sabe Smile

    Eu estava exprimentando este codigo:

    Private Sub Command23_Click()
    'Me.CboEmpregado.ListIndex 1

    CboEmpregado.ListIndex = CboEmpregado.ListIndex + 1
    End Sub

    Mas não funciona Razz
    Em visual basic funcionava...Mas o seu muito melhor.

    vou estudar o código e depois chateio Smile Logo posto o resultado;)

    Obrigado por tudo
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 18:31

    Substitua este código:

    Código:
    Private Sub Comando16_Click()
    On Error GoTo TrataErro
    Dim StrNumFunc As String
    Dim inti As Integer

    StrNumFunc = Me.txtNumFunc
    inti = 0

        fInLoop = True
        fExitLoop = False
       
        Do Until inti >= StrNumFunc Or fExitLoop
       
                DoEvents
           
            inti = inti + 1
            Me.txtID = inti
            Call Atualizar
               
        Loop
     
        fInLoop = False
        Exit Sub

    TrataErro:
    If Err.Number = 2220 Then
        MsgBox "XXXXX"
    Else
    Resume Next
    End If
    End Sub



    Adicionei o Exit Sub após o Loop

    E

    Do Until inti >= StrNumFunc Or fExitLoop
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 18:35

    Já fiz...mas passa-se algo. Se adicionar um novo empregado ele não lê.

    Tenho que adicionar mais linhas no Loop né?
    Se tiver 300 empregados tenho que adicionar 300 loop?
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 18:38

    O que eu disse está errado...pensei que o numero de LOOP tivesse haver com os empregados...
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 18:40

    Amigão.. agora é voce que não está a prestar atenção...

    O loop so será executado até o limite estabelecido na caixa texto txtNumFunc...

    Que no exemplo que te enviei apliquei valor padrão 2, pois aqui so tinha dois na tabela...

    Se tens 300... coloque 300 na caixa texto...

    O loop será executado somente até este teto máximo

    Veja:

    StrNumFunc = Me.txtNumFunc
    inti = 0
    fInLoop = True
    fExitLoop = False

    Do Until inti >= StrNumFunc Or fExitLoop

    Observe que se encerra o loo quando o mesmo for Maior ou Igual a Variável StrNumFunc.. que é o numero de funcionários na caixa texto

    Capite!!!
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 18:46

    Opa distrai-me Razz

    Na textbox você tem que por o numero do empregado mais alto!

    Exprimente por um empregado com numero 10!
    Se puser 3 na textbox ele não executa.

    cumps
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 19:10

    Estive a pensar e não existe necessidade de criar uma variavel..penso eu Smile

    Tentei modificar o código desta maneira:

    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And tax =" & "Normal" & ";"

    Onde tax (Coluna em Dados é igual a Normal)

    Só que nada acontece.

    Ficou assim:


    Private Sub Atualizar()
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim ws As DAO.Workspace
    Dim StrSql As String
    Dim StrHoras As Double


    Set ws = DBEngine.Workspaces(0)
    Set Db = ws.OpenDatabase(CurrentProject.Path & "\Empregados_2.accdb", False, False, "MS Access;PWD=senha")

    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And tax =" & "Normal" & ";"

    Set Rs = Db.OpenRecordset(StrSql)
    CurrentDb.Execute "UPDATE Empregados SET totalhorasdeproducaonormal= '" & StrHoras & "' WHERE Numero =" & Me.txtID & ";"
    If Rs.RecordCount = 0 Then
    'MsgBox "sem registro selecionado", vbInformation, "Atenção"
    Else
    StrHoras = 0

    Do While Not Rs.EOF
    StrHoras = StrHoras + Rs!horas
    Rs.MoveNext
    Loop
    End If


    End Sub


    Última edição por Flashed em 23/8/2011, 19:25, editado 1 vez(es)
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 19:24

    é sim..
    mas pra que variável com esse valor..

    Não é melhor escolher na combo e atualizar de acordo com a escolha?
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 19:27

    Não, a combo da trabalho.

    Quero definir tudo no codigo do vba. Assim é so carregar no botão e ele actualiza.

    estava a pensar usar as variáveis para a data. Assim resolvia-se o problema da data.
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 19:40

    Bem meu amigo... Ai é com voce agora.. faça as modificações que pretender.. e qualquer dúvida poste


    Apenas modifiquei algo pra ti...

    Para não precisar digitar o numero de funcionários, utilizei o Dcount para contar a tabela empregados e levar o valor para definir o Loop


    Veja

    Código:

    Private Sub Comando16_Click()
    On Error GoTo TrataErro
    Dim Db As DAO.Database
    Dim Rs As DAO.Recordset
    Dim ws As DAO.Workspace
    Dim StrSql As String
    Dim StrHoras As Double
    Dim StrNumFunc As String
    Dim inti As Integer


    If IsNull(txtTax) = True Or Me.txtTax = "" Then
        MsgBox "Preencha o tipo de Hora", vbInformation, "Atenção"
        Exit Sub
    Else

    Set ws = DBEngine.Workspaces(0)
    Set Db = ws.OpenDatabase(CurrentProject.Path & "\Empregados_2.accdb", False, False, "MS Access;PWD=senha")

    StrSql = "SELECT * FROM Empregados"

        Set Rs = Db.OpenRecordset(StrSql)
       
    StrNumFunc = DCount("*", "[Empregados]")
    MsgBox StrNumFunc
    inti = 0

        fInLoop = True
        fExitLoop = False
       
        Do Until inti >= StrNumFunc Or fExitLoop
       
                DoEvents
           
          inti = inti + 1
          Me.txtID = inti
          Call Atualizar
        Loop
     
        fInLoop = False
        Exit Sub
    End If

    TrataErro:
    If Err.Number = 2220 Then
        MsgBox "XXXXX"
    Else
    Resume Next
    End If

    End Sub


    Agora não precisa da caixa texto txtNumFunc...


    Saudações e bom trabalho
    avatar
    Flashed
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 258
    Registrado : 03/05/2011

    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Flashed 23/8/2011, 19:51

    Beleza

    Desativei as msgbox para não ter que carregar sempre OK.

    como eu devo definir as variáveis no access?E como devo disser que o campo tax é igual a Normal? Pois não estou a conseguir dizer isso!

    cumps
    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 19:55

    Eu aconselho deixar a combo... o unico trabalho e selecionar o tipo de hora a atualizar...

    Mas se prefere de outra maneira.. tudo bem


    StrSql = "SELECT * FROM Dados WHERE numero = " & Me.txtID & " And tax ="Normal";"

    avatar
    Convidado
    Convidado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Convidado 23/8/2011, 19:57

    Amigão... em tanto código que está a mexer.. não percebeste o tanto de variáveis que está lidando????


    StrNumFun, Into StrSQL todas são variáveis...

    é so utilizar o mesmo padrao, sabendo portanto definir o tipo de variavel, se string, se double etc....

    Conteúdo patrocinado


    [Resolvido]Do Excel para o Access Empty Re: [Resolvido]Do Excel para o Access

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 09:52