none
Acrescentar ZERO a esquerda com ToString RRS feed

  • Pergunta

  • Olá,

    Preciso de um suporte ao sistema em VB.NET que estou utilizado, que ele pega os dados de um Excel , faz a leitura e depois cria um e-mail em HTML para enviar para os destinatários.

    Porem, em umas das colunas do Excel onde ele colhe os dados é composto por números com 4 dígitos e é por esses números que o sistema pega para enviar e-mail.

    Só que um algumas colunas tem ZERO na esquerda e o Excel acaba tirando e fica com 3 números e alguns com 2 números com isso não irá enviar o e-mail, pois preciso dos 4 números

    Se eu coloco o Excel no modo texto e acrescento os ZERO's ele aparece valor NULL no sistema, ou seja preciso criar um IF / ELSE para ele acrescentar ZERO quando não houver, Mais já fiz varias tentativas e pesquisas e não consigo.

    Caso tenham alguma sugestão eu agradeceria muito.

    segunda-feira, 31 de agosto de 2015 15:11

Respostas

  • Bom dia, sim, podes ver mais info aqui:

    https://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#DFormatString

    • Marcado como Resposta Marcos SJ terça-feira, 1 de setembro de 2015 12:46
    terça-feira, 1 de setembro de 2015 09:21

Todas as Respostas

  • Penso que consegues fazer algo assim:

    Dim numero as integer
    Dim valor As String = numero.ToString("D4")


    segunda-feira, 31 de agosto de 2015 16:27
  • Amigo,

    Utilize o método PADLEFT, exemplo:

    String.PadLeft(4,'0')
    Espero ter ajudado...boa sorte!



    Não esqueça de marcar como útil uma resposta que te ajude.
    "A diversão é a alma do negócio"

    segunda-feira, 31 de agosto de 2015 16:41
  • Esse D4 seria a coluna do Excel ou estaria forçando a acrescentar o ZERO ?
    segunda-feira, 31 de agosto de 2015 17:05
  • Já respondido

    https://social.msdn.microsoft.com/Forums/pt-BR/d10cfd94-424e-40cf-8df9-3ec33a5c15af/quero-que-meu-textbox-aceite-somente-20-nmeros-e-se-falta-completar-com-0


    ROBERTOSLJUNIOR

    segunda-feira, 31 de agosto de 2015 17:19
  • Coloquei este IF e vou testar agora , mais não sei se vai funcionar!!

    Dim numero As String

    For i As Integer = 0 To dt.Rows.Count - 2

    numero = dt.Rows.Item(i).Item(2).ToString

    If numero Then
                        dt.Rows.Item(i).Item(2).ToString()
                    Else
                        numero = dt.Rows.Item(i).Item(2).ToString.PadLeft(4, "0")
                    End If


    • Editado Guilherme_SM segunda-feira, 31 de agosto de 2015 17:26
    segunda-feira, 31 de agosto de 2015 17:26
  • Nem precisas desse If, basta fazeres:

    numero = dt.Rows.Item(i).Item(2).ToString("D4")

    segunda-feira, 31 de agosto de 2015 19:23
  • Só para eu entender , esse "D4" força o código entender que sempre será 4 Dígitos e se faltar ele acrescenta ZERO ??
    segunda-feira, 31 de agosto de 2015 20:08
  • Bom dia, sim, podes ver mais info aqui:

    https://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#DFormatString

    • Marcado como Resposta Marcos SJ terça-feira, 1 de setembro de 2015 12:46
    terça-feira, 1 de setembro de 2015 09:21
  • Bom dia, 

    Vocês me ajudaram bastante com as informações , mais não esta funcionando ele não acrescenta o ZERO a esquerda para que o e-mail seja enviado.

    Caso tenham mais alguma informação eu agradeço.

    Usei o:

    String.PadLeft(4,'0')

    numero = dt.Rows.Item(i).Item(2).ToString("D4")

    Porem assim que a mensagem esta enviando a barra de progresso para no meio conforme a imagem abaixo e só é enviado as 2 primeiras pois tem os 4 números a ultima não envia.

    quarta-feira, 2 de setembro de 2015 15:07
  • Mete o codigo todo do que estas a fazer e do que queres fazer que não percebi

    obrigado

    quarta-feira, 2 de setembro de 2015 22:13
  • Prezado,

    Tente esta função, para mim dá certo

     Public Function FormataZerosEsq(ByVal Valor As String, ByVal nZeros As String)
            FormataZerosEsq = Valor.PadLeft(nZeros, "0")
    End Function

    Exemplo: 

    Dim NewVal as String

    NewVal = FormataZerosEsq(NewVal,6)

    Resultado -> 000001

    Vê se é isto que você quer.

    Elmo


    Elmo

    quinta-feira, 3 de setembro de 2015 12:03
  • Perfeito cara, fiz aqui seguindo o teu exemplo, e adaptei da forma abaixo e funcionou direitinho:

    DataSet.Tables(0).Rows(x).Item("CAMPO").ToString.PadLeft(4, "0")

    Ele pega o numero que está no CAMPO ex: 25 e transforma em 0025

    perfeito, muito obrigado pela resposta"


    Diacov Informatica

    sexta-feira, 15 de março de 2019 17:37