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

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

    Compartilhe
    avatar
    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 - 9: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.
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  criquio em Sex 21 Nov - 9: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.

    avatar
    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 - 10: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
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  criquio em Sex 21 Nov - 10: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.

    avatar
    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 - 10: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.
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  criquio em Sex 21 Nov - 11: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.

    avatar
    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 - 12: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.
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  criquio em Sex 21 Nov - 12: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.

    avatar
    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 Sab 22 Nov - 21: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.
    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  criquio em Dom 23 Nov - 5: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.

    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Dom 23 Nov - 5: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



    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  Alexandre Neves em Dom 23 Nov - 5: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
    avatar
    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 - 17: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.

    avatar
    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  criquio em Dom 23 Nov - 17: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.

    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em Seg 24 Nov - 4: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


      Data/hora atual: Ter 26 Set - 10:32