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]Trasformar código em Função

    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Trasformar código em Função

    Mensagem  Convidado 19/7/2011, 19:00

    Gostaria de transfomar este código em uma função pública, é possivel?




    Dim DifFuso As Double, DifFusoX As Date
    Dim DifFusoINI As Double, DifFusoINIx As Date
    DifFuso = HrDbl("9:00")
    DifFusoX = HrStr(DifFuso)

    DifFusoINI = HrDbl(Format([txtTimeGMT], "hh:mm"))
    DifFusoINIx = HrStr(DifFusoINI)

    DifFusoINIx = FormatInterval(DifFusoINIx, "H:MM")
    DifFusoX = FormatInterval(DifFusoX, "H:MM")

    Dim X As String
    Dim Y As String
    Dim StrResult As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)

    StrResult = (X - Y)

    If Left(StrResult, 1) = "-" Then
    StrResult = HrStr(24 + (X - Y))
    Me.txtTimeZone = Date - 1 & " " & StrResult
    Else:
    StrResult = HrStr(X - Y)
    Me.txtTimeZone = Date & " " & StrResult

    Me.txtDifFusoGMT = "UTC -09:00"
    Me.txtLocal = "Alaska"
    End If
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  criquio 19/7/2011, 19:18

    Cria a função e coloque o código dentro dela. Vejo que tem alguns campos aí. Crie subs para eles, de modo que você possa referenciar essas subs nos campos aonde esses valores forem ficar.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 19/7/2011, 19:22

    Eu pensei em algo assim:



    Public Function TimeFuso(ByVal DifFuso As Variant, txtGMT As Double)
    Dim DifFusoX As Date, DifFusoINIx As Date
    Dim DifFusoINI As Double

    DifFuso = HrDbl(DifFuso)
    DifFusoX = HrStr(DifFuso)

    DifFusoINI = HrDbl(Format((txtGMT), "hh:mm"))
    DifFusoINIx = HrStr(DifFusoINI)

    DifFusoINIx = FormatInterval(DifFusoINIx, "H:MM")
    DifFusoX = FormatInterval(DifFusoX, "H:MM")

    Dim X As String
    Dim Y As String
    Dim StrResult As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)

    StrResult = (X - Y)

    If Left(StrResult, 1) = "-" Then
    StrResult = HrStr(24 + (X - Y))
    MsgBox StrResult
    'Me.txtTimeZone = Date - 1 & " " & StrResult
    Else:
    StrResult = HrStr(X - Y)
    MsgBox StrResult
    'Me.txtTimeZone = Date & " " & StrResult
    End If


    End Function


    e para o form:



    Dim Temp As Variant
    Temp = ("9:00")
    Call TimeFuso(Temp, Me.txtTimeGMT)


    Onde Temp é um valor pre- estabelecido
    o outro e o valor de uma caixa texto no form..


    Tendei aplicar assim.. mas deu erro na palavra em vermelho
    chsestrem
    chsestrem
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 463
    Registrado : 01/03/2010

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  chsestrem 19/7/2011, 19:28

    Se o código ja estava funfando tente mudar a Variavel Difuso para Double

    Public Function TimeFuso(ByVal DifFuso As Variant, txtGMT As Double)

    para

    Public Function TimeFuso(ByVal DifFuso As Double, txtGMT As Double)

    Sds,


    .................................................................................
    Charles Sestrem
    http://www.vbabit.com.br
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 19/7/2011, 19:57

    Ja tentei mas da erro na hora de chama a função no form... tipos incompatíveis..

    Posso postar o exemplo para que possam analizar?

    Grato
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  criquio 19/7/2011, 19:58

    Larga brasa Very Happy


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 19/7/2011, 20:04

    Experimente clicar na lista na linha que tem Alaska...

    Esta é a unica que apliquei o código e esta funcionado..
    como são várias linhas pretendia transformar em função para não ficar muito extenso o módulo do form...


    No módulo do form no case Alaska... logo abaixo esta o mesmo case adicionado1(este é o que funciona)

    Alaska - Executa função no módulo BasHoras
    Alaska1 - Executa código utilizando módulos do BasHoras
    '

    Para testaer com o que funciona é necessário desbilitar o case alaska e no outro case retirar o 1

    Shttp://dl.dropbox.com/u/26441349/GMT.rar
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 20/7/2011, 16:42

    Alguma novidade por aqui?

    Saudações
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 21/7/2011, 17:05

    Novidades por aqui??

    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 23/7/2011, 19:57

    Estou realmente precisando de ajuda aqui Crying or Very sad Crying or Very sad Crying or Very sad
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Alexandre Neves 23/7/2011, 23:00

    Sub SetaFuso(strHora as String,strTimeGMT as string,FrmTimeZone as Form,CtltxtTimeZone as Control,CtltxtDifFusoGMT as Control,CtltxtLocal as Control
    Dim DifFuso As Double, DifFusoX As Date
    Dim DifFusoINI As Double, DifFusoINIx As Date
    DifFuso = HrDbl(strHora)
    DifFusoX = HrStr(DifFuso)

    DifFusoINI = HrDbl(Format(strTimeGMT, "hh:mm"))
    DifFusoINIx = HrStr(DifFusoINI)

    DifFusoINIx = FormatInterval(DifFusoINIx, "H:MM")
    DifFusoX = FormatInterval(DifFusoX, "H:MM")

    Dim X As String
    Dim Y As String
    Dim StrResult As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)

    StrResult = (X - Y)

    If Left(StrResult, 1) = "-" Then
    StrResult = HrStr(24 + (X - Y))
    Me.FrmTimeZone!CtltxtTimeZone = Date - 1 & " " & StrResult
    Else:
    StrResult = HrStr(X - Y)
    Me.CtltxtTimeZone = Date & " " & StrResult

    Me.CtltxtDifFusoGMT = "UTC -09:00"
    Me.CtltxtLocal = "Alaska"
    End If
    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 25/7/2011, 18:57

    Caro Alexandre, não estou conseguindo aplicar...

    Poderia aplicá-lo neste exemplo que mandei ai acima..

    *** Esta parte não vai na função

    Me.CtltxtDifFusoGMT = "UTC -09:00"
    Me.CtltxtLocal = "Alaska"


    Obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Alexandre Neves 25/7/2011, 19:36

    Boa tarde, Hary

    No exemplo acima, esses valores estão atribuídos directamente, não em função de nenhuma variável.
    Ora, os valores atribuídos directamente mantêm-se. Se são variáveis, porquê no código que apresentou não serem variáveis?
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 25/7/2011, 19:49

    Tudo bem.. então é so exclui-los dai, pois em cada case de fuso tem esta definicão

    Eu tenho que chamar a função no case de cada Fuso..

    Como aplico?
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 25/7/2011, 20:04

    Amigão.. Funcionou assim:


    Sub SetaFuso(strHora As String, strTimeGMT As String)
    Dim DifFuso As Double, DifFusoX As Date
    Dim DifFusoINI As Double, DifFusoINIx As Date
    DifFuso = HrDbl(strHora)
    DifFusoX = HrStr(DifFuso)

    DifFusoINI = HrDbl(Format(strTimeGMT, "hh:mm"))
    DifFusoINIx = HrStr(DifFusoINI)

    DifFusoINIx = FormatInterval(DifFusoINIx, "H:MM")
    DifFusoX = FormatInterval(DifFusoX, "H:MM")

    Dim X As String
    Dim Y As String
    Dim StrResult As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)

    StrResult = (X - Y)

    If Left(StrResult, 1) = "-" Then
    StrResult = HrStr(24 + (X - Y))
    Me.txtTimeZone = Date - 1 & " " & StrResult
    Else:
    StrResult = HrStr(X - Y)
    Me.txtTimeZone = Date & " " & StrResult

    End If
    End Sub


    Obrigado
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 25/7/2011, 21:32

    Boa tarde amigo Alexandre...

    Resolvido a função para quando a diferença de fuso é negativa (-1:00,-2:00, etc.)
    Estou agora tentando para quando a diferença é positiva...

    O que ocorre é que quando faço a operação de diminuição (x-y) o resultado é correto
    Mas quando somo (x+y) ela adiciona o valor de Y na casa decimal

    Ex.: Se x = 15,3 e y = y me retonar o resultado de: 15,31 quando deveria ser 16,3

    Como resolver isso?



    Sub SetaFusoPositivo(strHora As String, strTimeGMT As String)
    Dim DifFuso As Double, DifFusoX As Date
    Dim DifFusoINI As Double, DifFusoINIx As Date
    DifFuso = HrDbl(strHora)
    DifFusoX = HrStr(DifFuso)

    DifFusoINI = HrDbl(Format(strTimeGMT, "hh:mm"))
    DifFusoINIx = HrStr(DifFusoINI)

    DifFusoINIx = FormatInterval(DifFusoINIx, "H:MM")
    DifFusoX = FormatInterval(DifFusoX, "H:MM")

    Dim X As String
    Dim Y As String
    Dim StrResultPositivo As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)
    MsgBox X
    MsgBox Y


    StrResultPositivo = (X + Y)

    'StrResult = HrStr(24 + (X - Y))
    'Me.txtTimeZone = Date - 1 & " " & StrResult

    StrResultPositivo = HrStr(X + Y)
    Me.txtTimeZone = Date & " " & StrResult

    End Sub


    Grato
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Alexandre Neves 26/7/2011, 18:38

    Boa tarde, Hary

    Está a somar strings!
    utilize StrResultPositivo = (CDbl(X) + CDbl(Y))
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 18:55

    Mas porque deu certo na diminuição???
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 18:59

    Porque aqui deu certo??

    StrResult = (X - Y)

    If Left(StrResult, 1) = "-" Then
    StrResult = HrStr(24 + (X - Y))
    Me.txtTimeZone = Date - 1 & " " & StrResult
    Else:
    StrResult = HrStr(X - Y)
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 19:09

    Olha só amigão... o que não entendo.. é que

    Se nesta situação diminuo, dá certo

    Dim X As String
    Dim Y As String
    Dim StrResultPositivo As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)
    MsgBox X
    MsgBox Y

    MsgBox X - Y

    StrResultPositivo = HrStr(X - Y)


    Se nesta situação somo, não dá certo

    Dim X As String
    Dim Y As String
    Dim StrResultPositivo As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)
    MsgBox X
    MsgBox Y

    MsgBox X + Y

    StrResultPositivo = HrStr(X + Y)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Alexandre Neves 26/7/2011, 19:09

    Hary,
    Isso é disforme. De qualquer forma, o + é utilizado para concatenação, enquanto o - tem apenas a função matemática e de hífen.
    Cumprimentos,
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  criquio 26/7/2011, 19:12

    Para somar no vb e no vba, deves usar a instrução Val:

    MsgBox Val(X) + Val(Y)

    Teste se é isso mesmo.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 20:00

    Apliquei Criquio...

    e numa soma de X= 18,95 + Y = 1

    Me retornou Valor = 19

    E agora?

    Devia retornar 19,95
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 20:22

    Alexandre.. apliquei o que me recomendou.. e a soma saiu correta.. porem a minha função que converte um Formato Double em um String de horas.. não aceitou a variável



    StrResultPositivo = (CDbl(X) + CDbl(Y))

    StrResultPositivo = HrStr(StrResultPositivo)

    Me.txtTimeZone = Date & " " & StrResultPositivo


    Esta é a função


    Public Function HrStr(dblHora As Double) As String
    'Pega um valor numérico e o converte para Horas/Minutos
    'Ex: 123,5 = "123:30"
    'Ex: 23,9833333333333 = "23:59"

    Dim strHoras As String
    Dim strMinutos As String

    'Pega as horas (parte inteira)
    strHoras = CStr(Fix(dblHora))

    'Pega os minutos
    strMinutos = Format$(Abs((dblHora - Fix(dblHora)) * 60), "00")

    'Verifica se o total de minutos é 60
    If strMinutos = "60" Then
    strMinutos = "00"
    strHoras = CStr(CDbl(strHoras) + 1)
    End If

    'Concatena os dois
    HrStr = strHoras & ":" & strMinutos

    End Function
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Alexandre Neves 26/7/2011, 20:58

    Oh Hary

    Esta é do F1
    StrResultPositivo = HrStr(CStr(StrResultPositivo))
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 21:03

    Ainda dá tipos incompatíveis... Shocked
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 21:07

    Amigão.. resolvi assim..

    Modifiquei o tipo da variável

    Dim StrResultPositivo As Variant

    Deu certo

    Grato
    avatar
    Convidado
    Convidado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Convidado 26/7/2011, 22:27

    Caros Alexandre e Criquio, agradecendo pela sempre paciência e ajuda... Este tópico está totalmente sanado..

    Segue a função para horários positivos..


    Sub SetaFusoPositivo(strHora As String, strTimeGMT As String)
    Dim DifFuso As Double, DifFusoX As Date
    Dim DifFusoINI As Double, DifFusoINIx As Date
    DifFuso = HrDbl(strHora)
    DifFusoX = HrStr(DifFuso)

    DifFusoINI = HrDbl(Format(strTimeGMT, "hh:mm"))
    DifFusoINIx = HrStr(DifFusoINI)

    DifFusoINIx = FormatInterval(DifFusoINIx, "H:MM")
    DifFusoX = FormatInterval(DifFusoX, "H:MM")

    Dim X As String
    Dim Y As String
    Dim StrResultPositivo As String
    X = Left(DifFusoINIx, 5)
    Y = Left(DifFusoX, 5)
    X = HrDbl(X)
    Y = HrDbl(Y)

    StrResultPositivo = (CDbl(X) + CDbl(Y))
    If Left(StrResultPositivo, 2) >= 24 Then
    StrResultPositivo = HrStr((StrResultPositivo) - 24)
    Me.txtTimeZone = Date + 1 & " " & StrResultPositivo
    Else
    StrResultPositivo = HrStr(CDbl(StrResultPositivo))
    Me.txtTimeZone = Date & " " & StrResultPositivo
    End If
    End Sub

    Conteúdo patrocinado


    [Resolvido]Trasformar código em Função Empty Re: [Resolvido]Trasformar código em Função

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 09:25