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]Documentar uma consulta

    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Documentar uma consulta Empty Documentar uma consulta

    Mensagem  Paulo Robilotta 14/8/2013, 02:08

    Parte de um projeto meu envolve documentar consultas de modo que posteriormente eu possa alterar a SQL original com outros propósitos.

    Para servir de exemplo: Supondo um campo numa consulta seleção com uma lista de nomes e que tem como critério : "Pedro"

    A questão : Existe alguma maneira de capturar essa informação "Pedro" do critério via alguma propriedade (que não a instrução SQL) da QueryDef ?

    Analisando a SQL é possível, mas o que eu quero é evitar esse trabalho.

    O que eu também sei: quando o critério tem colchetes (por. ex. um campo de um formulário) acho que o Access entende como um parâmetro declarado explicitamente e eu consigo recuperar a informação.

    Paulo
    Silvanio123
    Silvanio123
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 98
    Registrado : 24/08/2011

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  Silvanio123 14/8/2013, 04:22

    Boa noite Paulo,

    se o "Option Explicit" estiver no Módulo ele obriga a declaração das váriaveis no módulo, e não dos critérios em SQL.

    Se quer só trocar de Critério quando quiser, poderia colocar uma váriável p/ pegar/trocar o critério e usa-lo em um campo txt ficaria assim:

    Dim strCriterio As String 'variável p/ o criterio
    strCriterio = Me.seucampotxt.text 'exemplo p/ um campo texto o que vc digitar nele vira critério

    acrecentar na consulta via código
    WHERE Campo Like '" & strCriterio & "%'

    Se tiver usando access anterior ao 2007 use "*" no lugar do "%"

    Vlw
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  Paulo Robilotta 14/8/2013, 15:59

    Silvanio

    Obrigado pela resposta mas o que esutou querendo não é substituir um critério por outro.

    O que eu quero é descobrir o que está escrito no critério da consulta.

    Para tentar deixar mais claro, se eu usar o código abaixo :

    =============================
    Dim qdf As DAO.QueryDef
       Dim prp As DAO.Property

       Set qdf = CurrentDb.QueryDefs("NomeDaConsulta")

    'Pega as propriedades da consulta
       For Each prp In qdf.Properties
           
            Debug.Print "Prop. consulta  : " & prp.Name

       Next prp

       Dim carCampo As Field
    'Pega as propriedades dos campos das consulta
       For Each carCampo In qdf.Fields
       
           Debug.Print "Name  : " & carCampo.Name
           Debug.Print "SourceTable  : " & carCampo.SourceTable
           Debug.Print "SourceField  : " & carCampo.SourceField
          ...      
         
       Next carCampo

       Dim prm As DAO.Parameter

    'Pega os parâmetros
       For Each prm In qdf.Parameters

           Debug.Print "Par Name  : " & prm.Name

       Next prm

    ==============================

    eu consigo descobrir as propriedades da consulta e dos seus campos.

    Eu esperava que a parte "Pega os parâmetros" indicasse o que estava escrito no critério da consulta. Ou seja, pegasse o "Pedro". Mas isso não acontece.

    O que aparentemente acontece quando o critério é um campo de um formulário, é que como a sintaxe usa colchetes (ex: [Forms]![xxx]![NomeDoCampo]) o Access "entende" o que está entre os colchetes como parâmetro e aí fornece a informação sobre o que está escrito no critério.

    Assim, retomando a questão, a pergunta é existe alguma propriedade  que forneça a informação "Pedro" ?
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  JPaulo 14/8/2013, 17:56

    Ola Paulo, veja se o atende,

    Numa consulta nova, aberta em modo SQL, cole e teste;


    SELECT MsysQueries.[Expression], MSysNavPaneObjectIDs.Name
    FROM MsysQueries INNER JOIN MSysNavPaneObjectIDs ON MsysQueries.ObjectId = MSysNavPaneObjectIDs.Id
    GROUP BY MsysQueries.[Expression], MSysNavPaneObjectIDs.Name
    HAVING (((MsysQueries.[Expression]) Like "*" & "(((" & "*"));


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Documentar uma consulta Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Documentar uma consulta Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Documentar uma consulta Folder_announce_new Instruções SQL como utilizar...
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  Paulo Robilotta 15/8/2013, 06:51

    JPaulo

    Ao testar , recebi uma mensagem dizendo que a tabela  "MSysNavPaneObjectIDs" não foi encontrada .

    Habilitei as opções Mostrar objetos ocultos e objetos do sistema e realmente essa tabela  não existe (nas versões 2000 e 2007).

    Será que essa tabela não é uma consulta criada por você ?

    Retirei a referência a essa tabela na SQL que você mandou e adicionei a tabela "MSysObjects" criei uma associação "MSysQueries : ObjectId" <-> "MSysObjects:Id" e eliminei os "MSysObjects" começados com "~" usando "Meio([MsysObjects].[Name];1;1) <> "~".

    Resultou na seguinte SQL :

    SELECT MsysQueries.Attribute, MsysQueries.Expression, MsysQueries.ObjectId, MSysObjects.Name
    FROM MsysQueries INNER JOIN MSysObjects ON MsysQueries.ObjectId = MSysObjects.Id
    WHERE (((MsysQueries.Expression) Like "*" & "(((" & "*") AND ((Mid([MsysObjects].[Name],1,1))<>"~"));


    que mostra as expressões e os nomes das respectivas consultas e que já é um progresso importante no meu projeto.

    São mostradas as expressões que são usadas como Critério mas também as inseridas como campo.

    Dei uma olhada na tabela MSysQueries para tentar entender de onde os dados estavam sendo selecionados e deu para perceber que parece haver uma relação entre o campo "Attribute" e a estrutura da consulta :

    Attribute
    6 = Nome do campo ou a expressão colocada nele
    7 = O relacionamento entre as tabelas
    8 = A expressão colocada como critério ou uma "mistura" da expressão colocada num campo e as expressões colocadas como critério.

    Me interessa muito saber esse modo de obter informações sobre os elementos dos objetos "indo diretamente na fonte".

    Vou pesquisar sobre o assunto (as tabelas MSys ... e as informações que elas contém) mas se você tiver alguma referência que possa evitar o caminho das pedras, eu agradeço.

    Obrigado pela ajuda.

    Paulo
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  Paulo Robilotta 15/8/2013, 07:35

    JPaulo

    Para ir adiantando o assunto, na página "Microsoft Access Code Snippets and Other Useful Bits"

    http://www.databasejournal.com/features/msaccess/article.php/3910461/Microsoft-Access-Code-Snippets-and-Other-Useful-Bits.htm

    há um arquivo para download onde encontrei a tabela "MSysNavPaneObjectIDs".

    No meu BD criei uma consulta com esse nome (com os dados de MSysObjects) e apliquei a SQL que você mandou.

    O resultado foi semelhante à SQL que eu criei (na sua aparecem as consultas que começam com "~").

    Abraço

    Paulo
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  JPaulo 16/8/2013, 10:17

    Ola, essa tabela existe sim no Ms Access 2007, onde fiz o teste.

    Ela não foi criada por mim não.

    Nessa tabela os criterios nos campos das consultas, aparecem sempre entre 3 (((, por isso eu fazer o Like "*" & "(((" & "*")

    Penso que sim, que já é um progresso positivo para você chegar ao que pretende.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Documentar uma consulta Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Documentar uma consulta Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Documentar uma consulta Folder_announce_new Instruções SQL como utilizar...
    Paulo Robilotta
    Paulo Robilotta
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 43
    Registrado : 24/09/2010

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  Paulo Robilotta 16/8/2013, 13:01

    JPaulo

    Por mim, a questão está resolvida.

    Obrigado e um abraço

    Paulo
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  JPaulo 16/8/2013, 13:05

    Obrigado pelo retorno o forum agradece.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Documentar uma consulta Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Documentar uma consulta Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Documentar uma consulta Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Documentar uma consulta Empty Re: [Resolvido]Documentar uma consulta

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 05:03