07. marts 2007 - 12:46
Der er
3 kommentarer og
1 løsning
Problem med ASP
Hej
Jeg har et problem.
Kode:
cst = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & pathtodb
set conn = CreateObject("ADODB.Connection")
conn.open cst
Sql = "Select count(*) as Found from klub where aktiv=1"
Set Record = Rs.Execute(Sql)
Fejl:
Microsoft VBScript runtime error '800a01a8'
Object required: ''
Jeg får fejlen i linien med:
Set Record = Rs.Execute(Sql)
Sigurd
07. marts 2007 - 13:13
#2
cst = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & pathtodb
set conn = CreateObject("ADODB.Connection")
conn.open cst
Sql = "Select count(*) as Found from klub where aktiv=1"
Set Record = conn.Execute(Sql)
07. marts 2007 - 22:52
#4
Skal lige siges den måde som er beskrevet til hvordan man kan connecte til en database er fra Secnet's support side som viser hvor enkelt man kan lave sine database kald.
bruger selv den måde hvis jeg arbejder med Access databaser, men det gør jeg meget meget sjællendt.
Opret en ny ASP-fil ved navn "database.asp" og indsæt følgende kode i den :
<%
Dim objConn ' Opret en variabel
' der kan bruges til at forbinde til databasen.
Sub OpenDataBase(strDBPath)
' Denne Sub gør det lettere i ASP koden
' at åbne en forbindelse til en Access database.
' Syntax :
' Call OpenDataBase("/databasemappen/databasensnavn.mdb")
Dim strProvider ' Opret variabel til at indeholde
' vores connection-string til databasen.
' Start med at sikre at variablen er tom
strProvider = ""
' Tilføj oplysninger om hvilken database-driver der skal bruges
strProvider = strProvider & "Provider=Microsoft.Jet.OLEDB.4.0;"
' Tilføj information om hvor databasen fysisk befinder sig på serveren
strProvider = strProvider & "Data Source=" & Server.MapPath(strDBPath) & ";"
' Tilføj oplysninger om sikkerhedsniveauet der skal bruges til databasen
strProvider = strProvider & "Persist Security Info=False"
' Opret et ADO Connection objekt
Set objConn = Server.CreateObject("ADODB.Connection")
' Brug connection-string'en fra før til at oprette forbindelsen
' til databasen, via driveroplysninger m.v.
objConn.Open strProvider
' Der er nu en åben og aktiv forbindelse til databasen.
End Sub
Sub CloseDataBase
' Denne Sub lukker forbindelsen til databasen efter brug.
' Bør altid kaldes efter arbejde med databasen,
' eller som den sidste funktion i ASP siden.
' Syntax :
' Call CloseDataBase
' Bed Connection objektet om at lukke forbindelsen
objConn.Close
' Fjern Connection objektet fra hukommelsen på serveren.
Set objConn = Nothing
End Sub
%>
I de følgende eksempler går vi ud fra at vi har oprettet en database ved navn "databasensnavn.mdb" og lagt den i mappen "databasemappen". I databasen har vi oprettet en tabel der hedder "Test", hvori der er oprettet 3 felter: ID, Overskrift og Indhold.
Sådan opretter man en ny record via SQL-sætning :
<!-- #include file="database.asp" -->
<html>
<body>
<%
' Åben en forbindelse til vores database
Call OpenDataBase("databasemappen/databasensnavn.mdb")
' Tilføj en ny record til tabellen "Test"
objConn.Execute "INSERT INTO Test (Overskift, Indhold) VALUES ('Vores overskift', 'Vores indhold')"
' Luk forbindelsen igen
Call CloseDataBase
%>
</body>
</html>
Det vil også være en fordel, hvis vi kan hente og vise indhold fra vores database, så her er et eksempel på hvordan det gøres via SQL-sætning :
<!-- #include file="database.asp" -->
<html>
<body>
<%
' Åben en forbindelse til vores database
Call OpenDataBase("databasemappen/databasensnavn.mdb")
Dim objRS ' Opret en variabel der skal indeholde RecordSets fra databasen
Set objRS = objConn.Execute("SELECT * FROM Test ORDER BY Overskrift")
If (Not objRS.BOF) And (Not objRS.EOF) Then ' Sikring mod fejl hvis ingen records blev fundet
objRS.MoveFirst ' Flyt til første record i vores resultat
While Not objRS.EOF ' Så længe vi ikke har nået sidste resultat, udfør
Response.Write objRS("Overskrift") & "<br>" & vbCrLf ' Udskrif overskriften
objRS.MoveNext ' Flyt til næste record i resultatlisten
Wend
Else ' Der var ingen resultater
Response.Write "Ingen records fundet.<br>" & vbCrLf
End If
objRS.Close ' Luk for recordset
Set objRS = Nothing ' Frigør fra hukommelsen på serveren
' Luk forbindelsen til serveren igen
Call CloseDataBase
%>
</body>
</html>
Hvis vi skal have opdateret en eksisterende record i databasen, gøres det således via SQL-sætning :
<!-- #include file="database.asp" -->
<html>
<body>
<%
' Åben en forbindelse til vores database
Call OpenDataBase("databasemappen/databasensnavn.mdb")
' Opdater en eksisterende record i tabellen Test
objConn.Execute "UPDATE Test SET Overskrift='Ny overskrift her' WHERE ID=1"
' Luk forbindelsen til databasen igen
Call CloseDataBase
%>
</body>
</html>
Sidst men ikke mindst, kan der jo også opstå et behov for at kunne slette en record igen. Det gøres således via SQL-sætning :
<!-- #include file="database.asp" -->
<html>
<body>
<%
' Åben en forbindelse til vores database
Call OpenDataBase("databasemappen/databasensnavn.mdb")
' Slet en record fra tabellen Test
objConn.Execute "DELETE FROM Test WHERE ID=1"
' Luk forbindelsen til databasen igen
Call CloseDataBase
%>
</body>
</html>
Her kommer så min måde at ville hente antal ud fra en database
Jeg vil anbefale du bruger din database kald sådan..
Og når du så vil tælle antal kan du gøre det sådan her
<%
Function GetCountKlub
Call OpenDataBase
Dim objRS
Dim strResulta
strResulta = ""
Set objRS = objConn.Execute("SELECT COUNT(*) as Found from klub where aktiv=1")
If (Not objRS.BOF) And (Not objRS.EOF) Then
strResulta = CLng(objRS(0))
End If
objRS.Close
Set objRS = Nothing
Response.Write "<font color=""#33CC99"">"
GetCountKlub = strResulta
Response.Write "</font>"
Call CloseDataBase
End Function
Der hvor du så vil have antallet ud skriver du blot sådan her..
Response.Write " " & GetCountKlub
%>