none
Chamada de um Outro Programa RRS feed

  • Pergunta

  • Boa noite pessoal.

    Estou em um programa emitindo uma Nota Fiscal. Quando eu digito o cnpj do cliente ele não existe. Como eu faço para chamar o programa de inclusão de Clientes, enviando o cnpj já digitado?

    Garibaldo

    quinta-feira, 19 de julho de 2018 02:02

Respostas

Todas as Respostas

  • Olá Garibaldo, tudo bem!

    Supondo que o aplicativo que você quer chamar é um Windows Forms, no projeto dele você tem a classe Program.cs.

    Esta é a classe que inicia seu aplicativo, e nela você tem o método Main que é o primeiro método executado dele. Este método recebe um vetor de strings nomeado por padrão como args[].

    Ao chamar este aplicativo por prompt de comando (CMD), por exemplo, você consegue passar argumentos (parâmetros) após o nome do executável e neste método que comentei acima, você consegue capturar estes parâmetros.

    Digamos que seu aplicativo se chame "Teste.exe" (apenas para exemplificar), e que então você queira chamar ele passando por parâmetro um CNPJ, como comentou na sua questão. Então, sua linha de chamada no prompt ficaria assim:

    Teste.exe "000.000/00001-00"

    Cada parâmetro passado, deve ser separado por um espaço em branco.

    Outro ponto importante é que se o parâmetro possui um espaço em seu valor, como um nome composto, por exemplo "Fabio Rosa", então você deve passar todo o valor do parâmetro entre aspas duplas, como fiz acima com o número do CNPJ. Caso não tenha espaços, as aspas duplas não são necessárias.

    Sabendo disso, para chamar o aplicativo você pode criar um .bat com o comando ou então chamar pelo Process.Start() (se a aplicação de origem também for .NET e você possuir acesso ao código).

    No método Main da sua aplicação de destino bastaria pegar o primeiro parâmetro:

    var CNPJ = args[0];

    Espero ter ajudado!

    Att,


    Fabio Rosa.

    quinta-feira, 19 de julho de 2018 02:30
  • Bom dia Fábio, eu montei essa rotina para chamar um outro programa. Está dando erro.
                   ClientesBLL obj = new ClientesBLL();
                   dgvConsulta10.DataSource = obj.PesquisaNumeroFilialCpfCnpjCliente(nFilialGlobal, maskCnpjExpedidor.Text, nControle);
                   if (dgvConsulta10.RowCount < 2)
                   {
                       DialogResult result = (MessageBox.Show("Não Existe Registros na Tabela de Clientes Expedidor Com o Cnpj ou Cpf  Digitado!, Deseja Cadastrá-lo?", "Decisão Para Cadastro de Cliente EXPEDIDOR", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question,
                                                MessageBoxDefaultButton.Button3, MessageBoxOptions.RightAlign));
                       if (result == DialogResult.Yes) 
                       {
                           frmClientes objClientes = new frmClientes();
                           objClientes.MdiParent = this;
                           objClientes.Show();
                       }
    
                       
                       Limpa_DadosExpedidor();
                       maskCnpjExpedidor.Focus();
                   }
    

    quinta-feira, 19 de julho de 2018 09:34
  • Bom dia Garibaldo,

    Bom, este código é bem diferente do que eu havia entendido de sua questão...hehe...

    Certo. Primeiro, se possível quero que você informe em que linha de código ocorre o erro... e qual a mensagem de erro apresentada.

    Uma coisa que pude perceber de início é que mesmo chamando a tela objClientes, o seu código não para ali para aguardar o usuário incluir o cliente. Isto devido a você estar utilizando o método Show() para exibira nova tela (necessário por trabalhar com MDI), portanto, seu método 'Limpa_DadosExpedidor()' e o foco no controle 'maskCnpjExpedidor' será executado imediatamente após abrir a tela para cadastrar novo cliente.... Suspeito que possa estar aí o problema... Para verificar, experimente comentar estas linhas e executar para ver o que acontece.

    Se o problema for realmente aí, você terá que vincular o evento Close do seu form para que o aplicativo saiba quando você fechou a janela para então executar estas linhas de código.

    Att,


    Fabio Rosa.

    quinta-feira, 19 de julho de 2018 11:25
  • Este link poderá te ajudar.

    https://www.ecode10.com/artigo/431/Chamando-Programas-de-Dentro-do-Windows-Forms


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    quinta-feira, 19 de julho de 2018 12:12
  • Este link poderá te ajudar.

    https://www.ecode10.com/artigo/431/Chamando-Programas-de-Dentro-do-Windows-Forms


    Espero ter ajudado. Se ajudei, favor marcar no fórum falando que foi útil.

    Mauricio Junior - Comunidade www.ecode10.com

    quinta-feira, 19 de julho de 2018 12:12