Consisteência de dados

06/03/2009

Boa noite esse é emeu primeiro contato peço desculpas ainda não sei como funciona direito. Bem vamos lá.   Meu Objetivo é  conferir consistência de dados. 1 -  Terei duas tabelas (tab1 e tab2), que poussuem as mesmas informações. 2 -  Tenho que abrir a tab1 e tab2. 3 -  Ler o codigo do registro registro na  tab2, ler os eventos que serão Creditos e debitos. 4 -  Calcular diferença entre creditos e debitos. 5 -  Comparar diferença calculada com a tab1. 6  - Gerar registro em uma nova tabela tab3 com os valores calculados quando difrentes para tab1 e tab2. 7  - Mover valores calculados da tab2 para valor tab1 Obs: Tudo isso usando banco de dados access e c sharp webform.   Exmplo de conteudo na tabela:     tab1   codigo credito debito 1 50 10 2 20 20 3 10 50   tab2 codigo credito debito 1 50 40 2 20 30 3 10 10   tab3 codigo credito debito 1 10 0 2 10 3 0
Angelo Silva

Angelo Silva

Curtidas 0

Respostas

Luiz Maia

Luiz Maia

06/03/2009

Ola Angelo seja bem vindo. Surigo vc fazer um Formulario windows contendo duas GridViews, do qual cada uma sera populada com os dados de suas duas tabelas. UmM botão "Comparar" que fará a rotina de comparação, já que vc tera dois DataTables que serão seus DataSources para popular as grids. Passos: Fara um loop que compara os id Caso sejam iguais, compare tb os outros campos Caso sejam diferentes, faça um INSERT na terceira tabela Depois da rotina finalizada, vc exibe outra GridgView com estes dados Caso não tenha entendido algo, por favor me comunique que posso mandar um pequeno exemplo pra vc. Abraços Att Luiz Maia
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

Bom dia gostaria sim de receber um exemplo se puder enviar fico agradecido
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Ola Angelo,   Vc tera que construir um Formulario tipo este abaixo, onde serão exibidos os dados das duas tabelas:       No evento click do botão "comparar", fiz uma estrutura para te dar um caminho, um algoritmo. Dai vc modifica como quiser. Segue abaixo:   using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace TesteDevMedia { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); foreach (DataRow dr1 in dt1) { int codigo1 = Convert.ToInt32(dr1["CODIGO"]); int valor1 = Convert.ToInt32(dr1["CREDITO"]) - Convert.ToInt32(dr1["DEBITO"]); foreach (DataRow dr2 in dt2) { int codigo2 = Convert.ToInt32(dr2["CODIGO"]); int valor2 = Convert.ToInt32(dr2["CREDITO"]) - Convert.ToInt32(dr2["DEBITO"]); if (codigo1 == codigo2) { if (valor1 != valor2) { // insere os dados na tabela 3 aqui } } } } } } }   Caso não entenda algo, me avise ok? Estou aguardando seu feedback. Abraços Luiz Maia
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

Oi entendi sim na verdade até ai eu tinha conseguido minha dúvida é o seguinte: Tenho uma tabela com mais ou menos 6 mil dados, quero fazer essa rotina em cada item e preecher uma nova tabela como te passei. Minha dúvida é como fazer um loop para que o sistema venha a fazer isso nós 6 mil itens e preecha a tabela 3 com todos os itens de uma só vez. Se puder me passar o código completo inclusive com a  a inserção eu agradeço. Muito obrigado pela sua atenção
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Angelo, O objetivo da consultoria é esclarecer as dúvidas, a gente até coloca trechos de código para facilitar o entendimento, mas não posso desenvolver a rotina para você. Não posso fazer a codificação como quer. Nos apenas resolvemos problemas, dúvidas e orientamos para que os solicitantes tenham um caminho a traçar. Desculpe. Abraços Att Luiz Maia  
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

Ok mandarei a rotina para que você escrareça a dúvida ok.
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Ok Angelo, estou aguardando. Abraços Att Luiz Maia
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

E ai Angelo?   Estou aguardando sua dúvida, ok? Abraços   Att Luiz Maia
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

Oi obrigado pela atenção mandarei a dúvida hoje, e deste agradeço é que estou aprendendo ainda rss.
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Ok, estou aguardando. Abraços. Att Luiz Maia
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.OleDb; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\db1.mdb"; // conexão com banco de dados OleDbConnection cn = new OleDbConnection(connectString);   cn.Open(); // preciso de uma conexão com as tabelas do banco de dados // que as varáveis recebam os valores contidos no banco de dados string codigo = ("codigo"); string credito = ("credito"); string debito = ("debito"); } } } Vou mandar parte por parte de onde tenho dúvidas espero não serem tolas demais, prometo assistir todos oso vidéos que tenho direito assim terei menos dúvidas
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Angelo,   De uma olada neste artigo, ele esclarece esta parte:   https://www.devmedia.com.br/articles/viewcomp.asp?comp=5769&;hl=   Mas seria isto:   //definir a string SQL         string sql = "SELECT * FROM tabcarros";               // definir  conexão             OleDbConnection  con  =  new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\administrador\\Desktop\\1 aula c#\\Carros.mdb;Persist Security Info=False");               //abrir a conexão             con.Open();               //criar o data DataAdapter e executar a consulta             OleDbDataAdapter ad =  new OleDbDataAdapter(sql,con);               //criar o DataSet             DataSet ds = new DataSet();               //Preencher o dataset com o data DataAdapter             ad.Fill(ds);               //DataView dv = new DataView(ds.Tables[0]);                         //ligando dataset ao controle asp.net             DataGrid1.DataSource= ds.Tables[0];//dv;                         // visualizando dados no controle             DataGrid1.DataBind();               //liberando objetos             con.Dispose();             ad.Dispose();             ds.Dispose();   Pode usar tb um DataTable:   DataTable dt = ds.Tables[0];   string valor1 = dt["credito"].[0].ToString();           Aguardo seu retorno.   Att Luiz Maia
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

oi professor bom dia, muito legal seu arquivo muitas dúvidas, foram tiradas com ele e funcionou, mas não gostaria de ter todos os campos exibido queria seleciona-los alguns na verdade 3 boleto,credite e debite. E gostaria de exibir duas tabelas tentei deu erro.   Outra coisa testei em uma tabela com 1404 ele não exibiu todos só exibio 1385 como resolvo isso 
GOSTEI 0
Angelo Silva

Angelo Silva

06/03/2009

using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.OleDb; namespace WebApplication2 { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // defini a string sql string sql = "Select * From CREDITE"; OleDbConnection con = new OleDbConnection ("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=C:\\db1.mdb"); // abre conexão con.Open(); // cria data dataadapter e executa consuta OleDbDataAdapter ad = new OleDbDataAdapter(sql , con); // criar dara set DataSet ds = new DataSet(); // preeche o data set com data dataatapter ad.Fill(ds); // data view dv new dataviews(dsTables[0[//) //DataView dv = DataView(ds.Tables[0]); //ligando dataset ao controle asp.net DataGrid1.DataSource = ds.Tables[0];//dv; DataGrid1.DataBind(); con.Dispose(); ad.Dispose(); ds.Dispose(); } } } para criar outra tabela pensei que fosse só seguir esses passos eles teriam que exibir no mesmo lugar
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Olá Angelo,   Para filtrar os campos que quer na sua consulta, basta informa-los explicitamente na query, tipo assim:   string sql = "Select boleto, credite, debite From CREDITE"; Para exibir dados de duas tabelas vc deve fazer um relarionamento entre ambas, usando JOIN. Para tanto vc precisa verificar se a tabela filho é obrigatoria ter dados relacionados com a pai, ai vc deve usar o INNER JOIN, caso contrario pode usar o LEFT JOINN.   Por exemplo,  vc tem duas tabelas, Categoria e Produto, mas pode haver casos que vc so tem a categoria e ainda nao tem produtos para ela, mas com certeza todos produtos tem uma categoria.   Pode ser por este motivo seus registros não estão retornando todos.   Entao se quiser buscar os produtos com a descrição da categoria, segue exemplo:   select    p.nom_produto,    p.valor_produto,    c.nom_categoria from   produto p INNER JOIN categoria c on c.cod_categoria = p.cod_produto.     Abraços Att Luiz Maia  
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

E ai Angelo, blz? Como está indo, conseguiu resolver sua dúvida? Abrqços Att Luiz Mai
GOSTEI 0
Luiz Maia

Luiz Maia

06/03/2009

Angelo,   Como não obtivemos respostas do seu chamado, estamos procedendo com o fechando do mesmo. Continuamos a sua disposição para quaisquer dúvidas.   Abraços   Att Luiz Maia
GOSTEI 0
POSTAR