Tabellen 0 blev ikke fundet.

Her kan du få hjælp og stille spørgsmål til andre programmeringssprog!
Besvar
pohjola251
Entusiast
Entusiast
Indlæg:26
Tilmeldt:1. nov 2013, 21:53
Kontakt:
Tabellen 0 blev ikke fundet.

Indlæg af pohjola251 » 22. sep 2016, 20:15

hejsa
jeg har et problem jeg bare ikke kan løse, jeg bliver ved med at få den her fejl og lige meget hvad jeg gør så kan jeg ikke løse den, jeg ved godt det er en del kode at overskue men så mangler der ikke noget,

her er min fejl.

Tabellen 0 blev ikke fundet.

hele stakssporingen
Serverfejl i programmet '/'.

Tabellen 0 blev ikke fundet.

Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få flere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.IndexOutOfRangeException: Tabellen 0 blev ikke fundet.

Kildefejl:


Linje 27: objConn.Close();
Linje 28:
Linje 29: return objDs.Tables[0];
Linje 30:
Linje 31: }

Kildefil: c:\Users\mikk032r\Dropbox\web17 projekt\web17\App_Code\DbAccess.cs Linje: 29

Staksporing:

Kode: Vælg alt

[IndexOutOfRangeException: Tabellen 0 blev ikke fundet.]
   System.Data.DataTableCollection.get_Item(Int32 index) +79
   DbAccess.GetData(SqlCommand cmd) in c:\Users\mikk032r\Dropbox\web17 projekt\web17\App_Code\DbAccess.cs:29
   sliderFac.SletSliderImg() in c:\Users\mikk032r\Dropbox\web17 projekt\web17\App_Code\sliderFac.cs:45
   admin_Default.Page_Load(Object sender, EventArgs e) in c:\Users\mikk032r\Dropbox\web17 projekt\web17\admin\Default.aspx.cs:39
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51
   System.Web.UI.Control.OnLoad(EventArgs e) +95
   System.Web.UI.Control.LoadRecursive() +59
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678

Versionsoplysninger: Microsoft .NET Framework version:4.0.30319; ASP.NET version:4.6.1055.0.

[b]Javascript i headeren til mine tabs[/b]
   <%-- JS TIL AT HOLDFE DE FORSKELLIGE TABS ÅBNE MED  NÅR DER KLIKKES PÅ KNAPPEN GEM  --%>
    <script type="text/javascript">
        $(document).ready(function () {
            var tab = document.getElementById('<%= hidTAB.ClientID%>').value;
            $('#myTabs a[href="' + tab + '"]').tab('show');
        });
    </script>

[b]Min html opmærkning[/b]
    <%-- HIDDENFIELD --%>
    <asp:HiddenField ID="hidTAB" runat="server" Value="#profil" />

    <h4>Forsiden</h4>
    <p>Rediger forsiden, slider og bokse </p>
    <!-- TABS -->
    <ul class="nav nav-tabs" role="tablist" id="myTabs">
        <li role="presentation" class="active">
            <a href="#logo" aria-controls="logo" role="tab" data-toggle="tab">Logo</a>
        </li>
        <li role="presentation">
            <a href="#slider" aria-controls="slider" role="tab" data-toggle="tab">Slider</a>
        </li>
    </ul>



    <!-- TABS INDHOLD -->
    <div class="tab-content">


        <%-- LOGO --%>
        <div role="tabpanel" class="tab-pane active" id="logo">
            <h4>Skift logo</h4>
            <p>Skift dit logo max størrelse er 500 x 500 px</p>
            <div class="col-md-4 col-left-margin">
                <asp:Literal ID="litLogo" runat="server" />
                <br />
                <asp:FileUpload ID="fuLogo" runat="server" />
                <br />
                <asp:Button ID="btnGemLogo" CssClass="btn btn-default" OnClick="btnGemLogo_Click" runat="server" Text="Opload" />
                <br />
                <asp:Literal ID="litMsg" runat="server" />
            </div>
        </div>




        <%-- SLIDER --%>
        <div role="tabpanel" class="tab-pane" id="slider">
            <h4>Opload billeder til slideren</h4>
            <p>Billedet størrelse må maks være 1050 x 400px </p>
            <div class="col-md-4 col-left-margin">
                <asp:Literal ID="Literal1" runat="server" />
                <br />
                <asp:TextBox ID="txtbilledeTitel" CssClass="form-control" placeholder="Titel på billedet" runat="server" />
                <asp:RequiredFieldValidator ID="rfvBilledeTitel" CssClass="error" ControlToValidate="txtbilledeTitel" runat="server" ErrorMessage="Du mangler at udfylde feltet" />
                <br />
                <asp:FileUpload ID="fuSlider" runat="server" />
                <br />
                <asp:Button ID="btnSlider" OnClick="btnSlider_Click" CssClass="btn btn-default" runat="server" Text="Opload" />
                <br />
                <asp:Literal ID="Literal2" runat="server" />
            </div>

            <%-- Vis de billeder er i slideren --%>
            <div class="col-left-margin">

                <asp:Literal ID="litVisSliderImg" runat="server" />

            </div>
        </div>
    </div>

[b]Min codebehind.[/b]
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class admin_Default : System.Web.UI.Page
{
    forsidenFac objForsiden = new forsidenFac();
    beskaerimgFac objBeskaerImg = new beskaerimgFac();
    logoFac objLogo = new logoFac();
    sliderFac objSlider = new sliderFac();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {




            #region tjek om tab querystring findes TABS
            //TJEK OM DER FINDES EN QUERYSTRING DER HEDDER - tabID - 
            //HVIS DER GØR SÅ TILFØJ HASHTAG TIL NAVNET I QUERYSTRINGEN
            //SÅ BLIVER DET ID PÅ DEN TAB DER SKAL HOLDES ÅBEN.
            if (!string.IsNullOrEmpty(Request.QueryString["tabID"]))
            {
                //TILFØJ HASHTAG TIL QYERYSTRINGEN
                hidTAB.Value = "#" + Request.QueryString["tabID"];
            }
            #endregion

            #region Tjek om slette id på billederne i slider findes
            if (!string.IsNullOrEmpty(Request.QueryString["imgID"]))
            {
                objSlider._id = Convert.ToInt32(Request.QueryString["imgID"]);
                objSlider.SletSliderImg();
                Response.Redirect("default.aspx");
            }
            #endregion

            #region Logo
            DataRow DrHentLogo = objForsiden.HentLogo();
            litLogo.Text += "<a data-lightbox='logo' href='../img/logo/" + DrHentLogo["fldImg"] + "' ><img src='/img/logo/" + DrHentLogo["fldImg"] + "' class='logo'/></a>";
            #endregion
            #region Vis slider billeder
            litVisSliderImg.Text += "<div class='row'>";
            DataTable DtSliderImg = objSlider.SliderImg();

            foreach (DataRow drSliderImg in DtSliderImg.Rows)
            {
                litVisSliderImg.Text += "<div class='col-sm-2 col-md-2'>";
                litVisSliderImg.Text += "<div class='thumbnail thumbnail-padding'>";
                litVisSliderImg.Text += "<img src='/img/slider/" + drSliderImg["fldImg"] + "' class='backend-vis-slider-img'/>";
                litVisSliderImg.Text += "<div class='caption'>";

                litVisSliderImg.Text += "<a href='default.aspx?imgID=" + drSliderImg["fldId"] + "' class='btn btn-default btn-slider-slet' role='button'>Rediger</a>";
                litVisSliderImg.Text += "</div>";
                litVisSliderImg.Text += "</div>";
                litVisSliderImg.Text += "</div>";
            }
            litVisSliderImg.Text += "</div>";





            #endregion
        }
    }

    protected void btnGemLogo_Click(object sender, EventArgs e)
    {
        //Laver en unik nøgler til billedet
        string guid = Guid.NewGuid().ToString();

        //TJEKKER OM DER LIGGER EN FIL I FILEUPLOAD
        if (fuLogo.HasFile)
        {
            //LAVER EN VARIABEL TIL AT TJEKKE FIL ENDELSE PÅ FILERNE MED
            string extension = System.IO.Path.GetExtension(fuLogo.FileName.ToLower());

            //TILLADER KUN DE HER FILENDELSER I AT BLIVE OPLOADET
            if (extension == ".jpg" || extension == ".png" || extension == ".JPG" || extension == ".jpeg" || extension == ".svg")
            {

                //Tjek efter det logo der er i forevejen og slet det inden det nye oploades
                //TJEK OM DER FINDES ET PROFIL BILLEDE I MAPPEN
                DataRow drHentLogo = objLogo.LogoImg();
                if (File.Exists(Server.MapPath(@"~\\/img/logo/" + drHentLogo["fldImg"])))
                {
                    //SLET DET BILLEDE SOM ER I FOOREVEJEN I MAPPEN OG NAVNET I DATABASEN
                    File.Delete(Server.MapPath(@"~\\/img/logo/" + drHentLogo["fldImg"]));
                }
                //JEG LAVER EN VAIRABEL DER SKAL INDEHOLKDE BILLEDENAVN OG EN GUID
                //DET GØR BILLEDETS NAVN UNIK OG KAN DERFOR OPLOADE FLERE AF SAMME BILLEDE
                string billedenavn = guid + fuLogo.FileName;

                //SKALER BILLEDET SÅ DET IKKE BLIVER STØRREN END 500PX X 500PX
                //Opret en midlertidig filsti
                string tempFilSti = Server.MapPath("/img/temp/" + billedenavn);

                //Lav så en ny filsti som det skal gemmes i.
                string NyFilSti = Server.MapPath("/img/logo/" + billedenavn);

                //Gem så billede i den nye filsti
                fuLogo.SaveAs(tempFilSti);

                //Beskær billedet og gem det i den nye filsti
                objBeskaerImg.billedeResize(tempFilSti, NyFilSti, 500, 500);
                File.Delete(tempFilSti);


                //sÅ SKAL DET HELE GEMMES I DATABASEN
                objLogo._img = billedenavn;
                objLogo.OpdaterSliderImg();
                Response.Redirect("Default.aspx");
            }
            else
            {
                //HVIS DET ER ET FORKERT FILFORMAT SKAL BRUGEREN HAVE BESKED
                litMsg.Text = "<p class='error'>Forkert filformat</p>";
            }
        }
        else
        {
            //HVIS IKKE DER ER VALGT EN FIL SKAL BRUGEEN HAVE BESKED
            litMsg.Text = "<br /><span class='error'>Vælg venligst en fil</span>";
        }
    }

    protected void btnSlider_Click(object sender, EventArgs e)
    {
        // hidTAB.Value = "#slider" - Id på den tab den skal holde åben
        hidTAB.Value = "#slider";


        //Laver en unik nøgler til billedet
        string guid = Guid.NewGuid().ToString();

        //TJEKKER OM DER LIGGER EN FIL I FILEUPLOAD
        if (fuSlider.HasFile)
        {
            //LAVER EN VARIABEL TIL AT TJEKKE FIL ENDELSE PÅ FILERNE MED
            string extension = System.IO.Path.GetExtension(fuSlider.FileName.ToLower());

            //TILLADER KUN DE HER FILENDELSER I AT BLIVE OPLOADET
            if (extension == ".jpg" || extension == ".png" || extension == ".JPG" || extension == ".jpeg" || extension == ".svg")
            {
                //JEG LAVER EN VAIRABEL DER SKAL INDEHOLKDE BILLEDENAVN OG EN GUID
                //DET GØR BILLEDETS NAVN UNIK OG KAN DERFOR OPLOADE FLERE AF SAMME BILLEDE
                string billedenavn = guid + fuSlider.FileName;

                //SKALER BILLEDET SÅ DET IKKE BLIVER STØRREN END 500PX X 500PX
                //Opret en midlertidig filsti
                string tempFilSti = Server.MapPath("/img/temp/" + billedenavn);

                //Lav så en ny filsti som det skal gemmes i.
                string NyFilSti = Server.MapPath("/img/slider/" + billedenavn);

                //Gem så billede i den nye filsti
                fuSlider.SaveAs(tempFilSti);

                //Beskær billedet og gem det i den nye filsti
                objBeskaerImg.billedeResize(tempFilSti, NyFilSti, 1050, 400);
                File.Delete(tempFilSti);


                //sÅ SKAL DET HELE GEMMES I DATABASEN
                objSlider._img = billedenavn;
                objSlider._text = txtbilledeTitel.Text;
                objSlider.NySlider();
                Response.Redirect("Default.aspx?tabID=" + "slider" + "");

            }
            else
            {
                //HVIS DET ER ET FORKERT FILFORMAT SKAL BRUGEREN HAVE BESKED
                litMsg.Text = "<p class='error'>Forkert filformat</p>";
            }
        }
        else
        {
            //HVIS IKKE DER ER VALGT EN FIL SKAL BRUGEEN HAVE BESKED
            litMsg.Text = "<br /><span class='error'>Vælg venligst en fil</span>";
        }
    }
}

pohjola251
Entusiast
Entusiast
Indlæg:26
Tilmeldt:1. nov 2013, 21:53
Kontakt:

Re: Tabellen 0 blev ikke fundet.

Indlæg af pohjola251 » 23. sep 2016, 22:21

jeg ved godt min fil var meget lang og undskyld for det :)
jeg har løst mit problem og skulle nogen have det samme problem så er min løsning her.

jeg bruger en data acces fil som sørger for jeg har forbindelse med databasen, og der i har jeg 2 metoder jeg kalde i min andre metoder alt efter om jeg vil slette oprette eller rediger noget og jeg havde brugt den forkerte metode, den jeg havde brugt hedder GetData(SqlCommand cmd) og den jeg skulle have brugt var ModifyData(SqlCommand cmd) og deri ligger cmd.ExecuteNonQuery(); som var den jeg skulle bruge. så problem løst for mig

Her er min data acces fil hvis nogen kunne have brug for det

Kode: Vælg alt

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

/// <summary>
/// Summary description for DbAccess
/// </summary>
public class DbAccess
{
    readonly string _strDb = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;

    public DataTable GetData(SqlCommand cmd)
    {
        DataSet objDs = new DataSet();

        SqlConnection objConn = new SqlConnection(_strDb);
        SqlDataAdapter objDa = new SqlDataAdapter();

        cmd.Connection = objConn;
        objDa.SelectCommand = cmd;

        objDa.Fill(objDs);
        objConn.Close();

        return objDs.Tables[0];

    }

    public void ModifyData(SqlCommand cmd)
    {
        //Start modify 
        SqlConnection objConn = new SqlConnection(_strDb);
        cmd.Connection = objConn;
        objConn.Open();
        cmd.ExecuteNonQuery();
        objConn.Close();
    }
}

Besvar