aspMedlem sedan aug. 2002733 inlägg Hej.
Min hemsida är väldigt seg. Jag undrar om det kan bero på databaskopplingen.
Ser ni något fel med denna koppling? Bör jag göra den på ett annat sätt?
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("XXX.mdb")
Set rs = objConn.Execute("SELECT * FROM Tabellen")
objConn.Close
Set objConn = Nothing
Sedan undrar jag det kan bero på att jag inkluderar 5-6 filer på sidan. Kan det sega ner sidan?
Sista fråga. Är det absolut nödvändigt att man avslutar databaskopplingen innan man skickar besökare vidare? Har kanske glömt det på vissa ställen.
Response.Redirect("asd.asp")
objConn.Close
Set objConn = Nothing
Mvh
Marcus
@ndersMedlem sedan juni 200032 969 inlägg Frågan har mer att göra med ASP, så jag flyttar tråden från SQL.
Mvh
asp skrev:
Min hemsida är väldigt seg. Jag undrar om det kan bero på databaskopplingen.
Fråga: Måste du använda alla "val" i tabellen Tabellen? Annars är det alltid en fördel att endast plockar ut de värden du presentera på sidan:
SELECT Fornamn,Efternamn FROM Tabellen
asp skrev:
Sedan undrar jag det kan bero på att jag inkluderar 5-6 filer på sidan. Kan det sega ner sidan?
Det kan det nog (beroende på hur de andra include sidorna är uppbyggt, och Include gör sidan lite segare(vad jag har hört)
asp skrev:
Sista fråga. Är det absolut nödvändigt att man avslutar databaskopplingen innan man skickar besökare vidare? Har kanske glömt det på vissa ställen.
Fungera det så gör det det... men detta segar nog sidan, stäng alltid objekt när dom inte används mer även innan den redirekta så tycker jag du ska ha stängt databaskopplingen, databasen kan bli "låst".
aspMedlem sedan aug. 2002733 inlägg Visst, det går snabbare att plocka ut enstaka fält ur tabellen. Men i de flesta fall använder jag alla fält. Dessutom borde det inte sega ner sidan såpass mycket som det gör.
Stänga databasen innan jag redirectar har jag gjort i de flesta fall. Skall man även stänga recordsetet man skapar?
Set rs = objConn.Execute(SQL)
...
'Stänga också?
Include filer, jag har också hört att det saktar ner sidorna. Men så länge man håller sig under ca 10 filer borde det inte vara några problem. Man bör ju liksom kunna använda funktionen include. :p
Tack för svaret och tacksam för fler svar.
(Ursäkta felpostningen)
emissionMedlem sedan dec. 19996 721 inlägg Include-filer är inget direkt problem i sig, såvida själva filerna inte gör något slitsamt.
Använd gärna en OLEDB-koppling i stället (http://www.connectionstrings.com).
aspMedlem sedan aug. 2002733 inlägg Jag hittar ingen OLEDB-koppling till vanliga ASP och inte ASP.NET. Hittar ni?
http://www.connectionstrings.com/?carrier=access
@ndersMedlem sedan juni 200032 969 inlägg Jodå. Titta under "OLE DB, OleDbConnection (.NET)", det är vanlig OLEDB som du kan använda i ASP, och även i OleDbConnection i .NET.
aspMedlem sedan aug. 2002733 inlägg Följande kod ger följande fel:
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("DB.mdb") & ";"
error '80004005'
/page/default.asp, line 44
Set rs = objConn.Execute("SELECT * FROM Tabell")
@ndersMedlem sedan juni 200032 969 inlägg Databasen ligger i samma mapp som asp-filen, och tillräckliga rättigheter för IUSR_xxx är satta på mappen?
Vilken är alltså rad 44?
aspMedlem sedan aug. 2002733 inlägg Databasen ligger inte i samma mapp som asp-filen. Dock heter databasen annorlunda men jag skriver inte hela namnet här pga säkerhetsskäl. Jag har givit en korrekt sökväg iaf.
Rad 44 är SQL-satsen, kan skriva den igen:
Set rs = objConn.Execute("SELECT * FROM Tabell")
Det med IUSR_xxx har jag ingen aning om? Vad är det?
Denna funktion anväder jag nu, den fungerar, men seg som sagt:
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../XXX.db")
@ndersMedlem sedan juni 200032 969 inlägg Om du ser till att du använder samma sökväg i access-drivern som i oledb-drivern ska det fungera.
Det med IUSR_xxx har jag ingen aning om?
IUSR_datornamn är det Windows-konto som används av IIS. Det kontot måste ha NTFS-rättigheter att läsa, skriva och skapa filer i mappen som databasen ligger i.
aspMedlem sedan aug. 2002733 inlägg Den klagar endast på vissa SQL-satser. Kopplingen fungerar iaf.
Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in UPDATE statement.
/lp/page/default.asp, line 36
objConn.Execute("UPDATE Kommentarer SET read = 'True' WHERE IsNull(read) AND typ = 'MINA' AND referens = " & Session("USER"))
...och...
Error Type:
(0x80004005)
Unspecified error
/lp/page/default.asp, line 40
Set rs = objConn.Execute("SELECT TOP 1 * FROM Kommentarer WHERE isNull(read) AND typ = 'MINA' AND referens = " & Session("USER"))
Jättekonstigt.
emissionMedlem sedan dec. 19996 721 inlägg Man skulle kunna misstänka att Session("USER") är tom.
Regel nummer 1 när man har dylika problem:
Skriv ut den färdiga SQL-satsen.
aspMedlem sedan aug. 2002733 inlägg Första jag gjorde och den var inte tom.
emissionMedlem sedan dec. 19996 721 inlägg Hur ser den färdiga sql-satsen ut?
@ndersMedlem sedan juni 200032 969 inlägg Det finns en del ord som är reserverade, som olika drivers reagerar olika på. Jag vill minnas att "read" är ett sådant ord. Prova att klamra ([read]) i dina SQL-frågor, för att se om det fungerar. Fungerar det då tycker jag att du ska byta namn på fältet.
aspMedlem sedan aug. 2002733 inlägg Jo man tackar, det var felet. Fick ändra på en hel del andra SQL satser. Men måste säga att sidan blev inte så mycket snabbare. Det enda jag kan komma på nu är att include-filerna drar ner sidan... =/
@ndersMedlem sedan juni 200032 969 inlägg Prova att göra en likadan sida utan include-filer. Prova att köra alla olika delar av sidan för sig själva, provkör alla enskilda SQL-frågor.
Ta tid med Timer() eller dylikt och skriv ut efter varje kodbit, så kanske du kan se vad det är som egentligen tar tid.