Avatar billede kamak Praktikant
28. september 2004 - 10:28 Der er 19 kommentarer og
1 løsning

Indsætte i en MS Access database

Jeg er ved at lave en side hvor man skal kunne gemme nogle nyheder i en database. De skal så vises på en nyhedsside. Jeg har oprettet en MS Access database og manuelt indtastet nogle nyheder i databasen via access. Min nyhedsside virker fint og nyhederne fra databasen vises som de skal.

Problemet er når jeg skal oprette nyheder og gemme dem i databasen. Min kode til at gemme i databasen er her:

            String strConnection = "Provider=Microsoft.Jet.OleDb.4.0;";
            strConnection += @"Data Source=C:\Inetpub\wwwroot\tjeck\DB\db6.mdb";
            OleDbConnection objConn = new OleDbConnection(strConnection);
            string strSQL = "INSERT INTO Nyheder (Overskrift,Nyhed,Dato,Forfatter) VALUES (@overskrift,@nyhed,@dato,@forfatter)";
            OleDbCommand objCmd = new OleDbCommand(strSQL,objConn);
            objCmd.Parameters.Add("@overskrift", txtOverskrift.Text);
            objCmd.Parameters.Add("@nyhed", txtNyhed.Text);
            objCmd.Parameters.Add("@dato", txtDato.Text);
            objCmd.Parameters.Add("@forfatter", txtNavn.Text);
            objConn.Open();
            objCmd.ExecuteNonQuery();
            objConn.Close();

Siden vises fint men når man trykker på knappen der udfører overstående kode får jeg følgende fejlmeddelelse "[OleDbException (0x80004005): Handlingen skal bruge en opdaterbar forespørgsel.]"
Hvis jeg så prøver at åbne min database i access er den pludselig blevet skrivebeskyttet. Jeg har prøvet at oprette en ny database men hver gang jeg trykker på knappen der skal skrive til databasen får jeg fejlen og databasen bliver skrivebeskyttet.
Hvad kan der være galt?
Avatar billede arne_v Ekspert
28. september 2004 - 10:37 #1
Når su mener skrivebeskyttet mener du så at den i Windows Explorer skifter
til ReadOnly eller ?
Avatar billede kamak Praktikant
28. september 2004 - 10:57 #2
nej - det er når jeg forsøger at åbne databasen i Access. Så får jeg en besked med at databasen er skrivebeskyttet. Når jeg i windows højreklikker og ser egenskaber så er attributten skrivebeskyttet sat til nej.
Og databasen bliver ved med at være skrivebeskyttet også efter jeg har lukket alle andre programmer ned. Så det er ikke fordi et andet program bruger den.
Jeg har iøvrigt prøvet på 2 forskellige computere og jeg får fejlen på begge computere.
Avatar billede arne_v Ekspert
28. september 2004 - 11:01 #3
Har du prøvet at repaire databasen ?
Avatar billede kamak Praktikant
28. september 2004 - 11:05 #4
nej - hvordan gør man det? Jeg har prøvet at lave en ny database magen til og ligeså snart jeg kørte koden var den også blevet skrivebeskyttet
Avatar billede arne_v Ekspert
28. september 2004 - 11:21 #5
Det gør du inde fra Access.
Avatar billede maxmuldjord Nybegynder
28. september 2004 - 17:14 #6
Jeg mener at have læst noget i XP sektionen her på exp at det med at filer bliver skrivebeskyttet kan man omgå ved at gå i exploren > funktioner > mappeindstillnger > vis og så fjerne fluebenet i enkel fildeling, jeg tror det var sådan det var men ellers søg på det eller spørg der
Avatar billede kamak Praktikant
29. september 2004 - 10:34 #7
Jeg bruger windows 2000 og der er der ikke et flueben der hedder enkel fildeling. Måske den er placeret et andet sted i win2k?
Men selve koden ser rigtig nok ud ikke?
Avatar billede arne_v Ekspert
29. september 2004 - 21:54 #8
Der er ikke noget i den kode som burde gøre noget slemt ved databasen.
Avatar billede kamak Praktikant
30. september 2004 - 10:48 #9
det er altså meget mystisk
Avatar billede kamak Praktikant
30. september 2004 - 14:16 #10
jeg fordobler pointene til den der kan hjælpe mig med at finde en løsning.
Avatar billede snepnet Nybegynder
30. september 2004 - 17:34 #11
har du databasen liggende i en vs-solution og/eller tilgår du den vha. værktøjerne i vs ?
Avatar billede kamak Praktikant
01. oktober 2004 - 14:23 #12
databasen ligger ikke i en vs-solution. Jeg bruger dreamweaver mx. Jeg har bare oprettet databasen med Access - ingen scripts. Bagefter tilgår jeg databasen fra en codebehind c# fil til en asp.net side. Meningen er at man fra en asp.net side skal kunne indtaste noget i en database. Jeg har ingen problemer med at vise hvad der er i databasen på en asp.net side.
Avatar billede snepnet Nybegynder
01. oktober 2004 - 15:59 #13
en underlig sag du er ude i der.... jeg har lige prøvet dette lille eksempel :

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Web.Mail;

namespace AccessProject
{
    public class _Default : System.Web.UI.Page
    {
        // connectionstring for formattering
        private string connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User Id=admin;Password=;";
               
        // serverformen på siden
        protected HtmlForm Form1;
        protected System.Web.UI.WebControls.Button Button1;
       
        private void Page_Load(object sender, System.EventArgs e)
        {
            Response.Write(this.Page.Request.Path.ToString());
           
            // forbindelsen oprettes (stien sættes vha MapPath(...))
            OleDbConnection connection = new OleDbConnection(String.Format(connectString, Server.MapPath("Data/TestDB.mdb")));
           
            // kommandoobjekt
            OleDbCommand command = new OleDbCommand("SELECT * FROM TblSomething", connection);
           
            // og en adapter
            OleDbDataAdapter adapter = new OleDbDataAdapter(command);
           
            try
            {
                // hent data til dataset
                DataSet ds = new DataSet("SomeDataSet");               
                adapter.Fill(ds);
               
                // lille opdatering - bare for at checke
                ds.Tables[0].Rows[0]["SomeString"] = "En ny tekst";
                OleDbCommandBuilder commandBuilder = new OleDbCommandBuilder(adapter);
                adapter.Update(ds);

                // og lidt til fremvisning her
                DataGrid someGrid = new DataGrid();
                someGrid.DataSource = ds;                   
                someGrid.DataBind();                                           
               
                // ind med griddet ...
                Form1.Controls.Add(someGrid);
            }

            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
        }

        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
    }
}

Der ligger kun en enkelt tabel i databasen, og den hedder TblSomething... du kan bare proppe et autoinkrementerende id i den, og hvad du eller har lyst til... koden genrerer selv update, inserts og deletes.

Du kan da lige checke om du der opstår tilsvarende problemer med dette eksempel...
(jeg har ikke problemer med det her)

mvh
Avatar billede kamak Praktikant
04. oktober 2004 - 15:00 #14
tak - jeg har været væk siden fredag så derfor har jeg ikke kunnet svarer før nu - sorry. Jeg prøver lige eksemplet når jeg kommer hjem. Så skriver jeg om det lykkedes i morgen.
Avatar billede kamak Praktikant
05. oktober 2004 - 10:48 #15
Jeg har prøvet dit eksempel. Når jeg åbner siden står der følgende på skærmen:

/test/default.aspxMicrosoft Jet-databasemotoren kan ikke åbne filen "C:\Inetpub\wwwroot\test\TestDB.mdb". Den er allerede åbnet med udelt adgang af en anden bruger, eller du skal have tilladelse til at vise
dataene./test/default.aspxMicrosoft Jet-databasemotoren kan ikke åbne filen
"C:\Inetpub\wwwroot\test\TestDB.mdb". Den er allerede åbnet med udelt adgang af en anden bruger, eller du skal have tilladelse til at vise dataene.

Det er underligt fordi databasen bliver med 100% sikkerhed ikke brugt af andre og jeg er logget ind som administrator.

Jeg har også prøvet samme eksempel på en anden computer. Her kunne jeg ikke komme til at se siden fordi der poppede en boks frem hvor man skulle skrive login, password og domæne. Dog skal det lige nævnes at denne computer ikke har ms access installeret men det skulle ikke betyde noget.
Begge computere bruger win2k.

Måske virker det fint når jeg engang i næste uge får uploadet det til webserveren. Det er måske bare på min computer det ikke virker.
Avatar billede snepnet Nybegynder
05. oktober 2004 - 15:47 #16
du kan sørge for at der er tilladedelse til at læse og skrive til diret (altså det du kalder test).... du skal formentlig bare tilføje at ASP.NET brugeren har disse rettigheder på folderen.
jeg vil tro det er tilstrækkeligt.
mvh
Avatar billede kamak Praktikant
06. oktober 2004 - 09:46 #17
hvordan gør man det? Er det noget med webconfig filen?
Avatar billede snepnet Nybegynder
06. oktober 2004 - 09:53 #18
nej det er i filsystemet.
højreklik på en mappe, og vælg egenskaber... så skulle du der få et fanblad der hedder noget med sikkerhed.
du kan så derinde fra tilføje en nu bruger (ASPNET) og give den de nødvendige rettigheder.
mvh
Avatar billede kamak Praktikant
07. oktober 2004 - 09:50 #19
Nu virker det. Det var det med rettighederne. Tusind tak for hjælpen.
Lav et svar. Der er ekstra point her: http://www.eksperten.dk/spm/547748.
Mange tak igen.
Avatar billede snepnet Nybegynder
07. oktober 2004 - 09:51 #20
hej kamak - et stk. svar.
mvh
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