C sharp - ABM No Funciona

 
Vista:

ABM No Funciona

Publicado por Juan Manuel Castañeda (71 intervenciones) el 11/02/2010 19:57:24
Hola a todos.
Tengo un formulario(Windows Forms) con un DataGridView y botones para ABM.
En el evento Load del formulario cargo la grilla con una tabla de una bbdd pero cuando ejecuto los ABM no los ejecuta.

public partial class form1:Form
{
Datos.Paises p;
public form1(){
p=new Datos.Paises();//Datos.Paises es una clase para manejar una tabla de Paises
dataGridView1.DataSource=p.ds;
dataGridView.DataMember="Paises";
}
private void Button1_Click(object sender,EventArgs e){
p.guardar();
}
private void button2_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Desea Eliminar Esta Fiila", "Elimonacion de Filas", MessageBoxButtons.YesNo) == DialogResult.Yes) {
dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);
p.guardar();

}
}
}

mamespces Localidades.Datos{
class Paises:Datos.Provincias{
public Paises():base() {

this.traer();

}

}
public override void traer() {
si++;
cadsql[si] = "Select * FROM Paises ORDER BY nombre";
base.traer();
ds.Tables[0].Columns[1].AllowDBNull = false;
ds.Tables[0].Columns[2].AllowDBNull = false;
ds.Tables[0].Columns[1].Unique = true;
ds.Tables[0].Columns[2].Unique = true;
//MessageBox.Show(nombretabla().Substring(0, nombretabla().Length - 2));
si++;
dc.ElementAt(si)[0] = ds.Tables["" + nombretabla() + ""].Columns["Id" + nombretabla().Substring(0, nombretabla().Length - 2) + ""];
ds.Tables["" + nombretabla() + ""].Columns["Id" + nombretabla().Substring(0, nombretabla().Length - 2) + ""].AutoIncrement = true;
ds.Tables["" + nombretabla() + ""].Columns["Id" + nombretabla().Substring(0, nombretabla().Length - 2)].AutoIncrementSeed = -1;
ds.Tables["" + nombretabla() + ""].Columns["Id" + nombretabla().Substring(0, nombretabla().Length - 2)].AutoIncrementStep = -1;

ds.Tables["" + nombretabla() + ""].PrimaryKey = dc.ElementAt(si);
//si=0;
/*ds.Tables["" + nombretabla() + ""].PrimaryKey =(DataColumn[])dc.GetEnumerator().Current;
MessageBox.Show(nombretabla().Substring(0, nombretabla().Length - 2));
dc[0,0] = ds.Tables["" + cadsql[0].Split(' ')[3] + ""].Columns["Id" + cadsql[0].Split(' ')[3].Substring(0, cadsql[0].Split(' ')[3].Length-1) + ""];*/
si--;
if (si < 0) Application.Exit();
dc.ElementAt(si)[0] = ds.Tables["" + nombretabla() + ""].Columns["Id" + nombretabla().Substring(0, nombretabla().Length - 1) + ""];
if (dc.ElementAt(si)[0] == null) Application.Exit();
ds.Tables["" + nombretabla() + ""].PrimaryKey = dc.ElementAt(si);
//MessageBox.Show(ds.Tables["Paises"].PrimaryKey.Length.ToString());
//dr[0]=new DataRelation("Pais Posee Provincias",ds.Tables["Paises"].PrimaryKey[0], ds.Tables["" + nombretabla() + ""].Columns[1]);
// MessageBox.Show(ds.Relations.Count.ToString());
if (ds.Relations.Count==0)
ds.Relations.Add(ds.Tables["Paises"].PrimaryKey[0], ds.Tables["" + nombretabla() + ""].Columns[1]);
ds.Relations[0].ParentKeyConstraint.Columns[0].Unique = true;
ds.EnforceConstraints=true;
}
public override void guardar() {
base.guardar();
}
}

}
Datos.Provincias
using AccesoDatos;//DLL hecho por mi por el acceso de a la base(MS SQL Server 2008 Express)
namespace Localidades.Datos{
class Provincias:AccesoAatos{

}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Continuación de código

Publicado por Juan Manuel Castañeda (71 intervenciones) el 11/02/2010 20:03:26
//SqlDataAdapter sdaProv;
public Provincias()
: base(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Documents and Settings\Administrador\Mis documentos\PaisesProvincias.mdb.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
{
if (sda == null) sda = new SqlDataAdapter[2];
if (dc == null) dc = new List<DataColumn[]>();
while(dc.Count<2)
dc.Add(new DataColumn[1]);
cadsql = new string[2];
traer();

}
public override void guardar()
{
base.guardar();
}
public override void traer()
{

base.traer();
si = 0;
cadsql[si] = "Select * FROM Provincias ORDER BY nombre";
base.traer();
ds.Tables["" + nombretabla() + ""].Columns["IdProvincia"].AutoIncrement = true;
ds.Tables["" + nombretabla() + ""].Columns["IdProvincia"].AutoIncrementSeed = -1;
ds.Tables["" + nombretabla() + ""].Columns["IdProvincia"].AutoIncrementStep = -1;
ds.Tables["" + nombretabla() + ""].Columns["Pais"].AllowDBNull = false;
ds.Tables["" + nombretabla() + ""].Columns["Nombre"].AllowDBNull = false;
ds.Tables["" + nombretabla() + ""].Columns["Pais"].Table.Columns["Nombre"].Unique=true;
ds.EnforceConstraints=true;
}
}

AccesoDatos.DLL
using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
namespace AccesoDatos
{

public abstract class AccesoADatos
{
public static SqlConnection cn;
protected SqlDataAdapter[] sda;
protected string[] cadsql;
protected List<DataColumn[]> dc;
protected DataRelation[] dr;
protected int si;
public int cant;
public DataSet ds;
public AccesoADatos(string cs){
cn = new SqlConnection(cs);
ds = new DataSet();

}
protected string nombretabla() {
return cadsql[si].Split(' ')[3];
}

public virtual void traer(){

sda[si] = new SqlDataAdapter(cadsql[si], cn);
sda[si].Fill(ds, nombretabla());

}
public virtual void guardar() {
if (ds.HasChanges()) {
ds.AcceptChanges();
SqlCommandBuilder scb = new SqlCommandBuilder(sda[si]);
sda[si].Update(ds, nombretabla());

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ABM No Funciona

Publicado por paola (1 intervención) el 19/04/2010 18:04:08
hola, necesito ayuda con un abm con una base con tres tablas...gracas..lo necesito urgente!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar