Hej. Er ganske ny udi ASP.NET's favre verden, så ville lige spørge her om der er nogen der kan hjælpe med et mindre problem. Når jeg har en MSAccess db åben i MSAccess (ikke tabel design view) og samtidig foretager en "SELECT * FROM..." i ASP.NET, så for jeg nedenstående fejlmelding - som om ASP forsøger at åbne db'en i exclusive mode. Hvorledes forhindrer jeg dette (problemet er forståeligt nok i ASP koden) ?
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.OleDb.OleDbException: "" kan ikke bruges, fordi filen allerede er i brug.
Desværre tror jeg ikke du har helt ret. Måske min forståelse af hvorledes ASP arbejder ikke svarer til det som jeg er vant til fra Access: Når database filen ikke er åbnet i "udelt" tilstand kan flere brugere samtidig arbejde med db'en samtidig. Her træder table/row lock i funktion hvis flere samtidige brugere forsøger at ændre de samme data i samme tabel. Dette er ikke tilfældet her. Jeg er sikker på at db'en er åbnet i non-exclusive mode. Har lavet en del netværksapplikationer gennem tiderne med Access (frontend/backend) og VB6 men har ikke set dette problem før. Problemet ER i ASP. Jeg kunne lige poppe denne kode ind her som er et login vindue som brugere skal logge ind med. Det er her jeg ser problemet:
Sub Button1_Click(sender As Object, e As EventArgs) Dim conn As OleDbConnection, gylle as string Dim cmdEmployees as OleDbCommand Dim readEmployees as OleDbDataReader
' Check if login and password field are empty - if yes then error message and exit if txtlogin.text ="" Or txtpassword.text ="" then lblMessage.text = "Login or password not accepted!":exit sub conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Inetpub\wwwroot\WebApplication1\bin\docnav.mdb") cmdEmployees = New OleDbCommand("Select * from login WHERE loginname = '" + txtlogin.text + "'", conn) conn.Open() readEmployees = cmdEmployees.ExecuteReader() While readEmployees.Read() ' Response.Write (readEmployees("loginname") + " " + readEmployees("password")) ' Response.Write("<br>") if readEmployees("password") <> "" then lblMessage.text = "ok" End While conn.close() End Sub
Lige en kommentar: Det kan være det SKAL være således, men min tvivl er: Hvad nu hvis mere en een person forsøger at logge ind eller generelt laver en forespørgsel/skrivning til db'en samtidig ? Så er min forståelse at denne fejl ville komme - eller tager jeg fejl ?
Jep. Menu Funktioner -> indstillinger, vises formen og under advanceret ses standardåbningstilstand som er sat til "med delt adgang". (Dansk version forstås)...
Det har du ret i. Men jeg kan skrive og læse i databasen, så det er ikke problemet. har iøvrigt checket rettighederne og det ser fint ud. Hmm - har også prøvet at have flere browser vinduer åbnet i parallel og prøvet at arbejde med vinduerne samtidig (skrive/læse). Måske har jeg ikke noget problem alligevel ??? Vil lade denne stå åben et stykke tid - kunne være der er en anden der har samme erfaring. Moonduck, du får pointene hvis ikke andet dukker op og hvis det ser ud til fortsat at virke.
Nej, tag du bare pointene selv hvis der ikke dukker noget op. Jeg har jo ikke kunnet hjælpe.
Synes godt om
Ny brugerNybegynder
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.