Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Numeração automatica atraves dos dados do Access

Discussões sobre a integração do Excel com o Banco de Dados Access

Moderador: joseA

pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Numeração automatica atraves dos dados do Access

Mensagem por pedro_mexico »

Boa noite amigos,
estou a tentar adaptar o meu formulario vba excel para ter uma base de dados access, como estou no inicio(em pesquisas), o conhecimento é zero.
queria saber se existe algum codigo que faça uma numeraçao automatica como tenho no codigo vba, isto é, eu tenho um codigo de numeraçao automatica que vai buscar o valor á planilha que estava a gravar os dados, mas eu crier a base de dados e passei os dados para o access, e agora queria actualizar o codigo da numeraçao automatica.

a minha tabela access, tem uma primeira coluna onde tem a numeraçao automatica dele, eu ja consegui criar uma numeraçao automatica atraves dessa coluna1, mas eu queria numeraçao a partir da coluna 2 do access, que é onde esta a nummeraçao automatica que utilizava no excel, e quero esta pq tem uma formataçao, ele esta a criar numeraçao automatica,mas apresenta o ano antes( AAAA/ultimo numero da coluna A da planilha +1)(ex: 2021/10)

segue codigos que ja tenho para a base de dados access:

Código: Selecionar todos

Option Explicit
Global Banco As Database
Global consulta As Recordset
Dim id As Integer

Código: Selecionar todos

Sub Numeracao_Automatica_ACCESS()

 'Cria variável que armazena os comandos SQL
    Dim ComandoSQL As String

    'Armazena na variável o comando que fará a consulta SQL no BD Access
    ComandoSQL = "select * from Registo_DT1"

    'Chama a rotina que faz a conexão com o BD
    Call Conecta

    'Atribui a variável objeto de BD a execução dos comandos SQL
    Set consulta = Banco.OpenRecordset(ComandoSQL)

    While Not consulta.EOF
        id = consulta(0)
        consulta.MoveNext
     Wend

   Call DESCONECTA

  UserForm_Menu.Txt_codigo = id + 1
 
End Sub
por o que percebi da explicaçao do video, o codigo
While Not consulta.EOF
id = consulta(0)
consulta.MoveNext
Wend"


consulta(0) quer dizer que ele vai pesquisar na coluna 0 ate chegar ao ultimo registo e depois desconecta da base de dados e adiciona na textbox o valor ultimo valor +1,

ja tentei colocar outro codigo igual(adaptado) mas antes de id chamei ip e consulta passei a consultar, para nao criar conflito, mas dá erro.
ja tentei criar dentro desse codigo colocar

Código: Selecionar todos

Sub Numeracao_Automatica_ACCESS()

 'Cria variável que armazena os comandos SQL
    Dim ComandoSQL As String

    'Armazena na variável o comando que fará a consulta SQL no BD Access
    ComandoSQL = "select * from Registo_DT1"

    'Chama a rotina que faz a conexão com o BD
    Call Conecta

    'Atribui a variável objeto de BD a execução dos comandos SQL
    Set consulta = Banco.OpenRecordset(ComandoSQL)

    While Not consulta.EOF
        id = consulta(0)
        consulta.MoveNext
     Wend
     
     While Not consultar.EOF
        ip = consultar(0)
        consultar.MoveNext
     Wend

   Call DESCONECTA

  UserForm_Menu.Txt_codigo = id + 1
 UserForm_Menu.Txt_numeroautomatico = ip + 1
End Sub
acrescentei as variaveis ip e consultar, mas dá erro.
conseguem me ajudar?
estava a tentar diminuir o volume do ficheiro excel para correr mais rapido.

Obrigado


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Numeração automatica atraves dos dados do Access

Mensagem por Reinaldo »

Fiquei confuso com sua explanação
"..acrescentei as variáveis ip e consultar, mas dá erro.."
não foi criada a "requisição" Consultar, motivo do erro.
Não entendi a referencia:
"Numeração automática" e consulta ao banco de dados.
O que é esperado acontecer/retornar?


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Numeração automatica atraves dos dados do Access

Mensagem por pedro_mexico »

Boa noite Reinaldo,
A ideia é ter numeraçao automatica atraves de uma tabela do banco de dados access, mas nao a primeira.
Na primeira coluna esta a numeraçao automatica do access, mas na coluna 2 é onde esta o valor que queria tornar automatico, mas no excel vba tinha a formataçao para ele receber o ano + ultimo nº+1 (ex:2021/18), e era essa numeraçao automatica com essa formatação que queria saber se era possivel atraves do banco de dados


Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Numeração automatica atraves dos dados do Access

Mensagem por Reinaldo »

Sim é possível, provavelmente deforma similar a utilizada no excel


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


pedro_mexico
Consultor
Consultor
Mensagens: 285
Registrado em: Qua Dez 09, 2015 5:54 pm

Re: Numeração automatica atraves dos dados do Access

Mensagem por pedro_mexico »

Boa noite Reinaldo,

o codigo que tenho é este:

Código: Selecionar todos

Sub Numeracao_Automatica_Criar()
  Dim Y 'As Variant 'Long 'Integer
Folha3.Select
Folha3.Range("A2").Select 'mudar numero da celula para iniciar ano
Folha3.Range("A2") = Format(Date, "YYYY") & "/" & 1  'mudar data para iniciar novo ano
Range("A10101").End(xlUp).Offset(1, 0).Select
Y = Right(Range("A101010").End(xlUp).Offset(0, 0).Value, Len(Range("A101010").End(xlUp).Offset(0, 0).Value) - 5) 'Y = Range("A10101").End(xlUp).Offset(0, 0).Value
UserForm_Menu.TextBoxNDt1.Text = Format(Date, "YYYY") & "/" & Y + 1   '"2009/" & Y + 1
eu estou a dar os primeiros passos nesta adaptacao para o banco de dados, por isso ainda nao percebi bem as rotinas novas que tenho que dar aos codigos

qualquer ajuda +e bem-vinda
Obrigado


grsn
Acabou de chegar
Acabou de chegar
Mensagens: 9
Registrado em: Qua Mar 18, 2020 7:01 am

Re: Numeração automatica atraves dos dados do Access

Mensagem por grsn »

Olá, boa tarde!
Também não tenho muito conhecimento no assunto
Mas se buscar o valor maximo do campo da sua tabela, acrescentando + 1 não resolveria

Sub RetornaUltimo()

Dim SQL As String
Dim RetornaUltimo As Long
SQL = "SELECT Max(sua_tabela.seucampo) AS MáxDeseucampo "
SQL = SQL & "FROM sua_tabela "


ConectDB
rs.Open SQL, db, 3, 3
If rs.EOF = False Then
RetornaUltimo = CLng(rs!MáxDeseucampo)
End If
FechaDB
FRM.suatxtbox.Text = Year(Now) & "/" & RetornaUltimo + 1

End Sub


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder