webForumDet fria alternativet

Adovbs.inc fel!

ASP

14 svar · 321 visningar · startad av M.Cheraghi

Medlem sedan juli 20015 107 inlägg
Frågan#1

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

Medlem sedan aug. 20013 824 inlägg
#2

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 ;)

Medlem sedan juli 20015 107 inlägg
#3

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"">&nbsp;|</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""> |&nbsp;</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>" & "&nbsp;<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"">&nbsp; |</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>
Medlem sedan mars 20023 561 inlägg
#4

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.

Medlem sedan juli 20015 107 inlägg
#5

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

Medlem sedan mars 20023 561 inlägg
#6

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.

Medlem sedan juli 20015 107 inlägg
#7

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å =)

Medlem sedan mars 20023 561 inlägg
#8

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. ;)

Medlem sedan juli 20015 107 inlägg
#9

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? =)

Medlem sedan mars 20023 561 inlägg
#10

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. ;)

Medlem sedan juli 20015 107 inlägg
#11

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? =)

Medlem sedan mars 20023 561 inlägg
#12

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... ;)

Medlem sedan juli 20015 107 inlägg
#13

ehm... håller med till recordset.. =P

Medlem sedan mars 20023 561 inlägg
#14

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.

Medlem sedan juli 20015 107 inlägg
#15

när den dagen är kommen skall jag göra det =) hehe i dags läget kör jag på Record Set =)

265 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)