MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Compartilhe

    LeoStar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 83
    Registrado : 18/05/2010

    [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  LeoStar em Sab 12 Set 2015, 14:35

    Por favor Caros Colegas... alguém que me ajude a ver o erro neste código que eu já não vejo nada!... Lol.

    Public Function fncTabelaExiste() As Boolean
    Dim rs As DAO.Recordset
    Dim strNomeTabela As String
    Dim dtDoPrimReg As Date
    strNomeTabela = "TabTurma5A"
    dtDoPrimReg = "#" & "SELECT (DataRegisto) FROM (TabTurma5A) WHERE CampoData = (Select Min(DataRegisto) FROM (TabTurma5A)" & "#"


    On Error Resume Next

    Set rs = CurrentDb.OpenRecordset(strNomeTabela)

    If Err.Number = 3078 Then
       fncTabelaExiste = False
     
      MsgBox ("A tabela NÃO existe")
     
    Else
       fncTabelaExiste = True
       
       MsgBox ("A tabela com o nome " & strNomeTabela & " já existe e foi criada em " & "#" & dtDoPrimReg & "#")
       
    End If
    Set rs = Nothing
    End Function

    A mensagem de erro que recebo é: Runtime error 13 Type Mismatch na linha de código que pus a vermelho.
    Abraço e um grande Bem Haja antecipadamente.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2509
    Registrado : 29/06/2012

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  Noobezinho em Sab 12 Set 2015, 14:49

    Leo


    Tanto tempo de casa e ainda não aprendeu as regras?

    Postando dúvidas em repositórios?

    Espero que isso não venha ocorrer novamente.

    Vou mudar de sala dessa vez.


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

    LeoStar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 83
    Registrado : 18/05/2010

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  LeoStar em Sab 12 Set 2015, 14:58

    Desculpe Noobezinho... sinceramente... nem reparei de tão cansado que estou!... Bem Haja pela chamada de atenção.

    Um erro eu já descobri e corrigi mas mesmo assim continua errado!
    Era ter em vez de " DataRegisto" escrito "CampoData".

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2509
    Registrado : 29/06/2012

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  Noobezinho em Sab 12 Set 2015, 15:41

    dtDoPrimReg = & "SELECT (DataRegisto) FROM (TabTurma5A) WHERE CampoData = (Select Min(DataRegisto) FROM (TabTurma5A)"

    A cerquilha (#) usa-se somente em campo data/hora no VBA para informar ao Access que é um campo data/hora conforme o formato.

    Ex.: "#" & me.minhadata & "#" ou "#" & me.minhahora & "#"

    Utilize essa função:

    Public Function fncTabelaExiste(mtabela As String) As Boolean
    Dim tbl As DAO.TableDef

    For Each tbl In CurrentDb.TableDefs

       If tbl.Name = mtabela Then
          MsgBox "existe!"
          fncTabelaExiste = True
          Exit For
       Else
       fncTabelaExiste = False
       End If
    Next
    End Function


    Uso:
    fncTabelaExiste("TabTurma5A")

    [ ]'s


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

    LeoStar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 83
    Registrado : 18/05/2010

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  LeoStar em Sab 12 Set 2015, 16:25

    Caro Noobezinho,

    Bem haja pelo seu tempo. Acontece que usei o seu "select" para obter o valor da DataRegisto mas continuava a dar erro. Relativamente à função fiz apenas uma pequena alteração já que ela funcionava bem. O problema era mesmo ir buscar o valor da DataRegisto. Entretanto mudei a linha para baixo - pus na instrução condicional - e funcionou mas com um problema: a DataRegisto na tabela é a de hoje (12-09-2015) e a msgbox apresenta-me um valor esquisito (00:00:00)! Sabe dizer-me como resolver agora isto?... Entretanto deixo o código como o tenho de momento:

    Public Function fncTabelaExiste() As Boolean
    Dim rs As DAO.Recordset
    Dim strNomeTabela As String
    Dim dtDoPrimReg As Date
    strNomeTabela = "TabTurma5A"


    On Error Resume Next

    Set rs = CurrentDb.OpenRecordset(strNomeTabela)

    If Err Then
       fncTabelaExiste = False
     
      MsgBox ("A tabela NÃO existe")
     
    Else
       fncTabelaExiste = True
       dtDoPrimReg = "SELECT (DataRegisto) FROM (TabTurma5A) WHERE DataRegisto = (Select Min(DataRegisto) FROM (TabTurma5A)"
       
       MsgBox ("A tabela com o nome " & strNomeTabela & " já existe e foi criada em " & dtDoPrimReg)
       
    End If
    Set rs = Nothing
    End Function

    Porquê me retorna a data de "00:00:00"?
    Agradecia a sua opinião.
    LeoStar.

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2509
    Registrado : 29/06/2012

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  Noobezinho em Sab 12 Set 2015, 16:58

    Experimente:


    dtDoPrimReg = "SELECT (#DataRegisto#) FROM (TabTurma5A) WHERE DataRegisto = (Select Min(#DataRegisto#) FROM (TabTurma5A)"

    Se não funcionar, experimente fazer a consulta em criar consulta,,,

    Então poderá pegar a SQL da consulta e colocar na folha de VBA.

    [ ]'s


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

    LeoStar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 83
    Registrado : 18/05/2010

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  LeoStar em Sab 12 Set 2015, 18:03

    Noobezinho,
    Aqui estou de novo e já estou a ficar maluco... não entendo o que está errado.

    Tentei o seu sql e não resultou. Depois achei boa a sua sugestão e criei uma consulta e pus o sql da consulta no módulo... nada. Sempre dava a data 00:00:00. Por último tentei com o DLookup à consulta que criei e que não sendo muito apreciado, resulta quase sempre. Aqui pelos vistos também não! Pois nem isso... retorna sempre 00:00:00. E a consulta que criei retorna a data correcta. Como é possível? O que estará a acontecer?
    Deixo aqui as duas linhas que tentei:

    Primeiro com o sql  que me indicou:
    dtDoPrimReg = "SELECT (#DataRegisto#) FROM (TabTurma5A) WHERE DataRegisto = (Select Min(#DataRegisto#) FROM (TabTurma5A)"

    Depois com o sql da consulta:
    dtDoPrimReg = SELECT Min(TabTurma5A.DataRegisto) AS MinDeDataRegisto FROM TabTurma5A INNER JOIN [Consulta ALA] ON TabTurma5A.AnoLectivo = [Consulta ALA].AnoLectivo

    E por fim com o DLookup:
    dtDoPrimReg = DLookup("Min(DataRegisto).CsDataRegMinTabTurma5A", "CsDataRegMinTabTurma5A")

    Estou sem mais ideias... e desesperado com este problema.

    A msgbox retorna sempre: A tabela com o nome TabTurma5A já existe e foi criada em 00:00:00

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2509
    Registrado : 29/06/2012

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  Noobezinho em Sab 12 Set 2015, 19:12

    Leo

    Se puder copiar as tabelas e controles em questão e enviar para cá
    via dropbox ou mega. poderemos ajudar melhor.


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

    LeoStar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 83
    Registrado : 18/05/2010

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  LeoStar em Dom 13 Set 2015, 00:51

    Noob...

    Aqui deixo um link com o exemplo: [Você precisa estar registrado e conectado para ver este link.]

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2509
    Registrado : 29/06/2012

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  Noobezinho em Dom 13 Set 2015, 16:21

    Leo

    Ta aí a função funcionando como deseja:

    Public Function fncTabelaExiste()
    Dim tbl As DAO.TableDef
    Dim strNomeTabela As String
    Dim dtPrimReg As Date
    For Each tbl In CurrentDb.TableDefs
       strNomeTabela = "TabTurma5A"
       If tbl.Name = strNomeTabela Then
         dtPrimReg = Format(tbl.DateCreated, "dd/mm/yyyy")
     
         MsgBox "A tabela com o nome [" & strNomeTabela & "], já existe e foi criada em " & dtPrimReg & "."
         
      End If
    Next
    End Function


    Só precisa definir o que precisa;

    Verificar se existe a tabela ou registros específicos dentro da tabela.

    [ ]'s


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

    LeoStar
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 83
    Registrado : 18/05/2010

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  LeoStar em Seg 14 Set 2015, 01:28

    Caro Noob,

    Em primeiro lugar quero agradecer a atenção e o tempo que dedicou ao meu problema. Contudo acabei por não optar pela sua solução pois ela dava-me sim a data em que a tabela foi criada mas eu necessito para além da data do primeiro registo - que pode não ser necessariamente a data de criação da tabela - preciso também posteriormente da data do último registo (à medida que forem sendo acrescentados registos). E isso o seu código não retornava.
    Depois de muitas tentativas e de quase desesperar - pois não entendo porque ele não me devolve a  data com o "select..." encontrei uma forma ainda que um pouco "rebuscada" mas que funcionou e penso que irei utilizar.
    Criei um form com duas textbox onde pesquiso e me retornam a menor e a maior data dos registos. Depois na função fiz igualar as duas variáveis dtPrimReg e dtUltReg a esses valores do form.
    No construtor de macros mando abrir o form em modo oculto e correr a função de seguida, obtendo a caixa de mensagem pretendida.
    Será talvez uma solução esquisita mas funciona bem.
    Para que conste e para terminar aqui deixo o código da função que me retorna o pretendido:

    Public Function fncTabelaExiste2()
    Dim rs As DAO.Recordset

    Dim strNomeTabela As String
    Dim dtPrimReg As Date
    Dim dtUltReg As Date
    strNomeTabela = "TabTurma5A"



    On Error Resume Next

    Set rs = CurrentDb.OpenRecordset(strNomeTabela)

    If Err Then
       
      MsgBox ("A tabela NÃO existe")
     
    Else
             
           dtPrimReg = Forms!FormDatasTab!TxtPrimReg.Value
           dtUltReg = Forms!FormDatasTab!TxtUltReg.Value

       MsgBox ("A tabela " & strNomeTabela & " já existe, foi criada em " & dtPrimReg & " e o último registo tem a data de " & dtUltReg)

    End If
    Set rs = Nothing
    End Function

    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2509
    Registrado : 29/06/2012

    Re: [Resolvido]VBA com Pesquisa e Atribuição de Valor a Variavel tipo Data

    Mensagem  Noobezinho em Seg 14 Set 2015, 11:00

    Que bom que conseguiu o pretendido

    Agradeço o retorno.

    Boa sorte!


    .................................................................................
    Noobezinho

    * A solução funcionou?  [Você precisa estar registrado e conectado para ver esta imagem.] 
    Agradeça e feche o tópico clicando no botão Resolvido
    Se não sabe como, veja [Você precisa estar registrado e conectado para ver este link.].

    Como anexar imagem no teu post do fórum : [Você precisa estar registrado e conectado para ver este link.]

    * Criar arquivos.zip com o Winrar - veja [Você precisa estar registrado e conectado para ver este link.].

    Atualmente estou verificando se quem está pedindo ajuda, ajudamos e não retornou.
    Se a pessoa em questão não deu retorno, não tentarei ajudar novamente .

      Data/hora atual: Sex 09 Dez 2016, 09:37