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

    Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Compartilhe

    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Como Inserir Campo em Recordset no VBA do Access

    Mensagem  MS Kid em Sex 21 Nov 2014, 14:46

    bom dia, pessoal!

    eu copiei o source de um subform para um recordset usando o RecordsetClone. ate ai tudo bem. o problema eh que nesse source falta uma unica coluna, que terah a mesma informacao repetida para todas as linhas, que eh o nome do departamento (ex. Tesouraria). estou tentando adicionar esse campo (ex. nome_depto) no recordset, mas, nao consigo.

    alem disso, preciso reordenar as colunas (campos) salvas nesse recordset, pois, a ordem que esta lah no subform nao serah a mesma no recordset.

    quem souber e puderm me ajudar, eu agradeco.

    obrigado.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  criquio em Sex 21 Nov 2014, 14:54

    Olá! Poste a cópia que fez para vermos como está.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  MS Kid em Sex 21 Nov 2014, 15:14

    olha soh Criquio como fiz. os outros codigos q estao como comentario, foram minhas tentativas invalidas.

    obrigado.

    Código:
       Dim campo As Field
        Dim novoCampo As Field
        
        novoCampo.Name = "nome_depto"
        novoCampo.Value = "Tesouraria"
        Debug.Print "NovoCampo: " & novoCampo.Name
        
        'Set resultadoBusca = Nothing
        'Set resultadoBusca = CurrentDb.OpenRecordset(SQL)
        resultadoBusca.MoveFirst
        'resultadoBusca.Fields.Append "nome_depto", , , , "Tesouraria"
        resultadoBusca.Fields.Append novoCampo
        resultadoBusca.Fields.Refresh
        'fields.Append Name, Type, DefinedSize, Attrib, FieldValue
        
        For Each campo In resultadoBusca.Fields
            Debug.Print campo.Name
        Next campo

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  criquio em Sex 21 Nov 2014, 15:37

    Mas é necessário mesmo incluir esse campo uma vez que o dado dele é o mesmo para todos? Não seria mais simples escrever "TESOURARIA" em um label? Ou tem outros departamentos que serão repetidos em blocos de linhas?

    De qualquer forma, você pode definir o RecordSource assim também:

    Código:
    Me.RecordSource = "SELECT * FROM NomeDaTabela" ' inclui todos os campos da tabela

    Para escolher apenas alguns campos:

    Código:
    Me.RecordSource = "SELECT nomeCampo1, nomeCampo2, nomeCampo3 FROM NomeDaTabela"

    Para mudar a ordem basta colocar ORDER BY NomeCampo DESC ou ASC no lugar de DESC


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  MS Kid em Sex 21 Nov 2014, 15:49

    Criquio, o source eh construido em uma funcao, que eh usada para outras telas, por isso, nao poderei mudar a estrutura do source. talvez eu tenha me expressado errado, mas, eu preciso mudar a sequencia dos campos no recordset, nao a ordem que se pode ser mudada com a clausula SQL ORDER BY. segue a sequencia desejada:

    1) sequencia no source: id_documento, mes, dia, ano, centro_custo
    2) sequencia no recordset: id_documento, nome_depto,  centro_custo, dia, mes, ano

    sendo que o campo nome_depto, que so existirah no recordset, pois nao existe no source, deverah ser incluido pelo .Append
    alem disso, esse campo terah a string "Tesouraria" em todas as linhas

    o recordset recebe o source da seguinte forma:
    Código:
    Set resultadoBusca = Forms![frmBuscaTesouraria]![frmSubBuscaTesouraria].Form.RecordsetClone

    valeu.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  criquio em Sex 21 Nov 2014, 16:57

    Olha, fica meio difícil opinar assim de fora, sem conhecer a estrutura do aplicativo, mas acredito que esse subformulário possa ser carregado do que jeito que mencionei, uma vez que só precisar desse recordsource para carregar esse subform, não?


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  MS Kid em Sex 21 Nov 2014, 17:01

    o subform nao eh o problema. o carregamento dele estah sendo feito por uma funcao que carrega tambem outras telas. o que eu preciso eh aproveitar o resultado que esse subform traz pra fazer uma planilha Excel, adicionando mais um campo e criando uma nova sequencia de colunas, diferentes da que estah no subform.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  criquio em Sex 21 Nov 2014, 17:08

    Qual é o sql de origem? Qual será a relação do subform com os dados exportados? Ainda acho que será mais fácil criar um novo RecordSet e fazer um Loop por ele, mesmo que precise ter uma relação direta com o source do subformulário.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  MS Kid em Dom 23 Nov 2014, 02:16

    boa noite a todos!

    eu to tentando adicionar um novo campo em uma querydef usando o metodo Fields.Append. primeiro, eu tentei da seguinte forma:

    Código:
    Dim myField as Field    
    myQueryDef.Fields.Append myField

    e ai, eu tentei novamente dessa forma:

    Código:
    myQueryDef.Fields.Append "my_field_name"

    nada funcionou. talvez, alguma coisa esteja faltando, talvez nao. se alguem souber como resolver isso, por favor, me ajude. ficarei grato por sua ajuda.

    eu tambem preciso adicionar esse novo campo em uma posicao especifica da querydef, na segunda posicao.

    muito obrigado.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  criquio em Dom 23 Nov 2014, 10:04

    Não seria mais simples escrever toda a query para adaptá-la à essa necessidade?


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3350
    Registrado : 04/04/2010

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  Avelino Sampaio em Dom 23 Nov 2014, 10:07

    Olá!

    Em uma consulta vc cria campos VIRTUAIS (Calculados). Este campo receberá que valor ? Observe no exemplo abaixo que o campo ValorTotal foi criado para retornar o cálculo.

    SELECT quatidade, valorUnitário, ([quantidade]*[valorUnitario) AS ValorTotal FROM tblEstoque;

    Confirme se quer criar o campo VIRTUAL na consulta ou um campo real direto na tabela, o que seria com o TableDefs e não queryDefs

    Aguardamos





    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

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

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  Alexandre Neves em Dom 23 Nov 2014, 10:26

    Bom dia,
    Onde cria a consulta, acrescente o campo que vai precisar


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    MS Kid
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 38
    Registrado : 22/01/2013

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  MS Kid em Dom 23 Nov 2014, 22:15

    ola, tudo bem?

    essa querydef esta sendo construida a partir de um source de uma subform. nessa subform eu tenho todos os campos que preciso, exceto um, que eh o campo nome_depto. esse campo se repetirah em todas as linhas, por se tratar de um mesmo departamento: "Tesouraria". eu nao posso tirar essa informacao, pois, o sistema cria tanto planilhas por departamento, quanto todos os departamentos em uma soh planilha. e ai teria que ter o departamento para realizar filtros no Excel.

    tudo que preciso eh:
    1 - copiar esse subform para uma querydef (isso eu jah faço) ou tabledef
    2 - criar o campo "nome_depto" na querydef (ou tabledef) logo apos o primeiro campo (Fields(0)) e salvar a informacao "Tesouraria" para todas as linhas
    3 - alterar a sequencia dos campos, pois, no subform a sequencia dos campos estah diferente da sequencia que deverah estar na planilha Excel. ex: mudar de id_docum, me, dia, ano, centro_custo para id_docum, centro_custo, dia, mes, ano e acrescentar o campo nome_depto apos o campo id_docum

    obrigado a todos.


    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  criquio em Dom 23 Nov 2014, 22:28

    Vi agora que você criou dois tópicos para a mesma dúvida. Isso polui o fórum e dificulta futuras pesquisas. Eu fundi os dois tópicos em um só.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3350
    Registrado : 04/04/2010

    Re: Como Adicionar um Novo Campo (Coluna) em uma QueryDef no Access VBA

    Mensagem  Avelino Sampaio em Seg 24 Nov 2014, 09:36

    Olá!

    Acompanhe o código e tente adaptar ao seu caso:


    Dim strSql As String
    'Passa a string SQL da propriedade RecordSource do subformulário para a variável strSql
    strSql = Me!NomeControleSubFormulario.Form.RecordSource
    'Acrescenta na string SQL o campo Nome_depto depois do id_documento
    strSql = Replace(strSql, "id_documento", "id_documento,'Tesouraria' AS Nome_depto")
    'Abre o recordset da string SQL modificada
    Set rs = CurrentDb.OpenRecordset(strSql)
    ...
    ...
    Set rs = Nothing


    Nota:  A origem do seu subformulário tem que estar com a string SQL (SELECT  id_documento, mes, dia, ano, centro_custo FROM Nometabela)

    Aguardamos



    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

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

      Data/hora atual: Sex 09 Dez 2016, 13:28