webForumDet fria alternativet

Skriva om funktion?

.NET

5 svar · 554 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

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();
        }
    }
Medlem sedan dec. 19996 721 inlägg
#2

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

Medlem sedan mars 20021 889 inlägg
#3

Heh, jo det är sant. Hur skulle koden se ut om jag sparar "datan" först? :)

Medlem sedan mars 20021 889 inlägg
#4

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

Medlem sedan dec. 19996 721 inlägg
#5
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
Medlem sedan mars 20021 889 inlägg
#6

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

265 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)