Avatar billede tanzaweb Nybegynder
17. marts 2004 - 13:19 Der er 16 kommentarer og
1 løsning

Fejl ved upload i C# namespace name 'filepath' could not be found

Hej jeg får følgende fejl ved en udload af fil til mappe og hvor stien skal lægges ind i databasen derefter.

The type or namespace name 'filepath' could not be found

Her er koden kan nogen se hvad der skal stå istedet for filepath, eller skal det stå andre steder??


void Insert(object Sender, EventArgs E)
    {
    string TheFile = tbvBilled.PostedFile.FileName;
    if (TheFile.Length > 0) {
        string FileType = tbvBilled.PostedFile.ContentType;
        int FileSize = tbvBilled.PostedFile.ContentLength;
        if (FileType != "image/jpeg" & FileType != "image/pjpeg") {
            OurSpan.InnerHtml = "Du kan <b>kun Only Uploade Jpegs.</b> Ikke?";
        }
        else if (FileSize > 11000) {
            OurSpan.InnerHtml = "Du kan ikke uploade en fil større end 10k. Din er størrer.";
        }
        else {
            string filepath = Server.MapPath("") + "\\uploadedfiles\\";
            string filename = TheFile.Substring(TheFile.LastIndexOf("\\")+1);
            string fullpath = filepath + filename;
            try {
                tbvBilled.PostedFile.SaveAs(fullpath);
                OurSpan.InnerHtml = "En fil med navnet <b>" + filename + "</b> blev uploadet succesfuldt<br>";
                OurSpan.InnerHtml += "Det blev uploadet til <b>" + filepath + "</b> directory";
            }
            catch (Exception Exc) {
                OurSpan.InnerHtml = "Fejl ved upload af <b>" + filename + "</b><br>" + Exc.ToString();
            }
        }
       
    }
    else {
        OurSpan.InnerText = "Venligst vælg en fil til upload";
    }
   
    string strvNummer, strvNavn, strvBeskriv, strvBilled, strvPris, strvKategori;
        string strSQL;
        strvNummer = tbvNummer.Text;
        strvNavn = tbvNavn.Text;
        strvBeskriv = tbvBeskriv.Text;
        strvBilled = filepath.ToString();
        strvPris = tbvPris.Text;
        strvKategori = tbvKategori.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;
    }
    void Blank(Object Sender, EventArgs e)
    {
        tbvNummer.Text="";
        tbvNavn.Text="";
        btInsert.Enabled=true;
    }
    void Udskriv(Object Sender, EventArgs e)
    {
        Response.Redirect("varer_admin.aspx");
    }

   
   

</script>

<!-- #INCLUDE FILE="head_file.aspx" -->

<h3>Indtast en ny Varer.</h3>   

    <table width="100%">
        <tr>
            <td width="140">Varer nummer:</td>
            <td><asp:textbox id="tbvNummer" runat="server" Width="350px"/></td>
        </tr>
        <tr>
            <td valign="top">Varer Navn:</td>
            <td valign="top"><asp:textbox ID="tbvNavn" Width="350px" runat="server"/></td>
        </tr>
        <tr>
            <td valign="top">Varer Beskrivelse:</td>
            <td valign="top"><asp:textbox ID="tbvBeskriv" Width="350px" TextMode="MultiLine" Rows="10" runat="server"/></td>
        </tr>
        <tr>
            <td valign="top">Varer Billede:<Br />
                            Upload billed max 10KB</td>
            <td valign="top"><input ID="tbvBilled" Width="350" type="file" runat="server"/></td>
        </tr>
        <tr>
            <td valign="top">Varer Pris:</td>
            <td valign="top"><asp:textbox ID="tbvPris" Width="200px" runat="server"/></td>
        </tr>
        <tr>
            <td valign="top">Varer Kategori:</td>
            <td valign="top"><asp:panel ID="tbvKategori" runat="server"><asp:dropdownlist ID="drpData" DataTextField="kategoriNavn" DataValueField="kategoriId" Width="350px" runat="server"/></asp:panel></td>
        </tr>
        <tr>
            <td colspan="2">
            <asp:Button ID="btInsert" runat="server" Text="Indsæt varer" BackColor="#999900" OnClick="Insert"/>
            <asp:button ID="btBlank" OnClick="Blank" runat="server" Text="Slet felter"/>
            <asp:button ID="btUdskriv" OnClick="Udskriv" runat="server" Text="Gå til Varer administration"/>
            <br />
            <br />
            <br />
            <asp:label ID="lblBesked" runat="server" Font-Bold="true"/>
            <br><span id="OurSpan" runat="server" />
Avatar billede dgivoni Nybegynder
17. marts 2004 - 13:30 #1
din variabel filepath bliver initialiseret inde i en if-saetning, dvs. at dens "scope" kun er if-saetningen og derfor ikke er kendt udenfor den.

Lidt laengere nede benytter du alligevel filepath i saetningen:
strvBilled = filepath.ToString();
og derfor brokker kompileren sig.

For at loese det er du noedt til at flytte flg. linje op foer du begynder paa dine if-saetninger:
string filepath = Server.MapPath("") + "\\uploadedfiles\\";
Avatar billede dgivoni Nybegynder
17. marts 2004 - 13:32 #2
men noget helt andet er om det rent faktisk giver mening at gemme billed-stien i databasen, hvis du ikke er sikker paa om billedet blev uploadet eller ej
Avatar billede dgivoni Nybegynder
17. marts 2004 - 13:33 #3
Hvis du skal loese det, kunne du initialisere filepath inden if-saetningen, men foerst tildele den en vaerdi, der hvor du goer det nu.
Og naar du saa skal til at gemme oplysningerne, tjekker du hvorvidt filepath er null eller ej, og gemmer ikke billedstien, hvis den er null.
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 13:44 #4
Tak nu var det meningen at der så skulle uploades et billede som som vises istedet.

Nu Får jeg denne fejl istedet:

Exception Details: System.Data.OleDb.OleDbException: No value given for one or more required parameters.

Source Error:


Line 71:             myConnection.Open();
Line 72:             OleDbCommand myCommand = new OleDbCommand(strSQL, myConnection );
Line 73:             myCommand.ExecuteNonQuery();
Line 74:             myConnection.Close();
Line 75:             lblBesked.Text ="Du har oprettet en Varer som er " + tbvNavn.Text;

kan nogen se den, jeg er ike sikke på om:

strvNummer = tbvNummer.Text;
        strvNavn = tbvNavn.Text;
        strvBeskriv = tbvBeskriv.Text;
        strvBilled = filepath.ToString();
        strvPris = tbvPris.Text;
        strvKategori = tbvKategori.ToString();

er rigtige
Avatar billede dgivoni Nybegynder
17. marts 2004 - 13:56 #5
Det er din sql-streng som der er problemer med. Proev at debugge ved at saette et breakpoint lige foer du linje 72 og tjek hvad strSQL er paa det tidspunkt.
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 14:01 #6
break;
response.Write (strSQL);


eller?

sorry men jeg er ved at gå lidt kold
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 14:09 #7
Den udskriver denne:

INSERT INTO varelist (vNummer, vNavn, vBeskriv, vBilled, vPris, vKategori) Values (100001, 'Drenge Natdragt Blå', 'Denne nat dragt kan bruges båd af drenge og piger, hvis du vælger drengedragter så får du den i blå', 'c:\inetpub\wwwroot\eHandel\abcdAdmin\uploadedfiles\', 69, System.Web.UI.WebControls.Panel)

Så det tyder på at det er strvKategori = tbvKategori.ToString(); som ikke går igennem, det skal være et tal som går hertil.
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 14:13 #8
værdien der i kommer fra en drop downlist i et <asp:panel skal den så hede noget andet?
Avatar billede dgivoni Nybegynder
17. marts 2004 - 14:21 #9
ja, du er noedt til at finde det valgte item i dropdown-listen, og hente dets vaerdi ud.

F.eks.
dropDownList.SelectedItem.Value
Avatar billede dgivoni Nybegynder
17. marts 2004 - 14:21 #10
og saa skal du have panel-navnet med foran, for at faa adgang til dropdownlisten
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 14:35 #11
altså noget ligende:

strvKategori = tbvKategori.drpData.SelectedItem.Value;

hvor strvKategori = tbvKategori.ToString();
Avatar billede dgivoni Nybegynder
17. marts 2004 - 15:00 #12
ja, det burde virke :)
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 17:54 #13
den siger der ikke findes en defination for drpData ikke findes
Fejlen:
'System.Web.UI.WebControls.Panel' does not contain a definition for 'drpData'

heri:
strvKategori = tbvKategori.drpData.SelectedItem.Value;

Panelet med dropdown ser således ud
Avatar billede tanzaweb Nybegynder
17. marts 2004 - 17:56 #14
Prøver lige igen, eksperten laver åbenbart også fejl.

den siger Panelet ikke indeholder en defination for drpData
Fejlen:
'System.Web.UI.WebControls.Panel' does not contain a definition for 'drpData'

heri:
strvKategori = tbvKategori.drpData.SelectedItem.Value;

Panelet med dropdown ser således ud:

<asp:panel ID="tbvKategori" runat="server"><asp:dropdownlist ID="drpData" DataTextField="kategoriNavn" DataValueField="kategoriId" Width="350px" runat="server"/></asp:panel>
Avatar billede tanzaweb Nybegynder
18. marts 2004 - 09:42 #15
Dgivoni kan du sende et svar så får du nogle points, for all hjælpen.

Har dog stadig fejlen herover
Avatar billede dgivoni Nybegynder
18. marts 2004 - 11:58 #16
Ok, tak.
saa vidt jeg kan se pa et andet spoergsmaal du har stillet, saa har du faaet det loest, eller hvad?
Avatar billede tanzaweb Nybegynder
18. marts 2004 - 12:02 #17
ja jeg har fået det løst, men jeg fik svaret fra asp.net forum før det kom på eksperten, og svaret var lidt bedre end på det andet spørgsmål her.

Dit var rigtigt godt og tak for hjælpen
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