1. Du använder aldrig dr2...
2. Du lägger till parametern på fel command
Men, framför allt, plocka ut alla värden i första frågan, och kör bara en reader
5 svar · 574 visningar · startad av trexter
Hur ska jag skriva om funktionen så att den fungerar?
Exception Details: System.InvalidOperationException: There is already an open DataReader associated with this Connection which must be closed first.
public void PlaceHolderFiller() {
if (!Page.IsPostBack)
{
SqlCommand myCommand = new SqlCommand("select StatusID, StatusText from Status where StatusAnvID = @StatusAnvID", myConnection);
myCommand.Parameters.Add("@StatusAnvID", SqlDbType.Int, 10).Value = UserIdentityName[1];
SqlDataReader dr = myCommand.ExecuteReader();
while (dr.Read())
{
SqlCommand myCommand2 = new SqlCommand("select ArendeStatus_Datum from ArendeStatus where ArendeStatus_Status = @ArendeStatus_Status", myConnection);
myCommand.Parameters.Add("@ArendeStatus_Status", SqlDbType.Int, 10).Value = dr["StatusID"];
SqlDataReader dr2 = myCommand2.ExecuteReader();
bool b = (Int32.Parse(dr["StatusID"].ToString()) == Int32.Parse(dr["ArendeStatus_Status"].ToString())) ? true : false;
ListItem l = new ListItem(dr["StatusText"].ToString(), dr["StatusID"].ToString());
l.Selected = b;
this.check.Items.Add(l);
}
dr.Close();
}
}
1. Du använder aldrig dr2...
2. Du lägger till parametern på fel command
Men, framför allt, plocka ut alla värden i första frågan, och kör bara en reader
Heh, jo det är sant. Hur skulle koden se ut om jag sparar "datan" först?
Jag kör på en fulllösning så länge och ändrar när detta fungerar...
public void PlaceHolderFiller() {
if (!Page.IsPostBack)
{
SqlCommand myCommand = new SqlCommand("select StatusID, StatusText from Status where StatusAnvID = @StatusAnvID", myConnection);
myCommand.Parameters.Add("@StatusAnvID", SqlDbType.Int, 10).Value = UserIdentityName[1];
SqlDataReader dr = myCommand.ExecuteReader();
while (dr.Read())
{
SqlCommand myCommand2 = new SqlCommand("select ArendeStatus_Datum, ArendeStatus_Status from ArendeStatus where ArendeStatus_Status = @ArendeStatus_Status", myConnection2);
myCommand2.Parameters.Add("@ArendeStatus_Status", SqlDbType.Int, 10).Value = dr["StatusID"];
SqlDataReader dr2 = myCommand2.ExecuteReader();
bool b = (Int32.Parse(dr["StatusID"].ToString()) == Int32.Parse(dr2["ArendeStatus_Status"].ToString())) ? true : false;
ListItem l = new ListItem(dr["StatusText"].ToString(), dr["StatusID"].ToString());
l.Selected = b;
this.check.Items.Add(l);
}
dr.Close();
}
}
Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present.
bool b = (Int32.Parse(dr["StatusID"].ToString()) == Int32.Parse(dr2["ArendeStatus_Status"].ToString())) ? true : false;
select s.StatusID, s.StatusText, a.ArendeStatus_Datum, a.ArendeStatus_Status from Status s LEFT JOIN ArendeStatus a ON s.StatusID=a.ArendeStatus_Status where StatusAnvID = @StatusAnvID AND
emission;
Den SQL-strängen fungerar tyvärr inte riktigt.
Jag vill ju skriva ut alla poster i "StatusText" och sätta en bock i tillhörande checkbox om värdet finns i tabellen ArendeStatus också. (Eller snarare om ett värde under "StatusID" finns representerat i ArendeStatus_Status).
Som det är nu visas endast StatusText om det även "finns" i ArendeStatus.
edit. Det löste sig
http://www.webforum.nu/showthread.php?p=1174628&accept=yes