FARMáCIA POPULAR - ERRO AO ADICIONAR PRODUTOS

 Tópico anterior Próximo tópico Novo tópico

FARMáCIA POPULAR - ERRO AO ADICIONAR PRODUTOS

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#497027 - 23/05/2021 22:30:40

TIAGOXAVIERRS
VIAMAO
Cadast. em:Março/2011


Citação:
   Dim item As Integer = 0
    Dim loginfarma As String = '0000000'
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim SolDTO As Autorizador.SolicitacaoDTO = New Autorizador.SolicitacaoDTO()
        Dim UserDTO As Autorizador.UsuarioFarmaciaDTO = New Autorizador.UsuarioFarmaciaDTO()
        Dim med As Autorizador.MedicamentoDTO = New Autorizador.MedicamentoDTO()
        Dim conf As Autorizador.ConfirmacaoDTO = New Autorizador.ConfirmacaoDTO()


        Dim arr As Autorizador.MedicamentoDTO() = New Autorizador.MedicamentoDTO(lista.Items.Count - 1) {}

        Do While lista.Items.Count > 0

            med.coCodigoBarra = lista.Items(0).Text
            med.dsUnidApresentacao = '30'
            med.vlPrecoVenda = '0.14'
            med.qtPrescrita = '1'
            med.qtSolicitada = '1'

            arr.SetValue(med, item)
            lista.Items(0).Remove()

        Loop

        SolDTO.arrMedicamentoDTO = arr

        SolDTO.coSolicitacaoFarmacia = 1234
        SolDTO.nuCnpj = '00000000000'
        SolDTO.nuCpf = '000000000000'
        SolDTO.nuCrm = '7497'
        SolDTO.sgUfCrm = 'RS'
        SolDTO.dtEmissaoReceita = Date.Now

        'GERA DNA DA ESTAÇÃO
        'PPEGA O DNA DA ESTAÇÃO
        Dim retorno As String = String.Empty
        Dim args As String = String.Format('--solicitacao 0000000000 0000000000 000000 RS 23/05/2021')
        Dim program As String = Path.Combine(Environment.CurrentDirectory, 'gbasmsb.exe')
        Dim processo As Process = New Process()
        Dim infoProcess As ProcessStartInfo = New ProcessStartInfo(program, args)
        infoProcess.WindowStyle = ProcessWindowStyle.Hidden
        infoProcess.UseShellExecute = False
        infoProcess.RedirectStandardOutput = True
        processo = Process.Start(infoProcess)
        While processo IsNot Nothing AndAlso Not processo.HasExited
            Application.DoEvents()
        End While
        Dim stream As StreamReader = processo.StandardOutput
        retorno = stream.ReadLine()
        stream.Close()
        stream.Dispose()
        'FIM APLICA
        'FIM GERA DNA DA ESTACÃO

        SolDTO.dnaEstacao = retorno

        Dim aut As Autorizador.AutorizacaoDTO = New Autorizador.AutorizacaoDTO()
        UserDTO.usuarioFarmacia = loginfarma
        UserDTO.senhaFarmacia = loginfarma
        UserDTO.usuarioVendedor = '0000'
        UserDTO.senhaVendedor = '0000'
        Dim WS As Autorizador.ServicoSolicitacaoWSService = New Autorizador.ServicoSolicitacaoWSService()
        aut = WS.executarSolicitacao(SolDTO, UserDTO)

        MsgBox(aut.inAutorizacaoSolicitacao)
        MsgBox(aut.descMensagemErro)
        MsgBox(aut.coSolicitacaoFarmacia)
        MsgBox(aut.nuAutorizacao)
        MsgBox(aut.noPessoa)



Boa noite, Estou tentando adicionar medicamentos na lista arr mas obtenho um erro: java.lang.NullPointerException
parece que somente um medicamento vai para a lista dentro do array (arr).
se alguém tiver uma solução, pode ser em C#?
desde já agradeço a ajuda. obrigado.


VB6 - VB.net


Resposta escolhida #497031 - 24/05/2021 02:16:13

DS2T
BARRA MANSA
Cadast. em:Novembro/2010


Boa noite.


Citação:
parece que somente um medicamento vai para a lista dentro do array (arr).



Isso se deve a essa parte do código:

       Do While lista.Items.Count > 0

            med.coCodigoBarra = lista.Items(0).Text
            med.dsUnidApresentacao = '30'
            med.vlPrecoVenda = '0.14'
            med.qtPrescrita = '1'
            med.qtSolicitada = '1'

            arr.SetValue(med, item)
            lista.Items(0).Remove()

        Loop


Repare que nessa linha, você sempre tá sendo o valor de index para a variável item:

            arr.SetValue(med, item)


Só que a variável item sempre tem o index zero. Porque você não muda o valor dela.



Citação:
Estou tentando adicionar medicamentos na lista arr mas obtenho um erro: java.lang.NullPointerException


Você está fazendo uma requisição para um webservice que roda Java. Ele espera que alguns campos não seja null, mas você tá enviando null.
Vale a pena você olhar a documentação e ver todos os campos que são obrigatórios e ter certeza que estão preenchidos. Lembrando que esse erro não é gerado pela sua aplicação, mas sim, pelo webservice Java. O que você pode tentar fazer é ver os detalhes da exception ou do inner exception e ver se acha alguma informação detalhada que é enviada pelo webservice para ajudar na identificação do campo.





Não nasci pra programar, mas preciso me alimentar...


#497034 - 24/05/2021 16:17:29

TIAGOXAVIERRS
VIAMAO
Cadast. em:Março/2011


Última edição em 24/05/2021 17:05:16 por TIAGOXAVIERRS

Citação:
:
Boa noite.


Olá DS2T,
obrigado pelo retorno, realmente faltou um

  
item = item + 1



Citação:
  Você está fazendo uma requisição para um webservice que roda Java. Ele espera que alguns campos não seja null, mas você tá enviando null.
Vale a pena você olhar a documentação e ver todos os campos que são obrigatórios e ter certeza que estão preenchidos. Lembrando que esse erro não é gerado pela sua aplicação, mas sim, pelo webservice Java. O que você pode tentar fazer é ver os detalhes da exception ou do inner exception e ver se acha alguma informação detalhada que é enviada pelo webservice para ajudar na identificação do campo.


o problema agora mudou, se eu passo apenas um produto o sistema aceita, se eu passo 2 produtos ou mais, os demais produtos ficam em branco no ARR.


        Dim medicamentdtonum As Integer = 0
        Do While lista.Items.Count > 0
            Dim arr As homologa.MedicamentoDTO() = New homologa.MedicamentoDTO(medicamentdtonum) {}

            med.coCodigoBarra = lista.Items(0).Text
            med.dsUnidApresentacao = lista.Items(0).SubItems(1).Text
            med.qtSolicitada = lista.Items(0).SubItems(2).Text
            med.qtPrescrita = lista.Items(0).SubItems(3).Text
            med.vlPrecoVenda = lista.Items(0).SubItems(4).Text

            arr.SetValue(med, medicamentdtonum)
            lista.Items(0).Remove()
            SolDTO.arrMedicamentoDTO = arr
            medicamentdtonum = medicamentdtonum + 1
            MsgBox(arr.Count)
        Loop  


* mudei de item para medicamentdtonum (para teste)
é como se não guardasse no array os itens.

VB6 - VB.net


#497036 - 24/05/2021 18:31:13

TIAGOXAVIERRS
VIAMAO
Cadast. em:Março/2011


  
        Dim medicamentdtonum As Integer = 0

        Dim arr As homologa.MedicamentoDTO() = New homologa.MedicamentoDTO(lista.Items.Count - 1) {}
        Do While lista.Items.Count > 0
            Dim med As homologa.MedicamentoDTO = New homologa.MedicamentoDTO()

            med.coCodigoBarra = lista.Items(0).Text
            med.dsUnidApresentacao = lista.Items(0).SubItems(1).Text
            med.qtSolicitada = lista.Items(0).SubItems(2).Text
            med.qtPrescrita = lista.Items(0).SubItems(3).Text
            med.vlPrecoVenda = lista.Items(0).SubItems(4).Text

            arr.SetValue(med, medicamentdtonum)
            SolDTO.arrMedicamentoDTO = arr
            lista.Items(0).Remove()
            medicamentdtonum = medicamentdtonum + 1

        Loop


Consegui!
obrigado DS2T, foi de grande ajuda!.

VB6 - VB.net


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por TIAGOXAVIERRS em 25/05/2021 11:29:29