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

Comando


jooey

Pergunta

Boa tarde...

Sou iniciante no VB, na minha empresa estou fazendo uma rotina de migração de um banco de dados em access para o da minha empresa que é tambem em access

No cadastro dos produtos do banco do cliente, a descrição do produto e o codigo estão no mesmo campo da tabela , separados por "/", preciso separar os dados para a descrição e o codigo do produto.

vlw desde agora

Boa tarde

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

ok,essa rotina funcionou, vlw

mas eu continuo com um problema

=/

em alguns cadastros tem essa divisão..

em otros não..

existe algum if que eu possa por pra fazer a rotina só quando tiver a barra?

vlw desde já

boa tarde

Link para o comentário
Compartilhar em outros sites

  • 0

Salve!

Claro, posso sim. Segue um modelo:

Dim x() as String

If InStr(rs!Campo, "/") = 0 Then
     MsgBox "O Conteúdo do Campo é " & rs!Campo
Else
     x = Split(rs!Campo, "/")

     For i = LBound(x) To UBound(x)
           Msgbox "Valor " & v(i)
     Next
End If

Usei o LBound para acessar o primeiro índice do vetor (no caso, zero) e o UBound para acessar o maior índice. Pode acontecer de você tentar ler um determinado arquivo ou uma string com muitos delimitadores (/ no seu caso) e não saberá quantas posições terá seu vetor ou terá que saber exatamente quantos delimitadores existem.

Enfim, usando o LBound() e UBound() você acessa do primeiro ao último índice do seu vetor, independente de seu tamanho.

Espero que tenha ajudado. Qualquer coisa é só falar.

Abraços,

William Rodrigues

Link para o comentário
Compartilhar em outros sites

  • 0

Eae Wiiliam,

meu...minha duvida é o seguinte...

antes da / esta a descrição da peça... e depois esta o codigo...

eu preciso searar estes dados para joga-los em tabelas diferentes...

como ficaria..eu tenho uma ideia do codigo mais num está dando certo..

Como eu faço pra dividir este dados e joga-los no campo referente somente os dados que eu quero?

falou....teh+

Link para o comentário
Compartilhar em outros sites

  • 0

Eae Wiiliam,

meu...minha duvida é o seguinte...

antes da / esta a descrição da peça... e depois esta o codigo...

eu preciso searar estes dados para joga-los em tabelas diferentes...

como ficaria..eu tenho uma ideia do codigo mais num está dando certo..

Como eu faço pra dividir este dados e joga-los no campo referente somente os dados que eu queto?

falou....teh+

o que eu disse aqui:

tenta:

Dim x() as String

If InStr(rs!Campo, "/") = 0 Then
     MsgBox "O Conteúdo do Campo é " & rs!Campo
Else
     x = Split(rs!Campo, "/")

     MsgBox "Código: " & x(0)
     MsgBox "Descrição: " & x(1)
End If[/code]

não resolve??

Enfim, usando o LBound() e UBound() você acessa do primeiro ao último índice do seu vetor, independente de seu tamanho.

hã... o primero indice vai ser sempre 0 não?? tipo, essa funcao lbound seria meio inutil, não??

Link para o comentário
Compartilhar em outros sites

  • 0

Kuroi, tentei fazer o codigo que você me passou e deu erro..

vê se está certo o jeito que eu to fazendo:

Dim x As String
Do While Not Itens_do_orcamento_de_fab.EOF
   If InStr(Itens_do_orcamento_de_fab!Descrição1, "/") = 0 Then
      MsgBox "O conteudo do campo é" & Itens_do_orcamento_de_fab!Descrição1
   Else
      x = Split(Itens_do_orcamento_de_fab!Descrição1, "/")

      MsgBox "Descrição" & x(0)
      MsgBox "Codigo" & x(1)
   End If

o erro que da é no "MsgBox "Descrição" & x(0)" pra ser mais exato no x

Compile error:

Expected array

Clicando no ajudae ele fala:

The MSDN collection does not exist.Please reinstall MSDN.

:blink:

disculpa fik enchendo o saco.

é que eu preciso disso urgente e so iniciante no VB

vlw...ateh+

Link para o comentário
Compartilhar em outros sites

  • 0

ok, ficou assim agora

Dim x() As String
Do While Not Itens_do_orcamento_de_fab.EOF
   If InStr(Itens_do_orcamento_de_fab!Descrição1, "/") = 0 Then
      MsgBox "O conteudo do campo é" & Itens_do_orcamento_de_fab!Descrição1
   Else
      x = split(Itens_do_orcamento_de_fab!Descrição1, "/")

      MsgBox "Descrição" & x(0)
      MsgBox "Codigo" & x(1)
   End If

agora compile normal.

mas na hora de roda da o erro

run timr error '94:

Invalid use of Null

:(

Link para o comentário
Compartilhar em outros sites

  • 0

vlw.

era isso mesmo..

o primeiro registr tava vazio..

agora pra mim joga nos campos seria mais ou menos assim?

Dim x() As String
Do While Not Itens_do_orcamento_de_fab.EOF
   If InStr(Itens_do_orcamento_de_fab!Descrição1, "/") = 0 Then
      MsgBox "O conteudo do campo é" & Itens_do_orcamento_de_fab!Descrição1
   Else
      x = split(Itens_do_orcamento_de_fab!Descrição1, "/")

      Pecas.Addnew
      Pecas![Codigo peca] = x(1)
      Pecas![Descrição peça] = x(0)
      Pecas.Update
   End If

certo?

Link para o comentário
Compartilhar em outros sites

  • 0

Bom William..

eu usei o exemplo do kuroi...

na verdade porque quando eu usava o seu modelo

Dim x() As String
Do While Not Itens_do_orcamento_de_fab.EOF
   If InStr(Itens_do_orcamento_de_fab!Descrição1, "/") = 0 Then

      GoTo Leroutro

   Else
      x = Split(Itens_do_orcamento_de_fab!Descrição1, "/")

      For i = LBound(x) To UBound(x)
            MsgBox "Codgio" & v(i)

   End If

dava erro

Compile error:

Variable not defined

no For i...pra ser mais exato no "i"

bom d qualquer maneira já resolvi o problema

falou pela força d tdo mundo

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Somente uma observação... nem sempre o primeiro indice de uma Matriz é 0.

Há maneiras de você informar ao VB (pelo que sei na versão .net isso não é mais possível), por exemplo, que inicie todas as matrizes pelo elemento 1.

A função LBound() é muito útil por isso.

Abs,

Link para o comentário
Compartilhar em outros sites

  • 0

Somente uma observação... nem sempre o primeiro indice de uma Matriz é 0.

Há maneiras de você informar ao VB (pelo que sei na versão .net isso não é mais possível), por exemplo, que inicie todas as matrizes pelo elemento 1.

A função LBound() é muito útil por isso.

Abs,

sim... como o william disse aqui: http://scriptbrasil.com.br/forum/index.php...st&p=375838

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...