GRAVAR XML DA NF-E NO BANCO DE DADOS SQL SERVER 20
Olá Pessoal, estou com dificuldades em gerar um programa em que eu selecione o xml e grave seus dados no banco.
Estou tentando de 2 formas:
1º - Criei uma classe com as propriedades get/set para essas tags.
public int cNF;
public DateTime dEmi;
public int CNPJ;
public string xFant;
public string cProd;
public string cEAN;
public string xProd;
public int NCM;
public int CFOP;
public string uCom;
public int qCom;
public float vUnCom;
public float vProd;
public int orig;
public int CST;
Criei o metodo para Gravar no banco tmb.
public void InserirXml()
{
try
{
CON.ComandoSQL([Ô]INSERT INTO Cadxml(cNF , dEmi, cnpj , xFant, cProd, cEAN , xProd, ncm , cfop , uCom , qCom , vUnCom, vProd, orig , cst)[Ô] +
[Ô] VALUES([ô][Ô] + CNF + [Ô][ô],[ô][Ô] + DEmi + [Ô][ô],[ô][Ô] + CNPJ1 + [Ô][ô],[ô][Ô] + XFant + [Ô][ô],[ô][Ô] + CProd + [Ô][ô],[ô][Ô] + CEAN + [Ô][ô],[ô][Ô] + XProd + [Ô][ô],[ô][Ô] + NCM1 + [Ô][ô]+[ô][Ô] + CFOP1 + [Ô][ô],[ô][Ô] + UCom + [Ô][ô],[ô][Ô] + QCom + [Ô][ô],[ô][Ô] + VUnCom + [Ô][ô],[ô][Ô] + VProd + [Ô][ô],[ô][Ô] + Orig + [Ô][ô],[ô][Ô] + CST1 + [Ô][ô][ô])[Ô]);
}
catch (Exception ex)
{
throw ex;
}
}
A pergunta é como associar a TAG especifica do xml para a minha propriedade, por EX: propriedade CFOP tag <CFOP> 5405 <\CFOP> observando que existirá varios produtos no mesmo xml
2º Consigo puxar os dados para um datagridview, mais apenas das TAG principais no cado do xml da nf-e apenas a tag <PROD> ou outras sem relevancia, mais não sei concatenar 2 ou mais.
Como Salvar esse dataGridView em uma tabela?????
Vlww
Estou tentando de 2 formas:
1º - Criei uma classe com as propriedades get/set para essas tags.
public int cNF;
public DateTime dEmi;
public int CNPJ;
public string xFant;
public string cProd;
public string cEAN;
public string xProd;
public int NCM;
public int CFOP;
public string uCom;
public int qCom;
public float vUnCom;
public float vProd;
public int orig;
public int CST;
Criei o metodo para Gravar no banco tmb.
public void InserirXml()
{
try
{
CON.ComandoSQL([Ô]INSERT INTO Cadxml(cNF , dEmi, cnpj , xFant, cProd, cEAN , xProd, ncm , cfop , uCom , qCom , vUnCom, vProd, orig , cst)[Ô] +
[Ô] VALUES([ô][Ô] + CNF + [Ô][ô],[ô][Ô] + DEmi + [Ô][ô],[ô][Ô] + CNPJ1 + [Ô][ô],[ô][Ô] + XFant + [Ô][ô],[ô][Ô] + CProd + [Ô][ô],[ô][Ô] + CEAN + [Ô][ô],[ô][Ô] + XProd + [Ô][ô],[ô][Ô] + NCM1 + [Ô][ô]+[ô][Ô] + CFOP1 + [Ô][ô],[ô][Ô] + UCom + [Ô][ô],[ô][Ô] + QCom + [Ô][ô],[ô][Ô] + VUnCom + [Ô][ô],[ô][Ô] + VProd + [Ô][ô],[ô][Ô] + Orig + [Ô][ô],[ô][Ô] + CST1 + [Ô][ô][ô])[Ô]);
}
catch (Exception ex)
{
throw ex;
}
}
A pergunta é como associar a TAG especifica do xml para a minha propriedade, por EX: propriedade CFOP tag <CFOP> 5405 <\CFOP> observando que existirá varios produtos no mesmo xml
2º Consigo puxar os dados para um datagridview, mais apenas das TAG principais no cado do xml da nf-e apenas a tag <PROD> ou outras sem relevancia, mais não sei concatenar 2 ou mais.
Como Salvar esse dataGridView em uma tabela?????
Vlww
Primeiro vai ter que aprender a ler os XMLs: http://www.codigofonte.net/dicas/csharp/151_lendo-um-arquigo-xml
Depois vc passa o resultado da leitura para sua query e grava no banco.
Depois vc passa o resultado da leitura para sua query e grava no banco.
LLAIA
Obrigado, mais eu abandonei a ideia do uso das propriedades e fiz algo mais simples, tranformei o xml em datagridview e depois gravei a datagrid na minha tabela.
segue o meu codigo ainda em desenvolvimento
private void bntAbrir_Click(object sender, EventArgs e)
{
DataSet ds;
string fcaminho;
try
{
//SO USO PARA ABRIR O ARQUIVO NO WINDOWS
ofd1.Filter = [Ô]xml|*.xml|all files|*.*[Ô];
DialogResult res = ofd1.ShowDialog();
//SE O ARQUIVO ESTIVER ABERTO
if (res == DialogResult.OK)
{
//FAÇO ISSO
dgv1.DataSource = null;
fcaminho = ofd1.FileName;
ds = new DataSet();
ds.ReadXml(fcaminho);
dgv1.DataSource = ds.Tables[[Ô]prod[Ô]];
dgv2.DataSource = ds.Tables[[Ô]ide[Ô]];
dgv3.DataSource = ds.Tables[[Ô]emit[Ô]];
}
}
catch (Exception ex)
{
MessageBox.Show([Ô]ERRO : [Ô] + ex.Message, [Ô]Aviso[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
}
}
private void bntGravar_Click(object sender, EventArgs e)
{
//ABRO MINHA CLASSE COM A CONECÇÃO NO BANCO
Banco CON = new Banco();
//uso do for para percorrer todos os produtos da datagridview
for (int x = 0; x < dgv1.Rows.Count; x++)
{
CON.ComandoSQL([Ô]INSERT INTO CADXML (cnf, demi, cnpj, xfant,cProd, cEAN, xProd, NCM, CFOP, UCOM, qCom, vUncom, vProd) VALUES[Ô]+
//itens da Tag [Ô]Ide[Ô] pegando as informações solicitadas do dgv2
[Ô]([ô][Ô] + dgv2.Rows[0].Cells[6].Value + [Ô][ô],[ô][Ô] + dgv2.Rows[0].Cells[7].Value + [Ô][ô],[Ô]+
//itens da Tag [Ô]Emit[Ô] pegando as informações solicitadas do dgv3
[Ô][ô][Ô] + dgv3.Rows[0].Cells[0].Value + [Ô][ô],[ô][Ô] + dgv3.Rows[0].Cells[2].Value + [Ô][ô],[Ô] +
//itend da Tag [Ô]prod[Ô] pegando as informações solicitadas do dgv1
[Ô][ô][Ô] + dgv1.Rows[x].Cells[0].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[1].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[2].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[3].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[4].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[5].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[6].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[7].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[8].Value + [Ô][ô])[Ô]);
}
}
}
}
Obrigado, mais eu abandonei a ideia do uso das propriedades e fiz algo mais simples, tranformei o xml em datagridview e depois gravei a datagrid na minha tabela.
segue o meu codigo ainda em desenvolvimento
private void bntAbrir_Click(object sender, EventArgs e)
{
DataSet ds;
string fcaminho;
try
{
//SO USO PARA ABRIR O ARQUIVO NO WINDOWS
ofd1.Filter = [Ô]xml|*.xml|all files|*.*[Ô];
DialogResult res = ofd1.ShowDialog();
//SE O ARQUIVO ESTIVER ABERTO
if (res == DialogResult.OK)
{
//FAÇO ISSO
dgv1.DataSource = null;
fcaminho = ofd1.FileName;
ds = new DataSet();
ds.ReadXml(fcaminho);
dgv1.DataSource = ds.Tables[[Ô]prod[Ô]];
dgv2.DataSource = ds.Tables[[Ô]ide[Ô]];
dgv3.DataSource = ds.Tables[[Ô]emit[Ô]];
}
}
catch (Exception ex)
{
MessageBox.Show([Ô]ERRO : [Ô] + ex.Message, [Ô]Aviso[Ô], MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
}
}
private void bntGravar_Click(object sender, EventArgs e)
{
//ABRO MINHA CLASSE COM A CONECÇÃO NO BANCO
Banco CON = new Banco();
//uso do for para percorrer todos os produtos da datagridview
for (int x = 0; x < dgv1.Rows.Count; x++)
{
CON.ComandoSQL([Ô]INSERT INTO CADXML (cnf, demi, cnpj, xfant,cProd, cEAN, xProd, NCM, CFOP, UCOM, qCom, vUncom, vProd) VALUES[Ô]+
//itens da Tag [Ô]Ide[Ô] pegando as informações solicitadas do dgv2
[Ô]([ô][Ô] + dgv2.Rows[0].Cells[6].Value + [Ô][ô],[ô][Ô] + dgv2.Rows[0].Cells[7].Value + [Ô][ô],[Ô]+
//itens da Tag [Ô]Emit[Ô] pegando as informações solicitadas do dgv3
[Ô][ô][Ô] + dgv3.Rows[0].Cells[0].Value + [Ô][ô],[ô][Ô] + dgv3.Rows[0].Cells[2].Value + [Ô][ô],[Ô] +
//itend da Tag [Ô]prod[Ô] pegando as informações solicitadas do dgv1
[Ô][ô][Ô] + dgv1.Rows[x].Cells[0].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[1].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[2].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[3].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[4].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[5].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[6].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[7].Value + [Ô][ô],[ô][Ô] + dgv1.Rows[x].Cells[8].Value + [Ô][ô])[Ô]);
}
}
}
}
Faça seu login para responder