Consisteência de dados
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
Curtidas 0
Respostas
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
06/03/2009
Bom dia gostaria sim de receber um exemplo se puder enviar fico agradecido
GOSTEI 0
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
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
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
06/03/2009
Ok mandarei a rotina para que você escrareça a dúvida ok.
GOSTEI 0
Luiz Maia
06/03/2009
Ok Angelo, estou aguardando.
Abraços
Att
Luiz Maia
GOSTEI 0
Luiz Maia
06/03/2009
E ai Angelo?
Estou aguardando sua dúvida, ok?
Abraços
Att
Luiz Maia
GOSTEI 0
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
06/03/2009
Ok, estou aguardando.
Abraços.
Att
Luiz Maia
GOSTEI 0
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
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
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
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
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
06/03/2009
E ai Angelo, blz?
Como está indo, conseguiu resolver sua dúvida?
Abrqços
Att
Luiz Mai
GOSTEI 0
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