Avatar billede kaffekop Nybegynder
20. marts 2003 - 13:37 Der er 16 kommentarer og
1 løsning

Udskrive fra access db (ASP.NET, C#)

Jeg er ved at ændre mine asp sider til asp.net, og det skal self drille lidt indtil man kommer igang. Indtil videre har jeg lavet dette stykke kode, som skal udskrive fra en access db.

Jeg får en fejl: "Server Error in '/' Application", og jeg har en mistanke om at stien til min db (DATASOURCE) er forkert så db ikke findes. Fejlmeddelelsen er ikke specificeret yderligere.

Er der en som umiddelbart kan se hvad der er galt?

<script language="C#" runat="server">
    void Page_Load(Object sender, EventArgs e)
    {
        OleDbConnection objConn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=" + Server.MapPath("../db/db1.mdb"));

        String sql_nyhed=" SELECT * FROM nyheder ORDER BY id DESC";
        OleDbCommand objCmd=new OleDbCommand(sql_nyhed, objConn);
        objConn.Open();
        OleDbDataReader dataReader;
        dataReader=objCmd.ExecuteReader();

        Response.Write("<TABLE cellSpacing='0' cellPadding='3' border='0' width='200'>");
        while (dataReader.Read())
        {
            Response.Write("<TR><TD><P class='nyhed_txt'>");
            Response.Write("<span class='nyhed_dato'>");
            Response.Write(dataReader["dato"];
            Response.Write("</span><BR>");
            Response.Write("<span class='nyhed_oskrift'>");
            Response.Write(dataReader["emne"];
            Response.Write("</span><BR>");
            Response.Write(dataReader["indhold"];
            Response.Write("<br><br>");
            Response.Write("</P></TD></TR>");
        }
        objConn.Close();
Response.Write("</TABLE>");
    }
</script>
Avatar billede burningice Nybegynder
20. marts 2003 - 14:10 #1
herm...
1) drop Response.Write og brug controller istedet for... f.eks. vil det være bedre at udskrive ovenstående i en repeater istedet :)
2) kan det ikke passe at der står noget om at rette i web.config-filen så du kan se fejlene remote?
Avatar billede kaffekop Nybegynder
20. marts 2003 - 14:26 #2
Yes, jeg ved Response.Write er en oldie, men jeg vil lige have dette til at virke først. (Måske har du et tip til hvordan man smartest får samme output)

Jeg har lavet en web.config, og så at jeg havde glemt nogle paranteser ved Response.write, men nu er der en anden fejl: "Exception Details: System.Data.OleDb.OleDbException: Could not find installable ISAM."
Avatar billede kaffekop Nybegynder
20. marts 2003 - 14:31 #3
Fejlen er i linie 33.

Line 31:         String sql_nyhed=" SELECT * FROM nyheder ORDER BY id DESC";
Line 32:        OleDbCommand objCmd=new OleDbCommand(sql_nyhed, objConn);
Line 33:        objConn.Open();
Line 34:        OleDbDataReader dataReader;
Line 35:         dataReader=objCmd.ExecuteReader();
Avatar billede burningice Nybegynder
20. marts 2003 - 14:40 #4
auch.. prøv lige at læs den her http://www.mvps.org/access/bugs/bugs0017.htm
Avatar billede kaffekop Nybegynder
20. marts 2003 - 14:44 #5
Ok det vil sige at den fejl reelt ligger hos mit web hotel?
Avatar billede kaffekop Nybegynder
20. marts 2003 - 14:46 #6
Eller måske en fejl i den .MDB jeg har uploadet?
Avatar billede burningice Nybegynder
20. marts 2003 - 14:52 #7
kaffekop>> som jeg læser det, så er fejl i ADODB driveren, på den computer du køre siden fra... så ja, i dit tilfælde er det webudbyderen.
Avatar billede kaffekop Nybegynder
20. marts 2003 - 14:59 #8
Fint, jeg tager kontakt til dem. Nu hvor jeg har fat i dig, har du så et hurtigt alternativ til Response.Write, så jeg kan få samme output som før? Self kun hvis du lige har noget i ærmet, ellers opretter jeg bare et nyt spm.
Avatar billede kaffekop Nybegynder
20. marts 2003 - 15:01 #9
hov
Avatar billede burningice Nybegynder
20. marts 2003 - 15:07 #10
ja.. en repeater:

void Page_Load(Object sender, EventArgs e) {

OleDbConnection objConn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=" + Server.MapPath("../db/db1.mdb"));

String sql_nyhed=" SELECT * FROM nyheder ORDER BY id DESC";
        OleDbCommand objCmd=new OleDbCommand(sql_nyhed, objConn);
        objConn.Open();
        OleDbDataReader dataReader = objCmd.ExecuteReader();

myrepeater.DataSource = dataReader;

}

<asp:repeater ID="rptMyRepeater" runat="server">
    <headerTemplate>
        <table width="800">
            <tr style="background-color:aabbcc">
                <th width="200">Dato</th>
                <th width="500">Emne</th>
                <th width="100">Indhold</th>
            </tr>
    </headerTemplate>
   
    <ItemTemplate>
        <tr style="background-color:ccbbaa">
            <td><%# DataBinder.Eval(Container.DataItem, "dato") %></td>
            <td><%# DataBinder.Eval(Container.DataItem, "emne") %></td>
            <td><%# DataBinder.Eval(Container.DataItem, "indhold") %></td>
        </tr>
    </ItemTemplate>
   
    <FooterTemplate>
        </table>
    </FooterTemplate>
</asp:repeater>
Avatar billede kaffekop Nybegynder
20. marts 2003 - 15:08 #11
cyberfessor>> Hvis du lige laver et svar, så får du nogle points. Du gav mig et hint om web.config, som fik mig videre i processen. Det var sådan set svar på mit oprindelige spm.
Avatar billede kaffekop Nybegynder
20. marts 2003 - 15:10 #12
Super cool, det vil jeg lige kigge på. Det er lige præcis hvad jeg skal bruge for at komme videre med mit .NET projekt
Avatar billede burningice Nybegynder
20. marts 2003 - 15:24 #13
svar :) og held og lykke med dit videre arbejde :)
Avatar billede kaffekop Nybegynder
21. marts 2003 - 12:34 #14
Jeg fandt fejlen som udløste denne fejl: "Exception Details: System.Data.OleDb.OleDbException: Could not find installable ISAM."

DATASOURCE skal være i to ord, altså DATA SOURCE.

En anden ting som kunne være værd at vide er, at stien til databasen skal skrives således i c#

OleDbConnection objConn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=D:\\mappe\\mappe\\db1.mdb");

backslash er altså \\

(placeringen af db er self relativ)

Synes bare jeg ville sige det, det kunne jo være at der var andre som stødte på problemet :-)
Avatar billede burningice Nybegynder
21. marts 2003 - 13:29 #15
kaffekop>> hvis du sætter et @ foran din streng slipper du for at bruge dobbelt \:

OleDbConnection objConn = new OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE="+ @"D:\mappe\mappe\db1.mdb");
Avatar billede kaffekop Nybegynder
21. marts 2003 - 14:02 #16
aahh smart, ja man bliver klogere hver dag :-)
Avatar billede burningice Nybegynder
21. marts 2003 - 14:09 #17
:) det gør man jo... er det ikke det som er det fede ved at leve ? ;)

ved du hvorfor man egentlig skal bruge to \'er? det kommer sig af at \ er en escape-character, der gør at man kan skrive special characters inde i en streng f.eks. \", \n (ny linje) m.fl... derfor skal du skrive \\ da et enkelt \ ikke er noget tegn. Ved at bruge @ foran en streng fortæller du at du ikke vil bruge den her escape-character, og du kan derfor skrive \ uden problemer :)
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