Du behöver ju inte använda adovbs.inc....
Exekvera i stället dina sql-frågor med .Execute methoden i adodb objektet connection...
Mycket mer effektivt ;)
14 svar · 321 visningar · startad av M.Cheraghi
tjena!
jag har ett problem! när jag includerar Adovbs.inc i ett asp dokument! så kommer jag inte åt sidan, det poppar upp en Windows Inloggningsruta, som man måste logga in på! o jag kan inte användarnamn o lösenord som skall skrivas in där =/
förstår inte varfr den knasar!
har högerklickan på min mapp å säkerhet o satt fulla rättigheter sen i IIS har jag ändrat å satt fulla rättigheter också =/
nån vänlig själ som vet vad felet kan vara?
MVH
Du behöver ju inte använda adovbs.inc....
Exekvera i stället dina sql-frågor med .Execute methoden i adodb objektet connection...
Mycket mer effektivt ;)
mikul skrev:
Du behöver ju inte använda adovbs.inc....
Exekvera i stället dina sql-frågor med .Execute methoden i adodb objektet connection...Mycket mer effektivt ;)
hängde inte med för fem öre där :P
min kod ser ut som följande
<!-- #include file="adovbs.inc" -->
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb"))
'============== FUNKTION FÖR LÅNGA RADER==============
function doIt(textSomSkaFixas)
arrText = split(textSomSkaFixas, " ")
for i = 0 To uBound(arrText)
if Len(arrText(i)) > 60 then
newText = newText & " " & Left(arrText(i), 60)
'newText = newText & " " & Right(arrText(i), Len(arrText(i)-60))
newText = newText & " " & Right(arrText(i), Len(arrText(i))-60)
else
newText = newText & " " & arrText(i)
end if
next
doIt = newText
end function
%>
<html>
<head>
<!--
#################################################
# #
# Hogstorps gästbok 2.0 #
# Copyright (c) 2001. Björn Lindström #
# #
# Detta script får användas fritt men #
# följande rader skall stå kvar samt att #
# includebottom-filen får vara orörd. #
# Ursprungsscript från Webstudio. Tack #
# för bra asp-kurs på nätet #
# Omarbetat till gästbok av #
# Björn Lindström #
# #
#################################################
-->
<script language="JavaScript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar. */
function centerpopup(URL,width,height){
if (parseInt(navigator.appVersion) >= 3){
if (navigator.appName == "Netscape" && parseInt(navigator.appVersion)<5){
var tools = new Packages.java.awt.Toolkit.getDefaultToolkit();
screen=tools.getScreenSize();
}
x = screen.width;
y = screen.height;
}
window.open(URL,"dummy","top=" + parseInt(y/2-height/2-16) + ",left=" + parseInt(x/2-width/2-5) + ",width=" + width + ",height=" + height);
}
</script>
<link rel="stylesheet" href="textmall.css">
</head>
<body>
<div align="center">
<center>
<table border="0" width="500">
<tr>
<td width="169"><img border="0" src="gastbok.gif" alt="Välkomna till vår gästbok" width="240" height="39"></td>
<td width="317"><a href="#" onClick="centerpopup('admin/add/default.asp',400,270); return false;">Skriv i gästboken</a> | <a href="visa_alla_rubriker_1.asp">Visa endast rubriker</a><br>
<a href="admin/radera/default.asp">Radera i gästboken</a> | <a href="admin/redigera/default.asp">Redigera i gästboken</a>
</td>
</tr>
</table>
</center>
</div><br>
<%
Dim Page_Size
Dim Current_Page
Dim Page_Count
Page_Size = 5 '###------här anger du hur många inlägg som skall visas på varje sida--------
If Request("Page") = "" Then
Current_Page = 1
Else
Current_Page = CInt(Request("Page"))
End If
Set RecSet=Server.CreateObject("ADODB.RecordSet")
RecSet.CursorLocation = adUseClient
RecSet.PageSize = Page_Size
SQL = "Select * From gastbok ORDER BY Id DESC"
RecSet.Open SQL, Connect, adOpenStatic, adLockReadOnly, adCmdText
Page_Count = RecSet.PageCount
If 1 > Current_Page Then Current_Page = 1
If Current_Page > Page_Count Then Current_Page = Page_Count
RecSet.AbsolutePage = Current_Page
Do While RecSet.AbsolutePage = Current_Page And Not RecSet.EOF
%>
<div align="center">
<center>
<table border="0" width="500" cellspacing="1" bgcolor="#DEDDDC">
<tr>
<td width="100"><%=RecSet("datum")%></td>
<td width="275"><b><%=left(RecSet("Rubrik"),35)%></b></td>
<td width="125"><%=RecSet("Ip")%></td>
</tr>
</table>
</center>
</div>
<div align="center">
<center>
<table border="0" width="500" cellspacing="1">
<tr>
<td width="100%"><b> - Inlagt av : <a href="mailto:<%=RecSet("Email")%>"><%=left(RecSet("Namn"),50)%></a></b><br>
<%=doIt(RecSet("Meddelande"))%><br><br>
</td>
</tr>
</table>
</center>
</div>
<%
RecSet.MoveNext
Loop
RecSet.Close
Set RecSet = Nothing
Connect.Close
Set Connect = Nothing
Response.Write "<center>"
Response.Write "<td colspan=""4"" align=""center"">"
If Current_Page = 1 Then
Response.Write "<font face =""verdana"" color=""silver"" & size=""1"">" & "Första </font><font size=""1""> |</font> "
End If
If Current_Page >= 2 Then
Response.Write "<a href=""default.asp?Page=1"
Response.Write """><font face =""verdana"" size=""1""><< Första</font></a><font size=""1""> |</font> " & vbCrLf
End If
If Current_Page >= Page_Count Then
Response.Write "<font face =""verdana"" color=""silver"" Size=""1"">Nästa >></font><font size=""1""> | </font>"
End If
If Current_Page < Page_Count Then
Response.Write "<a href=""default.asp?Page="
Response.Write Current_Page + 1
Response.Write """><font face =""verdana"" size=""1"">Nästa ></font></a>" & " <font size=""1"">|</font>" & vbCrLf
End IF
If Current_Page <> 1 Then
Response.Write "<a href=""default.asp?Page="
Response.Write Current_Page - 1
Response.Write """><font face =""verdana"" size=""1"">< Föregående </font></a><font size=""1""> |</font> " & vbCrLf
Response.Write " " & vbCrLf
End If
If Current_Page = 1 Then
Response.Write "<font face =""verdana"" color=""silver"" & size=""1"">" & "< Föregående </font><font size=""1"">|</font> "
End If
If Current_Page <> Page_Count Then
Response.Write "<a href=""default.asp?Page="
Response.Write Page_Count
Response.Write """><font face =""verdana"" size=""1"">Sista >></font></a>" & vbCrLf
End If
If Current_Page >= Page_Count Then
Response.Write "<font face =""verdana"" size=""1"" color=""silver"">Sista</font>" & "</font>"
End If
%>
<br>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb"))
Dim antal
antal = 0
Set RecSet = Server.CreateObject("ADODB.Recordset")
Addera = "SELECT * FROM gastbok ORDER BY Id DESC"
RecSet.Open Addera, Connect, adOpenStatic, adLockOptimistic
Do Until RecSet.EOF
antal = antal + 1
RecSet.MoveNext
Loop
RecSet.Close
Connect.Close
Set Connect = Nothing
%>
<div align="center">
<center>
<table border="0" width="500" cellspacing="1">
<tr>
<td width="100%"><br><center>Sidan <%=Current_Page%> av <%=Page_Count%><br>
Det är <%= antal %> inlägg i gästboken.</center>
<!-- #INCLUDE FILE="bottom.inc" --></td>
</tr>
</table>
</center>
</div>
</body>
</html>
Byt ut din kod som räknar hur många inlägg det finns mot detta:
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb"))
Set RecSet = Connect.Execute("SELECT count(id) as posts FROM gastbok")
postcount = RecSet("posts")
Set RecSet = Nothing
Connect.Close : Set Connect = Nothing
%>
För att skriva ut antalet senare använder du bara <% =postcount%>.
Sedan är det mer prestandavänligt om man har så få databasöppningar som möjligt. Försökt alltså göra så mycket som möjligt under en och samma öppning.
Josef skrev:
Byt ut din kod som räknar hur många inlägg det finns mot detta:
<% Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb")) Set RecSet = Connect.Execute("SELECT count(id) as posts FROM gastbok") postcount = RecSet("posts") Set RecSet = Nothing Connect.Close : Set Connect = Nothing %>För att skriva ut antalet senare använder du bara <% =postcount%>.
Sedan är det mer prestandavänligt om man har så få databasöppningar som möjligt. Försökt alltså göra så mycket som möjligt under en och samma öppning.
hehe det är inte min kod utan ner laddad! jag ska inte använda den helt som den är ska ta Paging delen och sumpa resten av grejjerna skall inte användas till gäst bok :P men d är just ADOVBS konceptet som jag inte lyckas lösa =/
MVH
Det är bättre att byta ut de konstanterna, som hämtas ur ADOVBS.inc, mot de siffror som de egentligen motsvarar. Så kolla vilka siffror de motsvarar och byt ut de i koden och skippa att inkludera filen.
Josef skrev:
Det är bättre att byta ut de konstanterna, som hämtas ur ADOVBS.inc, mot de siffror som de egentligen motsvarar. Så kolla vilka siffror de motsvarar och byt ut de i koden och skippa att inkludera filen.
mjoo d har du iof rätt i, men d kan vara bra att lösa detta problem också ;) så man lär sig något på kakan också =)
Men det är ytterst sällan du verkligen behöver använda dig av ADODB.RecordSet. Det finns oftast snyggare, snabbare och bättre lösningar. Om du skippar RecordSetet slipper du adovbs.inc. ;)
Josef skrev:
Men det är ytterst sällan du verkligen behöver använda dig av ADODB.RecordSet. Det finns oftast snyggare, snabbare och bättre lösningar. Om du skippar RecordSetet slipper du adovbs.inc. ;)
höh? jag måste juhe hämta ut värderna ur databasen??
igentligen den koden jag postade.. ska jag bara använda mej utav Paging grejjen på.. inget annat... jag har inte hittat nått annan paging script..
men hur som helst ere kul å få ADOVBS.INC o funka :P
vet du nått annat paging script nånstans? =)
Cannabis_Tomten skrev:
Josef skrev:
Men det är ytterst sällan du verkligen behöver använda dig av ADODB.RecordSet. Det finns oftast snyggare, snabbare och bättre lösningar. Om du skippar RecordSetet slipper du adovbs.inc. ;)
höh? jag måste juhe hämta ut värderna ur databasen??
Visst, men du måste inte använda ADODB.RecordSet för det. Använd Execute-metoden på Connection istället, o lagra allt i en array.
Paging-script finns lite överallt. Bara att leta runt lite. ;)
Josef skrev:
Cannabis_Tomten skrev:
Josef skrev:
Men det är ytterst sällan du verkligen behöver använda dig av ADODB.RecordSet. Det finns oftast snyggare, snabbare och bättre lösningar. Om du skippar RecordSetet slipper du adovbs.inc. ;)
höh? jag måste juhe hämta ut värderna ur databasen??
Visst, men du måste inte använda ADODB.RecordSet för det. Använd Execute-metoden på Connection istället, o lagra allt i en array.
Paging-script finns lite överallt. Bara att leta runt lite. ;)
kan du dra exempel på hur man lagrar nått i array? :P
SQL = "select bla bla bla"
execute(SQL)
ere så du menar eller? =)
Cannabis_Tomten skrev:
SQL = "select bla bla bla" execute(SQL)ere så du menar eller? =)
Inte riktigt:
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=databas.mdb;"
Sql = "SELECT * FROM foo"
Set objRs = objConn.Execute(sql)
If NOT objRs.EOF Then
arrPosts = objRs.GetRows()
Else
ArrPosts = null
End If
Set objRs = Nothing
If IsNull(arrPosts) Then
Response.Write("No posts")
Else
for i = 0 to Ubound(arrPosts, 2)
Response.Write(arrPosts(i, 0))
next
End If
objConn.Close : Set objConn = Nothing
Där fick du båda... ;)
ehm... håller med till recordset.. =P
Nu har jag kanske inte gjort det så enkelt som möjligt, men det finns en hel del om detta här på wF. Det är bara att söka om du vill veta mer.
när den dagen är kommen skall jag göra det =) hehe i dags läget kör jag på Record Set =)