Jump to content
Fórum Script Brasil
  • 0

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


Guest ronniangra
 Share

Question

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 to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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.

Edited by ronniangra
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.8k
    • Total Posts
      646.7k
×
×
  • Create New...