Ir para conteúdo
Fórum Script Brasil
  • 0

Vba Como Atribuir O Valor De Um Registro No Access A Um Array?


Guest ronniangra

Pergunta

Guest ronniangra

Galera,

Boa tarde.

Tenho uma coluna de uma tabela no access que em cada linha possui um texto com letras e números, por exemplo 1BL34FR e eu tenho que separar as letras dos números por hífen.

Pensei em fazer um for para percorrer todo o conteúdo e dentro do mesmo fazer um if perguntando se é número, enquanto for incrementa, se não for, coloca o hífen e vai para outro if que pergunta se é letra e faz a mesmo procedimento do primeiro if só que para letra.

A minha dúvida é a seguinte:

- Como é que eu faço para percorrer os dados de uma célula de uma tabela do access, caracter por caracter??????

Um abraço a todos.

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0
Guest ronniangra

Valeu kuroi, entedi seu código, mas como faço para colocar o nome da célula de uma tabela do access no lugar da String, como está no seu exemplo.

Dim y as String, x as Integer

y = "como coloco a célula aki???"

For x = 1 To Len(y)

MsgBox Mid(y, x, 1)

Next

Obrigado!!!

Link para o comentário
Compartilhar em outros sites

  • 0

é cara, é foda... tipo não tenho experiencia com vba, nunca trabalhei com isso e ai acabo não conseguindo ajudar a mulecada aqui no forum. sempre tento ajudar a parte de codigo, já q é identico ao visual basic, mas a parte do vba mesmo eu não manjo, por isso não sei te responder essa duvida, mas é so ter um poco de paciencia q logo logo alguém posta a solucao aqui, q no forum tem bastante gente q manja.

Link para o comentário
Compartilhar em outros sites

  • 0

Células são no Excel... no Access lidamos com registros e campos. Veja um exemplo de como percorrer todos os registros de uma tabela e de como fazer a separação:

Dim tabela1 As Recordset

'Obtendo todos os registros da tabela "Tabela1"
Set tabela1 = CurrentDb.OpenRecordset("SELECT * FROM Tabela1")

'Percorrendo a tabela
Do While Not tabela1.EOF
    Debug.Print tabela1.Fields("campo").Value
    valor = tabela1.Fields("campo").Value

    caracter = ""
    nvalor = ""
    
    For i = 1 To Len(valor)
        últchr = caracter
        caracter = Mid(valor, i, 1)
        If últchr <> "" And ((IsNumeric(últchr) And Not IsNumeric(caracter)) Or (IsNumeric(caracter) And Not IsNumeric(últchr))) Then
            nvalor = nvalor & "-" & caracter
        Else
            nvalor = nvalor & caracter
        End If
    Next
    
    Debug.Print nvalor
    
    tabela1.MoveNext
Loop

Os dados serão mostrados na janela Imediata.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Células são no Excel... no Access lidamos com registros e campos. Veja um exemplo de como percorrer todos os registros de uma tabela e de como fazer a separação:

Dim tabela1 As Recordset

'Obtendo todos os registros da tabela "Tabela1"
Set tabela1 = CurrentDb.OpenRecordset("SELECT * FROM Tabela1")

'Percorrendo a tabela
Do While Not tabela1.EOF
    Debug.Print tabela1.Fields("campo").Value
    valor = tabela1.Fields("campo").Value

    caracter = ""
    nvalor = ""
    
    For i = 1 To Len(valor)
        últchr = caracter
        caracter = Mid(valor, i, 1)
        If últchr <> "" And ((IsNumeric(últchr) And Not IsNumeric(caracter)) Or (IsNumeric(caracter) And Not IsNumeric(últchr))) Then
            nvalor = nvalor & "-" & caracter
        Else
            nvalor = nvalor & caracter
        End If
    Next
    
    Debug.Print nvalor
    
    tabela1.MoveNext
Loop

Os dados serão mostrados na janela Imediata.

Abraços,

Graymalkin

Kuroi valeu pela atenção cara e Graymalkin vou testar sim e valeu mesmo cara, esclareceu bastante

Grande abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Graymalkin

Eu fiz isso, atribui a um botão e mesmo assim ele me pede uma macro.

O nome do meu bando é db1 e a tabela é qpocos a coluna é pocos.

Dá uma olhada no meu código por favor.

Option Compare Database

Private Sub Command0_Click()

'Option Compare Database

Dim qpocos As Recordset

'Obtendo todos os registros da tabela "Tabela1"

Set qpocos = CurrentDb.OpenRecordset("SELECT * FROM qpocos")

'Percorrendo a tabela

Do While Not qpocos.EOF

Debug.Print qpocos.Fields("pocos").Value

valor = qpocos.Fields("pocos").Value

caracter = ""

nvalor = ""

For i = 1 To Len(valor)

ultchr = caracter

caracter = Mid(valor, i, 1)

If ultchr <> "" And ((IsNumeric(ultchr) And Not IsNumeric(caracter)) Or (IsNumeric(caracter) And Not IsNumeric(ultchr))) Then

nvalor = nvalor & "-" & caracter

Else

nvalor = nvalor & caracter

End If

Next

Debug.Print nvalor

qpocos.MoveNext

Loop

End Sub

Obrigado irmão.

Link para o comentário
Compartilhar em outros sites

  • 0

Na verdade não é pra ser em um botão quero rodar o módulo e as alterações funcionarem.

Então vamos lá, eu preciso pegar esse código e colocar dentro de um módulo certo?

Depois do código colado, basta executar o módulo a partir do botão F5 certo?

aí aparece uma janela me pedindo para eu inserir uma macro, essa janela não era para aparecer?

Se você me der algum e-mail eu mando a tela do pedido da macro pra você ver.

Desculpe estar te enchendo o saco mas eu to precisando muito que isso funcione, se você tiver algum livro ou apostila para me indicar eu paro de te perturbar

Um grande abraço e mais uma vez obrigado.

Editado por ronniangra
Link para o comentário
Compartilhar em outros sites

  • 0
Então vamos lá, eu preciso pegar esse código e colocar dentro de um módulo certo?

Exato.

Depois do código colado, basta executar o módulo a partir do botão F5 certo?

aí aparece uma janela me pedindo para eu inserir uma macro, essa janela não era para aparecer?

Posicione o cursor de texto *dentro* da sua rotina (entre o Sub XXXX e o End Sub) e depois tecle F5 para executar *ela*. Realmente, se você não estiver com o cursor nela, vai aparecer a janela te pedindo para escolhar qual você quer executar.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Visitante

Fala Graymalkin

Cara, o módulo está sem erro, apertei F5 e ele não reclamou de nada, porém nada aconteceu a tabela, tenho que fazer alguma coisa para q isso funcione?

Grande abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
Cara, o módulo está sem erro, apertei F5 e ele não reclamou de nada, porém nada aconteceu a tabela, tenho que fazer alguma coisa para q isso funcione?

Você usou exatamente o código que eu te passei acima? Porque se foi, realmente *não* vai acontecer nada na tabela porque no código não existe nenhuma parte com tal intento. O código acima só mostra o resultado na janela imediata (o que é feito pela instrução Debug.Print).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...