MaximoAccess

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

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 : 93
    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.
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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 : 93
    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".
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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 : 93
    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.
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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 : 93
    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
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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 : 93
    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.]
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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 : 93
    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
    avatar
    Noobezinho
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2807
    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: Ter 12 Dez 2017, 17:52