RE: Alias-Spaltenbezeichner wird nicht akzeptiert

From: Frank Dzaebel (PostAddFranksSeitePunktDe)
Date: 10/10/04


Date: Sun, 10 Oct 2004 01:41:04 -0700

Hallo Veronika,

> ich habe jetzt wieder mal alles durchprobiert komme aber
> zu keinem Ergebnis. Wenn es dir nicht zu viel Mühe macht,
> dann möchte ich dich bitten, die nachfolgende View mal
> durchzusehen. Diese ist Teil meiner SP, doch da taucht das
> Problem auch schon auf. Versuche doch mal, die Alias-
> Spalten anzusprechen. ...

Da hast Du ja ordentlich was reingepackt in Deine SP-Select-Query.
Hier sollten zur besseren Wartbarkeit, Performance und Übersicht
Views erzeugt werden, die ja auch indiziert werden können.
Das aber nur nebenbei.

In Deiner SP-Select-Query ist kein ".. as PersNr" oder ".. as Test_Spalte"
enthalten. Dewegen kanns schon mal nicht gehen.

Ich habe mal ein kleines Testprojekt gemacht (angelehnt an Deinen Code) mit
der
Northwind-DB, dass für "jedermann" lauffähig ist. (klappt ohne Probleme) :

private void Form1_Load(object sender, System.EventArgs e)
{
  //ListView erstellen
  lvMonatsstunden.View = View.Details;
  lvMonatsstunden.AllowColumnReorder = true;
  lvMonatsstunden.FullRowSelect = true;
  lvMonatsstunden.GridLines = true;
  lvMonatsstunden.Columns.Add("PersNr", 50, HorizontalAlignment.Center);
  lvMonatsstunden.Columns.Add("Test_Spalte", 90, HorizontalAlignment.Center);
}
private string NL = System.Environment.NewLine;

private void button1_Click(object sender, System.EventArgs e)
{ // [ Neue gespeicherte Prozedur angelegt ]
  // ALTER PROCEDURE dbo.FranksTest AS
  // select CustomerID + ':)' as PersNr, ContactName+':)' as Test_Spalte
  // from Customers RETURN

  DataTable dt = new DataTable(); //Tabelle aus dem DataSet holen
  dt.Columns.Add(new DataColumn("PersNr" ));
  dt.Columns.Add(new DataColumn("Test_Spalte"));
  
  object[] Objekte = new object[]{};
  sqlConnection1.Open(); //Standard-Northwind-DB
  SqlDataReader myReader = sqlCommand1.ExecuteReader();
  
  while(myReader.Read())
  { DataRow dr = dt.NewRow();
    dr[0] = myReader.GetString(0);
    dr[1] = myReader.GetString(1);
    dt.Rows.Add(dr);
  }
  myReader.Close(); sqlConnection1.Close();

  //ListView Monatsstunden leeren
  lvMonatsstunden.Items.Clear();
  for (int i = 0; i < dt.Rows.Count; i++)
  {
    DataRow drow = dt.Rows[i];
    if (drow.RowState != DataRowState.Deleted)
    {
      ListViewItem lvi = new ListViewItem(drow["PersNr"].ToString());
      lvi.SubItems.Add (drow["Test_Spalte"].ToString());
      lvMonatsstunden.Items.Add(lvi);
    }
  }
}

ciao Frank

--
Dipl.Inf. Frank Dzaebel [MCP C#]