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 · 554 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;
:q
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