C sharp - Indice fuera de la matriz

 
Vista:

Indice fuera de la matriz

Publicado por Juan Manuel Castañeda (71 intervenciones) el 08/02/2010 23:28:53
Hola a todos.
En la instrucción * me da esta excepción.

class Provincias:AccesoADatos
{
//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 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;
si++;
cadsql[si] = "Select * FROM Paises ORDER BY nombre";

base.traer();
MessageBox.Show(nombretabla().Substring(0, nombretabla().Length - 2));
dc.ElementAt(si)[0] = ds.Tables["" + nombretabla() + ""].Columns["" + nombretabla().Substring(0, nombretabla().Length - 2) + ""];
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) + ""];*/
dc.ElementAt(si)[0] = ds.Tables["" + nombretabla() + ""].Columns["Id" + nombretabla().Substring(0, nombretabla().Length - 2) + ""];
if (dc.ElementAt(si)[0] == null) Application.Exit();
si--;
ds.Tables["" + nombretabla() + ""].PrimaryKey = dc.ElementAt(si);
MessageBox.Show(ds.Tables[""+nombretabla()+""].Columns[1].ColumnName);
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 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() {
SqlCommandBuilder scb = new SqlCommandBuilder(sda[si]);
sda[si].Update(ds, nombretabla());


}

public abstract void traer(int p);
public virtual void traer(string cond) {
ds.Tables[""+nombretabla()+""].Select(cond);
}
}
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