Avatar billede tanzaweb Nybegynder
18. marts 2004 - 12:36 Der er 9 kommentarer og
1 løsning

Forespørgselsværdier og destinationsfelter er ikke det samme C#

Jeg får følgende fejl:

Antallet af forespørgselsværdier og destinationsfelter er ikke det samme.

i denne kodestring strvNummer, strvNavn, strvBeskriv, strvBilled, strvKategori;
    float  strvPris;
        string strSQL;
        DropDownList myDrpBox;
        myDrpBox = (DropDownList) tbvKategori.FindControl("drpData");
        strvNummer = tbvNummer.Text;
        strvNavn = tbvNavn.Text;
        strvBeskriv = tbvBeskriv.Text;
        strvBilled = fullpath.ToString();
        strvPris = Convert.ToSingle(tbvPris.Text);
        strvKategori = myDrpBox.SelectedItem.Value.ToString();
        strSQL = "INSERT INTO varelist (vNummer, vNavn, vBeskriv, vBilled, vPris, vKategori) Values (";
            strSQL += strvNummer + ", '";
            strSQL += strvNavn + "', '";
            strSQL += strvBeskriv + "', '";
            strSQL += strvBilled + "', ";
            strSQL += strvPris + ", ";
            strSQL += strvKategori + ")";
            //Response.Write(strSQL);
            OleDbConnection myConnection = new OleDbConnection(@"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Inetpub\wwwroot\eHandel\abcd.mdb" );
            myConnection.Open();
            OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
            myCommand.ExecuteNonQuery();
            myConnection.Close();
            lblBesked.Text ="Du har oprettet en Varer som er " + tbvNavn.Text;
            btInsert.Enabled=false;


hvis jeg indtaser et beløb som 99,95 så laver den denne fejl, men hvis jeg indtaster beløbet som 99.95 så går den igennem, men laver beløbet om til 9.995,00 hvad kan fejlen være her?
Avatar billede tanzaweb Nybegynder
18. marts 2004 - 12:37 #1
ups der skulle have stået

i denne kode "linjeskift"

string strvNumer,..................
Avatar billede dgivoni Nybegynder
18. marts 2004 - 12:45 #2
hvis du har et komma (,) tror den at det drejer sig om to forskellige vaerdier, dvs. at du baade vil indsaette 99 og 95 i to forskelle kolonner i databasen.
Eftersom du kun definerer 5 kolonner, men den "opdager" at der er 6 vaerdier, brokker den sig med den fejlmeddelelse du har faaet.
Avatar billede dgivoni Nybegynder
18. marts 2004 - 12:47 #3
saa du er noedt til at indsaette med punktum, som decimalseparator (.) i stedet for komma (,)

Evt. kan du lave en replace paa strvPris hvor du erstatter , med .
f.eks:
strSQL += strvKategori.Replace("," , ".");
Avatar billede tanzaweb Nybegynder
18. marts 2004 - 12:56 #4
Skal den så sættes ind i sådan her:

strSQL = "INSERT INTO varelist (vNummer, vNavn, vBeskriv, vBilled, vPris, vKategori) Values (";
            strSQL += strvNummer + ", '";
            strSQL += strvNavn + "', '";
            strSQL += strvBeskriv + "', '";
            strSQL += strvBilled + "', ";
            strSQL += strvPris + ", ";
            strSQL += strvKategori.Replace("," , ".") + ")";
            //Response.Write(strSQL);

så siger den nemlig det samme
Avatar billede dgivoni Nybegynder
18. marts 2004 - 13:34 #5
hehe, det er fordi jeg skrev strvKategori i stedet for strvPris, sorry
Avatar billede tanzaweb Nybegynder
18. marts 2004 - 13:51 #6
Jeg få nu følgende fejl 'float' does not contain a definition for 'Replace'

Jeg har et update script hvor jeg bruger:

void UpDateCommand(object sender, System.Web.UI.WebControls.CommandEventArgs e)
    {
    OleDbConnection OurConnection;
    OleDbCommand OurCommand;
    string nyhedId = e.CommandArgument.ToString();
    OurConnection = new
    OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Inetpub\wwwroot\eHandel\abcd.mdb");
    OurCommand = new OleDbCommand ("UPDATE varelist SET vNummer = @vNummer, vNavn = @vNavn, vBeskriv = @vBeskriv, vPris = @vPris WHERE vId = " + nyhedId, OurConnection);
    OurCommand.Parameters.Add("@vNummer", OleDbType.VarChar).Value = UpdatevNummer.Text;
    OurCommand.Parameters.Add("@vNavn", OleDbType.VarChar).Value = UpdatevNavn.Text;
    OurCommand.Parameters.Add("@vBeskriv", OleDbType.LongVarChar).Value = UpdatevBeskriv.Text;
    OurCommand.Parameters.Add("@Pris", OleDbType.Currency).Value = UpdatevPris.Text;
    OurConnection.Open();
    OurCommand.ExecuteNonQuery();
    OurConnection.Close();
    LoadData();

Og her skriver den det godt ind med OurCommand.Parameters.Add("@Pris", OleDbType.Currency).Value = UpdatevPris.Text;

Nogle forslag
Avatar billede dgivoni Nybegynder
18. marts 2004 - 13:59 #7
nej, ok, du konverterer det fra en string i tekstboks til float og derefter tilbage til en streng. Enten kan du lade vaere med det, dvs. direkte indsaette
strSQL += tbvPris.Text.Replace(",", ".") + ", ";

eller ogsaa skal du kontrollere hvordan din pris (float-variabel) bliver konverteret til en streng. Det kan jeg ikke lige huske hvordan man goer, men jeg undersoeger det lige...
Avatar billede dgivoni Nybegynder
18. marts 2004 - 14:10 #8
jeg har fundet en nemmere maade:

strSQL += strvPris.ToString().Replace(",", ".") + ", ";

Det burde virke...
Avatar billede tanzaweb Nybegynder
18. marts 2004 - 14:15 #9
send et svar og pointens er dine
Avatar billede dgivoni Nybegynder
18. marts 2004 - 14:21 #10
okidoki :)
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