Avatar billede hallum Nybegynder
22. april 2004 - 00:23 Der er 14 kommentarer og
1 løsning

Asp.net og access database, connection ikke muligt at vise data

Jeg er novice i asp.net og Visualstudio.net 2003 Academic.
Jeg skal via en webform vise data fra en accessdatabase:
og har følgende kode i min webform1.aspx.vb, som visualstudio jo selv laver bortset fra koden som jeg selv har sat ind ved >>
>>Imports System.Data.OleDb
Public Class WebForm1
    Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        Me.OleDbConnection1 = New System.Data.OleDb.OleDbConnection
        Me.OleDbCommand1 = New System.Data.OleDb.OleDbCommand
        '
        'OleDbConnection1
        '
        Me.OleDbConnection1.ConnectionString = "Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database L" & _
        "ocking Mode=1;Data Source=""C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb"";" & _
        "Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";" & _
        "Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Exten" & _
        "ded Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt" & _
        " Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Loca" & _
        "le on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"
        '
        'OleDbCommand1
        '
        Me.OleDbCommand1.CommandText = "SELECT Person.Fornavn, Person.Efternavn, Person.Adresse, Person.Postnr, Postnr.By" & _
        "navn, Person.Telefon FROM (Person INNER JOIN Postnr ON Person.Postnr = Postnr.Po" & _
        "stnr)"
        Me.OleDbCommand1.Connection = Me.OleDbConnection1

    End Sub
    Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
    Protected WithEvents OleDbCommand1 As System.Data.OleDb.OleDbCommand
    Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

    'NOTE: The following placeholder declaration is required by the Web Form Designer.
    'Do not delete or move it.
    Private designerPlaceholderDeclaration As System.Object

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub
#End Region
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
>>      OleDbConnection1.Open()
>>      DataGrid1.DataSource = OleDbCommand1.ExecuteReader
>>      DataGrid1.DataBind()
    End Sub
    Private Sub OleDbConnection1_InfoMessage(ByVal sender As System.Object, ByVal e As System.Data.OleDb.OleDbInfoMessageEventArgs)
    End Sub
    Private Sub DataGrid1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectedIndexChanged
    End Sub
End Class
----
Får fejlen:
Microsoft JetDatabasemotoren kan ikke åbne filen: C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb
Den er allerede åbnet med en udelt adgang af en anden bruger, eller du skal have tilladelse til at vise dataene.
-----
Så vidt jeg kan se på min IIS så er der adgang til at læse data i mappen.
Samtidig er der en rød markering udfor: OleDbConnection1.Open()

Hvad kan jeg gøre...
Har prøvet at installere min IIS igen.
Avatar billede jakobg Nybegynder
22. april 2004 - 01:13 #1
Et TOTALT skud i tågen: Er din Access base åben samtidigt med at du prøver at læse i den fra dit website? Det driller lidt en gang i mellem, jeg kan desværre ikke huske hvornår det sker, men nogen gange er løsningen blot at lukke Access, og din fejl lyder lidt bekendt.
Avatar billede hallum Nybegynder
22. april 2004 - 08:36 #2
jakobg > Nej, Access er ikke åben samtidig. Jeg har compilet koden, og køre debug fra Visualstudio, ingen fejl i koden. Men jeg kan ikke se indholdet, kun fejl teksten ;-(
Avatar billede jakobg Nybegynder
22. april 2004 - 08:56 #3
Prøv at lave din connection string om:

"Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=xxx; Data Source=" & Server.MapPath("database.mdb") & ";"

MEN: Har du forresten sørget for, at ASPNET-kontoen har adgang til din Access base?
Avatar billede hallum Nybegynder
22. april 2004 - 09:09 #4
jakobg > connect har jeg jo sat op i visualstudio, og database forbindelsen virker her når man tester direkte i VS.
1. Din connectstring hvor skal den indsætte? Burde det ikke være løst via VS?
2. Jeg forstår ikke lige det du skriver med ASPNET kontoen? Hvis det er noget med Read/Write access på IIS, så mener jeg at der sagt ok til begge dele.
Avatar billede jakobg Nybegynder
22. april 2004 - 09:24 #5
Find Access basen via din Stifinder, og check permissions på den: Din computer har en særlig konto, ASPNET, som blev oprettet da du installerede .NET Frameworket, og som bliver anvendt til at eksekvere koden. Denne konto skal have skrive-rettigheder til databasen!

Men at dømme ud fra din fejlmeddelse, så er det ikke dét der er galt: Er du HELT 100 på, at Access basen ikke er åben, evt. i VS.NET?
Avatar billede hallum Nybegynder
22. april 2004 - 09:28 #6
jakobg >
1. ASPNET  kontoen (checker jeg i aften, er ikke nærheden af min maskine)
2. Jeg har lagt mærke til at når jeg køre debug/skal vise løsningen via VS, så bliver der lavet en ldb version af Access. Men det skal der jo gøres når der læses/skrives?
Avatar billede jakobg Nybegynder
22. april 2004 - 09:39 #7
Jeg bruger stort set aldrig VS.NET til at sætte connectionstrings og den slags op, så jeg skyder lidt i mørke nu.
Men har VS.NET ikke lavet et Connection objekt, som du kan se allernederst på siden? Højreklik, og vælg Properties: Se "Connection". Hvad står der dér?

Hvis der står dette:
"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb"";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1"

Kan du evt. prøve at erstatte det med følgende:
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=""C:\Inetpub\wwwroot\opgaver\opg3\Adressekartotek.mdb"";"

Hvad siger koden til det?
Avatar billede hallum Nybegynder
22. april 2004 - 09:51 #8
jakobg> Jo, der er en connection objekt. Så vidt jeg kan se er det dette som står i koden øverst i mit spørgsmål. Så dit forslag er at slette hele den linie som er i webform1.aspx.vb (min codebehind side)
Vil det hjælpe dig hvis jeg sendte dig løsningen i zip.format?
Avatar billede jakobg Nybegynder
22. april 2004 - 11:05 #9
Ja, du skal erstatte linien med mit forslag og prøve igen.
Avatar billede hallum Nybegynder
22. april 2004 - 20:28 #10
jakobg > Det virker ikke der kommer blot en anden fejlmedd.
Troede at med VS var det hele lettere? Der findes tonsvis at tutorials, men jeg ka' ikke få vist mine data.
Avatar billede hallum Nybegynder
22. april 2004 - 21:07 #11
jakobg> Hvis jeg kopiere din tekst ind direkte i VS og ind i connectionstring kan dette ikke lade sig gøre.
Avatar billede jakobg Nybegynder
22. april 2004 - 21:42 #12
VS.NET hjælper dig rigtigt meget, men hvis du er helt ny, burde måske se på nogen praktiske eksempler fra nettet, hvor man laver koden fra bunden.

Har du arbejdet med ASP før? Anden form for programmering?
Avatar billede hallum Nybegynder
22. april 2004 - 22:25 #13
jakobg> Jeg har leget lidt med alm. asp før og der skulle man jo kode det meste fra bunden. Jeg købte VS for let at kunne komme til at bruge .net og andre smarte ting uden at kode.
Jeg har iøvrigt fundet løsningen: http://www.webwizguide.info/asp/faq/server_permissions.asp
Jeg skulle tilføje rettigheder på en ASP.NET machineaccount = den konto som din maskine bruger til at afvikle .net filer. Hvem f* kunne vide dette ;-(
Da du har hjulpet mig en del med hurtige svar får du point hvis du lige kan give mig nogle gode links til VS. OK?
Avatar billede jakobg Nybegynder
22. april 2004 - 22:35 #14
Hehe, jeg HAR da allerede foreslået at kigge på rettighederne til ASPNET-kontoen (3. kommentar i tråden:). Så var det altså ikke helt ved siden af trods alt.

Men ellers: www.asp.net. www.asptoday.com, www.learnvisualstudio.net, www.4guysfromrolla.com og www.dotnetjunkies.com er de sites som jeg holder øje med dagligt.
Avatar billede hallum Nybegynder
22. april 2004 - 22:43 #15
jakobg> Jeg anede faktisk ikke at der var en særlig asp.net machine account. Og at det var XP-proff. der spillede ind her. I den gode gamle PWS i Win98 var det relativt let at få adgang til mappe og dermed skrive og læse ret til databaser.
Men jeg er da blevet en del kloger i dag ;-) Tak for hjælpen.
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