Mostrando postagens com marcador C#. Mostrar todas as postagens
Mostrando postagens com marcador C#. Mostrar todas as postagens

quarta-feira, 25 de janeiro de 2017

Erro: iCCP: Not recognizing known sRGB profile that has been edited - Xamain

Boa tarde!
Para tratar o erro: iCCP: Not recognizing known sRGB profile that has been edited, que ocorre normalmente quando uma imagem está com problemas em sua estrutura faça o seguinte:

1- baixar o pacote 
  • PNGoo — Windows GUI for batch conversion no site: https://pngquant.org/
2 - Descompactar abrir o programa, selecionar a imagem (add Files) em sua pasta de origem, no PNGoo, marcar o primeiro Output, clicar em GO!

3 - Recompilar, e problema resolvido.

att.

sexta-feira, 20 de janeiro de 2017

Erro Maquinas Virtuais: Could not launch 'VS Emulator 5" KitKat (4.4) XXHDPI Phone' device. Exit code 10

Bom dia!

Tive o Seguinte erro ao executar uma maquina virtual para teste de programa criado no Visual Studio 2015, e entre varias buscas no meu caso, Ocorreu que uma maquina outrora aberta não havia sido desligada corretamente.

Ao abrir o  Hyper-V, constatei esta situação e encerrei manualmente, retornando os funcionamentos e dando possibilidade aos testes.

Espero ter ajudado.


quinta-feira, 6 de dezembro de 2012

Teste Data Time C#


         
Testar formato de datas
 
            DateTime now = DateTime.Now;
            MessageBox.Show(now.ToString("d"));
            MessageBox.Show(now.ToString("D"));
            MessageBox.Show(now.ToString("f"));
            MessageBox.Show(now.ToString("F"));
            MessageBox.Show(now.ToString("g"));
            MessageBox.Show(now.ToString("G"));
            MessageBox.Show(now.ToString("m"));
            MessageBox.Show(now.ToString("M"));
            MessageBox.Show(now.ToString("o"));
            MessageBox.Show(now.ToString("O"));
            MessageBox.Show(now.ToString("s"));
            MessageBox.Show(string.Format("{0:yyyy-MM-ddTHH:mm:sszzz}", now));
            MessageBox.Show(now.ToString("T"));
            MessageBox.Show(now.ToString("u"));
            MessageBox.Show(now.ToString("U"));
            MessageBox.Show(now.ToString("y"));
            MessageBox.Show(now.ToString("Y"));

quinta-feira, 29 de novembro de 2012

Nota Técnica 2011 Cancelamento da NF da Nota Fiscal Eletrônica Manual de Integração 2011/006 NF-e como Evento Versão 1.00a Março 2012 - Contribuinte


Para ajudar quem está se preparando para  a nota de cancelamento como evendo
Gerando o arquivo em C#



///

        /// gera o arquivo xml para envio no evento
        ///
        /// diretorio a ser salvo o arquivo
        /// codigo da empresa
        /// tipo ambiente nfe
        /// numero da nota
        /// serie nfe
        /// vesão nfe
        /// justificativa digitada
        /// tipo do evento exemplo Carta de Correcao ou Cancelamento
        /// prefixo inicial do nome do arquivo exemplo CCE (Carta de Correcao) ou CNFE (cancelamento)
        private void GeraArquivoXmlEvento(string DiretorioEnviar, int idEmpresa
                    , int tpAmb, string NumNota, string Serie, string VersaoNF
                    , string Justificativa, string Evento, string prefixoInicialArquivo)
        {
            UTF8Encoding _utf8 = new UTF8Encoding();
            DataTable _infoNfe = new DataTable(); //informações da nfe
            int _seqEvento = 0;
            string _cnpjEmi = string.Empty, _caminhoxml = string.Empty, _tipoEvento = string.Empty;
            try
            {
                //retorna a nota fiscal
                _infoNfe =retorna um datatable contendo a nota fiscal;
                //formata cnpj
                _cnpjEmi = pega o cnpj do emitente da nota.ToString().Replace(".", "").Replace("-", "").Replace("/", "");
                //prepara caminho
                _caminhoxml = DiretorioEnviar + @"\" + prefixoInicialArquivo + _infoNfe.Rows[0]["chNFe"].ToString() + ".xml";
                //busca o tipo do evento
                _tipoEvento = TipoEvento(Evento);
                if (File.Exists(_caminhoxml))
                {
                    File.Delete(_caminhoxml);
                }

                int _i = RetornaSeqEvento(_infoNfe.Rows[0]["chNFe"].ToString(),Evento);
                _seqEvento = _i > 0 ? _i : 1;

                XmlTextWriter _xml = new XmlTextWriter(_caminhoxml, _utf8);

                _xml.WriteStartDocument();

                _xml.WriteStartElement("envEvento");
                if (tpAmb == 1)
                {
                    _xml.WriteStartAttribute("xmlns");
                    _xml.WriteString("http://www.portalfiscal.inf.br/nfe");
                    _xml.WriteEndAttribute();
                    _xml.WriteStartAttribute("versao");
                    _xml.WriteString("1.00");
                    _xml.WriteEndAttribute();
                }
                _xml.WriteStartElement("idLote");//num lote
                _xml.WriteString(_infoNfe.Rows[0]["idlote"].ToString());// numero lote
                _xml.WriteEndElement();

                _xml.WriteStartElement("evento");
                _xml.WriteStartAttribute("xmlns");
                _xml.WriteString("http://www.portalfiscal.inf.br/nfe");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("versao");
                _xml.WriteString("1.00");
                _xml.WriteEndAttribute();
                _xml.WriteStartElement("infEvento");
                _xml.WriteStartAttribute("Id");
                _xml.WriteString("ID" + _tipoEvento + _infoNfe.Rows[0]["chNFe"].ToString() + _seqEvento.ToString("00"));//
                _xml.WriteEndAttribute();
                #region itensInternos

                _xml.WriteStartElement("cOrgao");//num uf ibge
                _xml.WriteString(_infoNfe.Rows[0]["cUF"].ToString());// numero da UF ibge
                _xml.WriteEndElement();

                _xml.WriteStartElement("tpAmb");//num uf ibge
                _xml.WriteString(tpAmb.ToString());// numero da UF ibge
                _xml.WriteEndElement();

                _xml.WriteStartElement("CNPJ");//cnpj emitente
                _xml.WriteString(_cnpjEmi);//
                _xml.WriteEndElement();

                _xml.WriteStartElement("chNFe");//Chave da Nfe 44 posiçoes (nfe antes) NFexxx...
                _xml.WriteString(_infoNfe.Rows[0]["chNFe"].ToString());//
                _xml.WriteEndElement();

                _xml.WriteStartElement("dhEvento");//Serie NFe
                _xml.WriteString(string.Format("{0:yyyy-MM-ddTHH:mm:sszzz}", DateTime.Now));//
                _xml.WriteEndElement();

                _xml.WriteStartElement("tpEvento");//
                _xml.WriteString(_tipoEvento);//
                _xml.WriteEndElement();

                _xml.WriteStartElement("nSeqEvento");//
                _xml.WriteString(_seqEvento.ToString());//
                _xml.WriteEndElement();

                _xml.WriteStartElement("verEvento");//
                _xml.WriteString("1.00");// fixo por hora
                _xml.WriteEndElement();

                _xml.WriteStartElement("detEvento");//abre tag da descrição do envento
                _xml.WriteStartAttribute("versao");//versão
                _xml.WriteString("1.00");// fixo por hora
                _xml.WriteEndAttribute();

                _xml.WriteStartElement("descEvento");//descrição do tipo do envento
                _xml.WriteString(Evento);//
                _xml.WriteEndElement();
//define a mesnagem e campos conforme evento
                switch (Evento)
                {
                    case "Carta de Correcao":
                        /// a sequencia de um mesmo eventdo de cce não pode ser maior que 20 correções
                        if (_seqEvento < 20)
                        {
                            _xml.WriteStartElement("xCorrecao");//Justividativa escrita da cce
                            _xml.WriteString(_comp.RemoveSpecialCharactersXml(Justificativa, true));//
                            _xml.WriteEndElement();

                            _xml.WriteStartElement("xCondUso");//Justividativa escrita da cce
                            _xml.WriteString("A Carta de Correcao e disciplinada pelo paragrafo 1o-A do art. 7o do Convenio S/N," +
                                             " de 15 de dezembro de 1970 e pode ser utilizada para regularizacao de erro ocorrido " +
                                             "na emissao de documento fiscal, desde que o erro nao esteja relacionado com: I - as " +
                                             "variaveis que determinam o valor do imposto tais como: base de calculo, aliquota, " +
                                             "diferenca de preco, quantidade, valor da operacao ou da prestacao; II - a correcao de " +
                                             "dados cadastrais que implique mudanca do remetente ou do destinatario; III - a data de emissao ou de saida.");//
                            _xml.WriteEndElement();
                        }
                        else
                        {
                            throw new Exception("Sequência de correções ultrapassou o limite de 20 para esta nota");
                        }

                        break;
                    case "Cancelamento":
                        _xml.WriteStartElement("nProt");//Numero do protocolo quando aceita a nfe no sefaz
                        _xml.WriteString(_infoNfe.Rows[0]["nProt"].ToString());//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("xJust");//Justividativa escrita do cancelmaento
                        _xml.WriteString(Justificativa);//
                        _xml.WriteEndElement();
                        break;
                }

                #endregion
                _xml.WriteEndElement();//detEvento
                _xml.WriteEndElement();//infEvento
                _xml.WriteEndElement();//Evento
                _xml.WriteEndElement();//envEvento

                _xml.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                _infoNfe.Dispose();
            }
        }

Comentem se usarem...e melhorem também...
att
Fernando

quinta-feira, 30 de agosto de 2012

Usar Enter no DatagridView C#

Função para que no momento do enter voce possa pegar dados, enviar para uma variavel externa ao form e fechar o form de pesquisa.

esta função foi implementada no KeyDown do datagrid.
foi alterada a função edit para não usar o enter no caso.


private void dtgPesqCliente_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter && dtgPesqCliente.CurrentRow.Index != -1)
   {
      _Cliente._retNome = dtgPesqCliente.Rows[dtgPesqCliente.CurrentRow.Index ].Cells[1].Value.ToString();
      _Cliente._retCodigo = dtgPesqCliente.Rows[dtgPesqCliente.CurrentRow.Index].Cells[0].Value.ToString();
                this.Close();
     }
 }

att

Fernando

quarta-feira, 21 de março de 2012

Funções DateTime C#


Funções para ser colocada em uma dll, onde pode ser útil em formatações na aplicação.

public string VerificaData(string data)
        {
            string retorno = string.Empty;
            //
            if (string.IsNullOrEmpty(data) || data == "00/00/0000 00:00:00")
                retorno = Convert.ToDateTime("01/01/1870").ToString();
            else
                retorno = Convert.ToDateTime(data).ToString();
            //
            return retorno;
        }

        public string FormatarData(DateTime Data)
        {
            return Data.ToString("yyyy/MM/dd");
        }

        public string FormatarData2(DateTime Data)
        {
            return Data.ToString("yyyy/MM/dd 00:00:000");
        }

Fernando.

terça-feira, 20 de março de 2012

Deletar .pdf ou .gif de um diretório


///


        /// deleta registros .pdf e .gif gerados para o envio das danfes aos clientes via email
        ///

        ///
caminho do diretório
        public static void DeletaPdfGif(string Diretorio)
        {
            DirectoryInfo d;
            try
            {
                //limpar arquivos no CaminhoXmlTemp com data < 3 meses da data de hoje;
                d = new DirectoryInfo(Diretorio);
                foreach (FileInfo item in d.GetFiles("*.pdf"))
                {                  
                    item.Delete();
                }
                foreach (FileInfo item in d.GetFiles("*.gif"))
                {
                    item.Delete();
                }
            }
            catch (Exception ex)
            {
                throw (ex);
            }
            finally
            {
                d = null;
            }
        }

quinta-feira, 8 de março de 2012

Inserir Try automático c#

digitar :
try e segurar a tecla tab por alguns segundos, o código aparecerá automaticamente.

abraços

segunda-feira, 20 de fevereiro de 2012

Não foi possível resolver o conflito de agrupamento entre ' ' e ' ' na operação equal to.

Equalizando collate para bancos difrentes no SQLServer.


select f.*,fu.*
from banco0.dbo.FUNCIONARIOS fu
inner join banco1.dbo.[FUNCIONARIOS] f
                       on f.REGISTRO = fu.MATRICULA  -- f.RG = fu.RG COLLATE Latin1_General_CS_AS

Com isso os bancos podem ter sido criados com collate diferentes mas consegue-se fazer verificações no campos string princiapalmente.

terça-feira, 17 de janeiro de 2012

Gerar Arquivo Xml Inutilizacao NFE C#


///


        /// gera o arquivo xml para solicitar Inutilização da nfe., você precisara enviar algumas informações ///criando uma função que retorna o datatable com os dados necessários para gerar o arquivo.
        ///

        ///

        ///

        ///

        ///

        ///

        public void GerarArquivoXmlInutilizacao(string DiretorioEnviarInut,
            int idEmpresa, string NumNota, string Serie, string Justificativa)
        {
            UTF8Encoding _utf8 = new UTF8Encoding();
            string _cnpjEmi = string.Empty;

            DataTable _infoNfe = new DataTable(); //informações da nfe
            try
            {
                _infoNfe = this.RetornarNfeCabecVisCom(idEmpresa, NumNota, Serie);
                _cnpjEmi = _infoNfe.Rows[0]["CNPJ"].ToString().Replace(".", "").Replace("-", "").Replace("/", "");

                XmlTextWriter _xml = new XmlTextWriter(DiretorioEnviarInut +
                                                @"\NFe" + _cnpjEmi +
                                                _infoNfe.Rows[0]["sc_numnota"].ToString() +
                                                _infoNfe.Rows[0]["sc_serie"].ToString(), _utf8);
                _xml.WriteStartDocument();

                _xml.WriteStartElement("inutNFe");
                _xml.WriteStartAttribute("xsi:schemaLocation");
                _xml.WriteString("http://www.portalfiscal.inf.br/nfe inutNFe_v2.00.xsd");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("xmlns:xsi");
                _xml.WriteString("http://www.w3.org/2001/XMLSchema-instance");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("versao");
                _xml.WriteString("2.0");
                _xml.WriteEndAttribute();
                _xml.WriteStartAttribute("xmlns");
                _xml.WriteString("http://www.portalfiscal.inf.br/nfe");
                _xml.WriteEndAttribute();

                    #region infInut
                    _xml.WriteStartElement("infInut");
                    _xml.WriteStartAttribute("Id");
                    _xml.WriteString("ID" + _infoNfe.Rows[0]["SC_IDNFE"].ToString());
                    #region internos
                        _xml.WriteStartElement("tpAmb");//num uf ibge
                        _xml.WriteString(_infoNfe.Rows[0][""].ToString());// numero da UF ibge
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("xServ");//cnpj emitente
                        _xml.WriteString("INUTILIZAR");//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("UF");//num uf ibge
                        _xml.WriteString(_infoNfe.Rows[0]["cUF"].ToString());// numero da UF ibge
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("ano");//ano da emissao da nota
                        _xml.WriteString(Convert.ToDateTime(_infoNfe.Rows[0]["dEmi"]).ToString("yy"));//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("CNPJ");//cnpj emitente
                        _xml.WriteString(_infoNfe.Rows[0]["CNPJ"].ToString());//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("mod");//Modelo nota
                        _xml.WriteString(_infoNfe.Rows[0][""].ToString());//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("serie");//Serie da nfe
                        _xml.WriteString(Justificativa);//
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("nNFIni");//Numero nota inicio
                        _xml.WriteString(_infoNfe.Rows[0]["nNF"].ToString());//sem formatação
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("nNFFin");//Numero numero nota fim
                        _xml.WriteString(_infoNfe.Rows[0]["nNF"].ToString());//  sem formatação
                        _xml.WriteEndElement();

                        _xml.WriteStartElement("xJust");//Justificativa escrita da inutilização
                        _xml.WriteString(Justificativa);//
                        _xml.WriteEndElement();
                    #endregion
                    _xml.WriteEndElement();//infInut

                    #endregion

                _xml.WriteEndElement();//inutNFe

                _xml.Close();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                _infoNfe.Dispose();
            }
        }

segunda-feira, 5 de dezembro de 2011

Verifica se um datagrid esta carregado ou vazio.


Simples para facilitar algumas verificações.
///

        /// verifica se um datagrid esta carregado ou vazio
        ///

        /// passa o datagrid
        /// true para carregado e false para vazio
        private bool VerificaGrid(DataGridView dtg)
        {
            return (((DataTable)dtg.DataSource) != null && ((DataTable)dtg.DataSource).Rows.Count > 0);
        }
Podes ser colocado em uma classe publica a todos os form's.
Att

Fernando

terça-feira, 29 de novembro de 2011

Previne Injeção de SQL C# Sql Injection


Ola, segue uma ajuda, mas sempre teste antes.
        ///

        /// previne a insersão de selects que possam prejudicar o banco
        ///

        /// texto a ser verificado
        ///
        public bool PrevineSqlInjection(string texto)
        {
            string[] _Injecoes = { "drop", "select", "insert", "delete", "xp_", ";", "--" };
            try
            {
                foreach (string s in _Injecoes)
                {
                    if (texto.ToUpper().IndexOf(s.ToUpper()) >= 0)
                        return false;
                }
                return true;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                _Injecoes = null;
            }
        }

Att

Fernando Valota

sexta-feira, 18 de novembro de 2011

Limpar Pasta - C#

///
/// procedimento utilizado para limpar todos arquivos de uma determinada pasta
///
///
caminho fisico da pasta
public void Limparpasta(string CaminhoPasta)
{
System.IO.DirectoryInfo _pasta = new System.IO.DirectoryInfo(CaminhoPasta);
try
{
if (_pasta.Exists)
{
System.IO.FileInfo _arqDeletar = null;
foreach (System.IO.FileInfo _arq in _pasta.GetFiles())
{
_arqDeletar = _arq;
_arqDeletar.Delete();
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
_pasta = null;
}
}
}
catch (Exception ex)
{
throw ex;
}
finally
{
a = null;
}
}

segunda-feira, 24 de outubro de 2011

Report Viewer Pdf

Olá a todos.

Neste projeto, é passado uma dataset dinamicamente, onde no reportviewe, ira preencher os produtos, o cabeçalho e demais itens são preenchidos por parametros configurados no reportviewer, e logo depois converte para pdf.

string a = Server.MapPath("Logo/Logo.jpg");
                string b = Server.MapPath("~/Temp/");
                ReportViewer1.LocalReport.EnableExternalImages = true;
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportViewer1.LocalReport.SetParameters(_danfe.RetornaParametrosRptWEB(Convert.ToString(Session["XMLNFe"]), out _DsNFe, Server.MapPath("Logo/Logo.jpg"), Server.MapPath("~/Temp/")));
                ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DsNFe_DetalheNfe", _DsNFe.Tables[0]));
                //ReportViewer1.LocalReport.Refresh();
//converte para pdf.
                byte[] exportBytes = ReportViewer1.LocalReport.Render("PDF", null, out mimeType, out  encoding, out  fileNameExtension, out  streamids, out  warnings);
                HttpContext.Current.Response.Buffer = true;
                HttpContext.Current.Response.Clear();
                HttpContext.Current.Response.ContentType = mimeType;
                HttpContext.Current.Response.AddHeader("content-disposition", ("inline; filename=ExportedReport." + fileNameExtension));
                HttpContext.Current.Response.BinaryWrite(exportBytes);
                HttpContext.Current.Response.Flush();

segunda-feira, 16 de maio de 2011

C# NFe Danfe, Retornando DataSet de Produtos

Olá!

Este procedimento abaixo retorna um dataset com os produtos pronto para serem usados na geração da Danfe, ou seja, já retorna no formato correto para preencher o grid de uma Danfe feita por exemplo com o Report Viwer.
Ele recebe o arquivo xml, e varre as tags gerando um Ds com as mesmas.

private DataSet GeraDsProd(string caminhoXml)
        {
            DataSet _ds = new DataSet();
            DataTable _dt = new DataTable("DetalheNFe");
            //Instancia doc com o xml
            XmlDocument doc = new XmlDocument();
            try
            {
                //le o xml no caminho correto
                doc.Load(caminhoXml);
                //le o elemento a ser trabalhado
                XmlNodeList No = doc.GetElementsByTagName("prod");
                //cria as colunas para serem colocandas no dataset.
                _dt.Columns.Add("cProd");
                _dt.Columns.Add("xProd");
                _dt.Columns.Add("NCM");
                _dt.Columns.Add("CFOP");
                _dt.Columns.Add("uCom");
                _dt.Columns.Add("qCom");
                _dt.Columns.Add("vUnCom");
                _dt.Columns.Add("vProd");
                _dt.Columns.Add("vUnTrib");
                _dt.Columns.Add("CST");
                _dt.Columns.Add("vBC");
                _dt.Columns.Add("pICMS");
                _dt.Columns.Add("vICMS");
                _dt.Columns.Add("vIPI");
                _dt.Columns.Add("pIPI");
                //carrega o dataset
                _ds.Tables.Add(_dt);
                //Leitura dos nos selecionados
                foreach (XmlNode book in No)
                {
                    //Criando Registros
                    DataRow _row;
                    _row = _dt.NewRow();
                    _dt.Rows.Add(_row);
                    for (int i = 0; i < book.ChildNodes.Count; i++)
                    {
                        //Verifica o nome do no correspondente a ser colocado na dataset
                        switch (book.ChildNodes.Item(i).Name)
                        {
                            case "cProd":
                                _row["cProd"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "xProd":
                                _row["xProd"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "NCM":
                                _row["NCM"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "CFOP":
                                _row["CFOP"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "uCom":
                                _row["uCom"] = book.ChildNodes.Item(i).InnerXml;
                                break;
                            case "qCom":
                                _row["qCom"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
                                break;
                            case "vUnCom":
                                _row["vUnCom"] = string.Format("{0:d}", book.ChildNodes.Item(i).InnerXml);
                                break;
                            case "vProd":
                                _row["vProd"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
                                break;
                            case "vUnTrib":
                                _row["vUnTrib"] = string.Format("{0:d}", (book.ChildNodes.Item(i).InnerXml));
                                break;
                        }
                    }
                    _row["vBC"] = "0.00";
                    _row["pICMS"] = "0.00";
                    _row["vICMS"] = "0.00";
                    _row["vIPI"] = "0.00";
                    _row["pIPI"] = "0.00";
                    if (book.NextSibling.Name.ToString() == "imposto")
                    {
                        for (int i = 0; i < book.NextSibling.ChildNodes.Count; i++)
                        {
                            switch (book.NextSibling.ChildNodes.Item(i).Name.ToString())
                            {
                                case "ICMS":
                                    //verifica quantos filhos de icms estao dentro do pai
                                    for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
                                    {
                                        for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
                                        {
                                            switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
                                            {
                                                case "CSOSN":
                                                    //if (_dsAux.Tables[0].Columns.Contains("CST"))
                                                    //{
                                                    _row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
                                                    //}
                                                    break;
                                                case "CST":
                                                    //if (_dsAux.Tables[0].Columns.Contains("CST"))
                                                    //{
                                                    _row["CST"] = String.Format("{0:000}", Convert.ToInt32(book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml));
                                                    //}
                                                    break;
                                                case "vBC":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["vBC"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                                case "pICMS":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["pICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                                case "vICMS":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["vICMS"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                            }
                                        }
                                    }
                                    break;
                                case "IPI":
                                    //verifica quantos filhos de icms estao dentro do pai
                                    for (int ii = 0; ii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Count; ii++)
                                    {
                                        for (int iii = 0; iii < book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Count; iii++)
                                        {
                                            switch (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).Name.ToString())
                                            {
                                                case "vIPI":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["vIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                                case "pIPI":
                                                    if (book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml != string.Empty)
                                                    {
                                                        _row["pIPI"] = book.NextSibling.ChildNodes.Item(i).ChildNodes.Item(ii).ChildNodes.Item(iii).InnerXml;
                                                    }
                                                    break;
                                            }
                                        }
                                    }
                                    break;
                            }
                        }//for imposto
                    }//if imposto
                }
                return _ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

Grande Abraço a Todos

Fernando Valota

segunda-feira, 15 de fevereiro de 2010

C# SMS

   Para quem estiver procurando uma forma de enviar SMS via aplicação, e está procurando uma empresa para o mesmo, indico a Human, pois já desenvolvi aplicações utilizando as soluções de comunicações da mesma, e tem atendido e respondido as expectativas, para acessar e buscar o contato este é o site: http://www.human.com.br/sms/index.php.
   Para ajuda-los, eu criei uma classe SMS.cs, onde a mesma contém está função, que a própria Human auxilia no desenvolvimento caso precisem, a mesma fornece um manual com as explicações necessárias ao desenvolvimento da aplicação, mas para envio de uma lista por exemplo temos:

Using necessários na classe:

using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
using System.IO;

Função:

        public string GetPage(String Lista)
        {//CSV&list
            String url = "http://fornecido pela Empresa Human";
//define a empresa a senha e o tipo de envio, no caso uma lista
            String query = "dispatch=sendMultiple&account=empresa&code=senha&type=E&list=" + Lista;
            // Declarações necessárias, Empresa HUMAN
            Stream requestStream = null;
            WebResponse response = null;
            StreamReader reader = null;
            try
            {
                WebRequest request = WebRequest.Create(url);
                request.Method = WebRequestMethods.Http.Post;

                // Neste ponto, você está setando a propriedade ContentType da página 
                // para urlencoded para que o comando POST seja enviado corretamente 
                request.ContentType = "application/x-www-form-urlencoded";

                StringBuilder urlEncoded = new StringBuilder();

                // Separando cada parâmetro 
                Char[] reserved = { '?', '=', '&' };

                // alocando o bytebuffer 
                byte[] byteBuffer = null;

                // caso a URL seja preenchida 
                if (query != null)
                {
                    int i = 0, j;
                    // percorre cada caractere da url atraz das palavras reservadas para separação 
                    // dos parâmetros 
                    while (i < query.Length)
                    {
                        j = query.IndexOfAny(reserved, i);
                        if (j == -1)
                        {
                            urlEncoded.Append(query.Substring(i, query.Length - i));
                            break;
                        }
                        urlEncoded.Append(query.Substring(i, j - i));
                        urlEncoded.Append(query.Substring(j, 1));
                        i = j + 1;
                    }
                    // codificando em UTF8 (evita que sejam mostrados códigos malucos em caracteres especiais 
                    byteBuffer = Encoding.UTF8.GetBytes(urlEncoded.ToString());

                    request.ContentLength = byteBuffer.Length;
                    requestStream = request.GetRequestStream();
                    requestStream.Write(byteBuffer, 0, byteBuffer.Length);
                    requestStream.Close();
                }
                else
                {
                    request.ContentLength = 0;
                }

                // Dados recebidos 
                response = request.GetResponse();
                Stream responseStream = response.GetResponseStream();

                // Codifica os caracteres especiais para que possam ser exibidos corretamente 
                System.Text.Encoding encoding = System.Text.Encoding.Default;

                // Preenche o reader 
                reader = new StreamReader(responseStream, encoding);

                Char[] charBuffer = new Char[256];
                int count = reader.Read(charBuffer, 0, charBuffer.Length);

                String Dados = "";

                // Lê cada byte para preencher meu string
                while (count > 0)
                {
                    Dados += new String(charBuffer, 0, count);
                    count = reader.Read(charBuffer, 0, charBuffer.Length);
                }
                return Dados;
            }
            catch (Exception ex)
            {
                //// Ocorreu algum erro 
                //Console.Write("Erro: " + e.Message);
                return "";
                throw ex;
            } // END: catch 

            finally
            {
                // Fecha tudo 
                if (requestStream != null) requestStream.Close();
                if (response != null) response.Close();
                if (reader != null) reader.Close();
            } // END: finally
        }


Att Fernando Valota