Avatar billede kennethv Nybegynder
29. juli 2011 - 11:28 Der er 5 kommentarer og
1 løsning

Must declare the scalar variable "@DeleteAccount"

Hej.

Jeg får en fejlen beskrevet i overskift når jeg trykker på min knap på min website lavet i ASP.Net/C#

    protected void Button1_Click(object sender, EventArgs e)
    {
        createConn(currentDatabase);
        //We create the command to read the database then we will INSERT or UPDATE. 
        mySqlCommand = mySqlConnection.CreateCommand();
        //Here in the command text you put your sql select statment
        mySqlCommand.CommandText = "UPDATE UserInactive SET Reason = @Reason, DateOfBossUpdate = @DateOfBossUpdate, BossUpdate = @BossUpdate, DeleteAccount = @DeleteAccount WHERE SecurityCode = @SecurityCode";
        mySqlCommand.Parameters.Add("@SecurityCode", SqlDbType.VarChar).Value = myid;
//        mySqlCommand.Parameters["@SecurityCode"].Value = myid;
        mySqlCommand.Parameters.Add("@DateOfBossUpdate", SqlDbType.DateTime).Value = DateTime.Now.Date.ToString().Remove(11);
//        mySqlCommand.Parameters["@DateOfBossUpdate"].Value = DateTime.Now.Date.ToString().Remove(11);
        mySqlCommand.Parameters.Add("@BossUpdate", SqlDbType.Bit).Value = false;
//        mySqlCommand.Parameters["@BossUpdate"].Value = false;
     
        if (RadioButton1.Checked)
        {
            mySqlCommand.Parameters.Add("@Reason", SqlDbType.VarChar).Value = REASON.Text.ToUpper();
//            mySqlCommand.Parameters["@Reason"].Value = REASON.Text.ToUpper();
        }
        else
        {
            mySqlCommand.Parameters.Add("@Reason", SqlDbType.VarChar).Value = "";
//            mySqlCommand.Parameters["@Reason"].Value = "";
            mySqlCommand.Parameters.Add("@DeleteAccount", SqlDbType.Bit).Value = true;
//            mySqlCommand.Parameters["@DeleteAccount"].Value = true;
        }
        if (mySqlCommand.ExecuteNonQuery() != -1)
        {
            mySqlCommand.Dispose();
            closeConn();
            Response.Redirect("info.aspx?id=confirm", false);
        }

    }


Hvis jeg sletter DeleteAccount får jeg ikke fejlen. Hvad går jeg forkert.

Med venlig hilsen
Avatar billede kalp Novice
29. juli 2011 - 12:12 #1
du mangler at lave en linje ala:
mySqlCommand.Parameters.Add("@BossUpdate", SqlDbType.Bit).Value = false;


men hvor du retter @DeleteAccount til og giver den den rette værdi
Avatar billede kalp Novice
29. juli 2011 - 12:14 #2
hov sorry.. du har den, men dit problem er at den ligger i en if else statement.. så du havner ikke i den korrekte statement:)

du kan oprette den begge steder evt... og hvis ikke den skal bruges begge steder skal du jo lave en if else på din sql også.. så du kan fjerne den der
Avatar billede kalp Novice
29. juli 2011 - 12:16 #3
f.eks sådan her..
men det kan løses på mange måde.. kommer an på hvad den radiobutton betyder:) du har kaldt den for radiobutton så jeg kan ikke helt regne det ud;)

protected void Button1_Click(object sender, EventArgs e)
    {
        createConn(currentDatabase);
        //We create the command to read the database then we will INSERT or UPDATE. 
        mySqlCommand = mySqlConnection.CreateCommand();
        //Here in the command text you put your sql select statment
        mySqlCommand.Parameters.Add("@SecurityCode", SqlDbType.VarChar).Value = myid;
        mySqlCommand.Parameters.Add("@DateOfBossUpdate", SqlDbType.DateTime).Value = DateTime.Now.Date.ToString().Remove(11);
        mySqlCommand.Parameters.Add("@BossUpdate", SqlDbType.Bit).Value = false;
     
        if (RadioButton1.Checked)
        {
            mySqlCommand.Parameters.Add("@Reason", SqlDbType.VarChar).Value = REASON.Text.ToUpper();
            mySqlCommand.CommandText = "UPDATE UserInactive SET Reason = @Reason, DateOfBossUpdate = @DateOfBossUpdate, BossUpdate = @BossUpdate WHERE SecurityCode = @SecurityCode";
        }
        else
        {
            mySqlCommand.Parameters.Add("@Reason", SqlDbType.VarChar).Value = "";
            mySqlCommand.Parameters.Add("@DeleteAccount", SqlDbType.Bit).Value = true;
            mySqlCommand.CommandText = "UPDATE UserInactive SET Reason = @Reason, DateOfBossUpdate = @DateOfBossUpdate, BossUpdate = @BossUpdate, DeleteAccount = @DeleteAccount WHERE SecurityCode = @SecurityCode";
        }
        if (mySqlCommand.ExecuteNonQuery() != -1)
        {
            mySqlCommand.Dispose();
            closeConn();
            Response.Redirect("info.aspx?id=confirm", false);
        }

    }
Avatar billede kennethv Nybegynder
29. juli 2011 - 12:34 #4
Men hvis jeg fjerner:
mySqlCommand.Parameters.Add("@DeleteAccount", SqlDbType.Bit).Value = true;

fra min IF ELSE statement har jeg ingen problemer. Her tænker jeg på at jeg har denne i min if else:

        if (RadioButton1.Checked)
        {
            mySqlCommand.Parameters.Add("@Reason", SqlDbType.VarChar).Value = REASON.Text.ToUpper();
        }
        else
        {
            mySqlCommand.Parameters.Add("@Reason", SqlDbType.VarChar).Value = "";
        }

"Reason" er da osse i en if else, så hvorfor kan det lad sig gøre. Måske er jeg dum, men min logik forstår det ikke. :)

P.S. Min if..else er lidt anderledes end det jeg skrev tidligere.
Avatar billede kennethv Nybegynder
29. juli 2011 - 12:40 #5
Nåhhh, ja. Selvfølgelig. (Pling)

Tak for det.
Avatar billede kalp Novice
29. juli 2011 - 12:40 #6
ja, men det du bare skal vide er, at det du skriver i din SQL.. altså det du skriver i denne:

mySqlCommand.CommandText = "DIN SQL HER";

hvis du angiver nogle parametrer i den(med @ foran.. som @DeleteAccount, @Reason osv), så forventes det også at du tilføjer dem med  mySqlCommand.Parameters.Add.

Derfor virker @Reason fint for du har den jo med i både din if og else blok:)
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