Avatar billede Slettet bruger
25. august 2010 - 10:27 Der er 8 kommentarer

Sætte en int i min løkke

Godformiddag..

Jeg skulle høre hvorfor det ikke kan lade sig gøre at få et tal med ud fra min integer i min while-løkke.. Jeg har taget et udpluk af koden her:

-----------------------------------------------------------------

        Bestilling best = new Bestilling();
        DataTableReader dtr = new DataTableReader(table);
        int antalPicutre = 0;
        int antalYearBook = 0;
        int antalRabatto = 0;
       
        while (dtr.Read())
        {
            Bestilling temp = new Bestilling();

            if (antalYearBook != 0 && antalPicutre != 0)
            {
                Response.Write("test<br/>");
                antalRabatto++;
            }

        }

        Label1.Text = antalRabatto.ToString();

-----------------------------------------------------------------

Jeg tjekker altså op på om antalYearBook og antalPicutre er forskellig fra 0 på samme tid. Det er de i ca. 5 ud af 10 tilfælde og derfor får jeg også "Response.Write" til at udskrive test 5 gange..

Min antalRabatto integer udskriver dog kun 0, hvor jeg gerne ville have den til at udskrive tallet 5. Hvordan kan det være? :S
Avatar billede Syska Mester
25. august 2010 - 10:44 #1
hmmmm ...

hvad sker der hvis du gør:
Response.Write(string.Format("antalRabatto: {0}<br/>", antalRabatto);

I stedet for din "test<br />"

Der er som sådan intet der burde gøre at antalRabatto ikke bliver større.

For sjov ... kan du også prøve:
antalRabatto = 10;
Bare for at se om den kommer derind måske ...

Ja ... og den gyldne ... sæt et break point derinde, og se om den reelt set også stiger i værdi for hvert gennemløb ... også for at sikre at den kommer den linje kode ...

mvh
Avatar billede Syska Mester
25. august 2010 - 10:47 #2
Hallo, det er jo klart ... de 2 værdier er altid 0 ... du laver jo aldrig nogen assigment til dem ....

Du sætter dem alle 3 til 0, og derefter bruger du dem ikke ...

Så din kode udskriver heller ikke nogen ... det kan simpelthen ikke lade sig gøre ...
Avatar billede Slettet bruger
25. august 2010 - 11:01 #3
Jeg glemte måske lige at tilføje at dette står oven over:

-----------------------------------------------------------------

            if (dtr["Picture"].ToString() == "True")
            {
                antalPicutre++;
                temp.Picture = true;
            }
            if (dtr["BlaaBog"].ToString() == "True")
            {
                antalYearBook++;
                temp.YearBook = true;
            }

----------------------------------------------------------------

Så værdierne skulle meget gerne blive ændret :)

Men jeg prøver lige dine første forslag og vender tilbage hurtigst muligt!
Avatar billede Slettet bruger
25. august 2010 - 11:14 #4
buzz:

Jeg har prøvet med simple variable som "antalRabatto = 10", men her får jeg desværre stadig 0 udskrevet..

Hvis jeg prøver med "Response.Write(string.Format("antalRabatto: {0}<br/>", antalRabatto));" får jeg disse resultater:

---------------------------------------------

antalRabatto++;
Response.Write(string.Format("antalRabatto: {0}<br/>", antalRabatto));

antalRabatto: 1
antalRabatto: 2
antalRabatto: 3
antalRabatto: 1
antalRabatto: 1

---------------------------------------------

Response.Write(string.Format("antalRabatto: {0}<br/>", antalRabatto));
antalRabatto++;

antalRabatto: 0
antalRabatto: 1
antalRabatto: 2
antalRabatto: 0
antalRabatto: 0

---------------------------------------------
Avatar billede Syska Mester
25. august 2010 - 11:18 #5
Du må jo have noget mere kode et sted son sætter "antalRabatto" til 0 ...

Virker lidt som om det ikke er alt din kode vi får at se :-)

mvh
Avatar billede Slettet bruger
25. august 2010 - 11:27 #6
Jeg vil gerne smide hele .cs filen op, men var bare bange for at det var for uoverskueligt så :/ Men her er det meste af .cs filen som jeg lige kan se er relevant for det pågældende:

-------------------------------------------------------------



public partial class Administration: System.Web.UI.Page
{
    int totalPictureSum = 0;
    int totalYearBookSum = 0;

    int totalPictureAntal = 0;
    int totalYearBookAntal = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            FillOversigt(Request.Params["HoldType"]);
        }
    }

    private void FillOversigt(string holdType)
    {
        switch (holdType)
        {
            case "BA":
                FillBa();
                break;
            case "IK":
                FillIK();
                break;
        }
    }

    private void FillBa()
    {
        OversigtIKTable.Visible = false;

        Commentasks cmt = new Commentasks();
        List<KeyValuePair<int, string>> holdID = new List<KeyValuePair<int, string>>();
        List<OversigtsHolder> holdOversigter = new List<OversigtsHolder>();

        string query = "SELECT * FROM tbl_Instructor";
       
        DataTable dt = cmt.db_SELECT_DT(query);
        DataTableReader dtr = new DataTableReader(dt);
        while (dtr.Read())
        {
            KeyValuePair<int, string> hold = new KeyValuePair<int, string>(Int32.Parse(dtr["TeamID"].ToString()), dtr["TeamName"].ToString());
            holdID.Add(hold);
        }

        query = "";
        dt = null;
       
        foreach (KeyValuePair<int,string> pair in holdID)
        {
            OversigtsHolder holder = new OversigtsHolder();
            holder.Type = Bestillinger.StudentType.Ba;
            holder.HoldId = pair.Key;
            holder.HoldNavn = pair.Value;

            query = "SELECT * FROM tbl_PersonligBestilling INNER JOIN tbl_Person ON tbl_Person.StudyNumber = tbl_PersonligBestilling.StudyNumber WHERE tbl_Person.RusHoldID='" + pair.Key + "' AND tbl_Person.Deleted='0'";
            dt = cmt.db_SELECT_DT(query);
            holder = DataTableToOversigtsHolder(dt, holder);
            holdOversigter.Add(holder);
        }

        indsæt2NedersteLinier(holdOversigter);
       
        OversigtBA.DataSource = holdOversigter;
        OversigtBA.DataBind();

    }


    private OversigtsHolder DataTableToOversigtsHolder(DataTable table, OversigtsHolder holder)
    {
        Bestilling best = new Bestilling();
        DataTableReader dtr = new DataTableReader(table);
        int antalPicutre = 0;
        int antalYearBook = 0;
        int antalRabatto = 0;
       
        while (dtr.Read())
        {
            Bestilling temp = new Bestilling();

            if (dtr["Picture"].ToString() == "True")
            {
                antalPicutre++;
                temp.Picture = true;
            }
            if (dtr["BlaaBog"].ToString() == "True")
            {
                antalYearBook++;
                temp.YearBook = true;
            }
            if (antalYearBook != 0 && antalPicutre != 0)
            {
                antalRabatto++;
                Response.Write(string.Format("antalRabatto: {0}<br/>", antalRabatto));               
            }
        }


        holder.PictureSum = (Bestilling.PicturePrice * antalPicutre);
        holder.YearBookSum = (Bestilling.YearbookPrice * antalYearBook);

        Label1.Text = antalRabatto.ToString();

        totalPictureSum += holder.PictureSum;
        totalYearBookSum += holder.YearBookSum;

        totalPictureAntal += antalPicutre;
        totalYearBookAntal += antalYearBook;

        return holder;
    }

}


-------------------------------------------------------------
Avatar billede Slettet bruger
25. august 2010 - 12:03 #7
Nå.. Jeg endte med at finde en anden løsning nu, som godt kunne gå an..

Men smid et svar, så du kan få points for at du i hvert fald forsøgte at give en hånd med mester ;)
Avatar billede Syska Mester
25. august 2010 - 12:29 #8
Svar.

Men jeg ville gå langt væk fra DataTable, lang tid siden jeg havde set dem ... og så måske finde en ORM ( NHibernate, Linq2Sql, EF4, SubSunic og hvad der nu ellers findes )

Vil gøre dit liv meget nemmere ...

mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Udviklings- og Forenklingsstyrelsen

Controller til økonomi og compliance

Udviklings- og Forenklingsstyrelsen

Konsulenter til strategi-implementering i nyt PMO-kontor

Udviklings- og Forenklingsstyrelsen

Testmanager til Partsrepræsentation

Metroselskabet og Hovedstadens Letbane

Cyber Security Konsulent

Unik System Design A/S

Head of Internal IT