19. februar 2004 - 11:34Der er
12 kommentarer og 2 løsninger
Class der ikke helt vil som jeg gerne vil have den til ?
Hejsa
Jeg har følgende class der skal lave database forbindelse sql forspørgelse og lukning af object's men mit array ser ikke helt ud til at virke her kommer kode :
<% Class DataBaseFunctions '--- Declare variabler. Public Rs Public Conn
'--- Sub til at åbne database. Public Sub Init If isobject(Conn) = False Then Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.Recordset") Conn.ConnectionString = "DSN=xxx; UID=xxx; PWD=xxx" Conn.Open End If Response.Write "Database Åbnet<br>" End Sub
'--- Sub til at lukke database og recordset. Public Sub Destroy If isobject(Rs) = True then Rs.Close Set Rs = nothing End If
If isObject(Conn) = true then Conn.Close Set Conn = nothing End If Response.Write "Lukker for databsae og recordset<br>" End Sub
'--- Function der eksikvere sql forspørgelse. Public Function SQL(strSQL) Dim strArray Set Rs = Conn.Execute(strSQL) strArray = Rs.GetRows() Response.Write "Viser træk fra database<br>" End Function End Class %>
På min side laver jeg så følgende :
<%Option Explicit%> <HTML> <HEAD> <!-- #INCLUDE File="DbClass.asp" --> </HEAD> <BODY> <% Dim db, strArray Set db = new DataBaseFunctions db.Init db.SQL "SELECT Top 10 * FROM tblCount"
intLastRow = Ubound(strArray, 2) intLastCol = Ubound(strArray, 1) For IntRow = 0 To intLastRow For IntCol = 0 To intLastCol Response.Write strArray(intCol, intRow)&" " Next Response.Write"<br>" Next
db.Destroy Set db = Nothing %> </BODY> </HTML>
Men jeg får denne fejl hvilket antyder at jeg ikke får mit array med ud af functionen i min class ?
Error Type: Microsoft VBScript runtime (0x800A000D) Type mismatch: 'Ubound'
Hvilket er i denne linie :
intLastRow = Ubound(strArray, 2)
Er der en venlig sjæl der vil/kan hjælpe med det ?
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Umiddelbart tror jeg problemet ligger i din SQL-function...
Public Function SQL(strSQL) Dim strArray Set Rs = Conn.Execute(strSQL) strArray = Rs.GetRows() Response.Write "Viser træk fra database<br>" End Function
Den returnerer jo aldrig noget, burde den ikke returnere dit array? Prøv at rette den til:
Public Function SQL(strSQL) Dim strArray Set Rs = Conn.Execute(strSQL) strArray = Rs.GetRows() Response.Write "Viser træk fra database<br>" SQL = strArray End Function
Og så skal du nok også rette dit kald til funktionen. Kunne forestille mig at det var noget ala det her:
Mangler du ikke at erklære din strArray uden for funktion men inde i klasse?
<% Class DataBaseFunctions '--- Declare variabler. Public Rs Public Conn Public strArray
'--- Sub til at åbne database. Public Sub Init If isobject(Conn) = False Then Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.Recordset") Conn.ConnectionString = "DSN=xxx; UID=xxx; PWD=xxx" Conn.Open End If Response.Write "Database Åbnet<br>" End Sub
'--- Sub til at lukke database og recordset. Public Sub Destroy If isobject(Rs) = True then Rs.Close Set Rs = nothing End If
If isObject(Conn) = true then Conn.Close Set Conn = nothing End If Response.Write "Lukker for databsae og recordset<br>" End Sub
'--- Function der eksikvere sql forspørgelse. Public Function SQL(strSQL) Dim strArray Set Rs = Conn.Execute(strSQL) strArray = Rs.GetRows() Response.Write "Viser træk fra database<br>" End Function End Class %>
På min side laver jeg så følgende :
<%Option Explicit%> <HTML> <HEAD> <!-- #INCLUDE File="DbClass.asp" --> </HEAD> <BODY> <% Dim db, strArray Set db = new DataBaseFunctions db.Init db.SQL "SELECT Top 10 * FROM tblCount"
intLastRow = Ubound(strArray, 2) intLastCol = Ubound(strArray, 1) For IntRow = 0 To intLastRow For IntCol = 0 To intLastCol Response.Write strArray(intCol, intRow)&" " Next Response.Write"<br>" Next
Spotgun >> Med det du skriver får jeg denne fejl : Error Type: Microsoft VBScript compilation (0x800A0401) Expected end of statement /ClassTest/DbClassTest.asp, line 11, column 18 strArray = db.SQL "SELECT Top 10 * FROM tblCount"
steen >> Din ide giver den samme fejl : Error Type: Microsoft VBScript runtime (0x800A000D) Type mismatch: 'Ubound' /ClassTest/DbClassTest.asp, line 15
nmh >> Du tænker sikkert på om der er noget i min tabel men det er der for hvis jeg bare laver en rs.movefirst istedet for et array så viser den første record fra databasen
Lige et forsøg mere... <%Option Explicit%> <HTML> <HEAD> <!-- #INCLUDE File="DbClass.asp" --> </HEAD> <BODY> <% Dim db, strArray Set db = new DataBaseFunctions db.Init db.SQL "SELECT Top 10 * FROM tblCount" strArray = db.strArray intLastRow = Ubound(strArray, 2) intLastCol = Ubound(strArray, 1) For IntRow = 0 To intLastRow For IntCol = 0 To intLastCol Response.Write strArray(intCol, intRow)&" " Next Response.Write"<br>" Next
steen >> Så får jeg denne : Error Type: Microsoft VBScript runtime (0x800A01B6) Object doesn't support this property or method: 'strArray' /ClassTest/DbClassTest.asp, line 14
<% Class DataBaseFunctions '--- Declare variabler. Public Rs Public Conn Public strArray
'--- Sub til at åbne database. Public Sub Init If isobject(Conn) = False Then Set Conn = Server.CreateObject("ADODB.Connection") Set Rs = Server.CreateObject("ADODB.Recordset") Conn.ConnectionString = "DSN=xxx; UID=xxx; PWD=xxx" Conn.Open End If Response.Write "Database Åbnet<br>" End Sub
'--- Sub til at lukke database og recordset. Public Sub Destroy If isobject(Rs) = True then Rs.Close Set Rs = nothing End If
If isObject(Conn) = true then Conn.Close Set Conn = nothing End If Response.Write "Lukker for databsae og recordset<br>" End Sub
'--- Function der eksikvere sql forspørgelse. Public Sub SQL(strSQL) Set Rs = Conn.Execute(strSQL) strArray = Rs.GetRows() Response.Write "Viser træk fra database<br>" End Sub End Class %>
På min side laver jeg så følgende :
<%Option Explicit%> <HTML> <HEAD> <!-- #INCLUDE File="DbClass.asp" --> </HEAD> <BODY> <% Dim db, strArray Set db = new DataBaseFunctions db.Init db.SQL "SELECT Top 10 * FROM tblCount" strArray = db.strArray
intLastRow = Ubound(strArray, 2) intLastCol = Ubound(strArray, 1) For IntRow = 0 To intLastRow For IntCol = 0 To intLastCol Response.Write strArray(intCol, intRow)&" " Next Response.Write"<br>" Next
Jeps og hvilke muligheder det giver i forhold til objekt orienteret programmering det er for fedt :o) så du må gerne lige ligge et svar så er der point på vej :o)
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.