28. september 2004 - 10:28Der 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:
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?
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.
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
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?
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.
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;
// 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); }
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)
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.
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.
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
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
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.
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.