/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Problemer med databasekald og forms
Fra : Jonas


Dato : 12-09-04 09:23

Hejsa,
jeg er ved at lave en hjemmeside der kan vise skemaet for det gymnasium
hvor jeg er skemalægger. Det layoutudkast jeg har lavet kan ses her:
http://www.toender-gym.dk/koll/jc/skemaudkast.htm
Meningen er at man ved klik på en pulldownmenu genloader siden og så
laver relevante databaseopslag. Men jeg kan ikke få det til at virke.
På siden
http://www.toender-gym.dk/koll/jc/skema.asp
hvor jeg har tilføjet asp-kode (vbscript) får jeg følgende fejl:

ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in
conflict with one another.
/koll/jc/skema.asp, line 37

Fejlen kommer i den følgende funktion og det er linien objRS.Open retur
browseren brokker sig over.

Function Datahent(dag,modul)
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Data Source=skema;User ID=;Password=;"
Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS.ActiveConnection = objConn
If elnavn<>"" Then
retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale"
retur = retur & "FROM GASdata INNER JOIN wintp ON
GASdata.Hold = wintp.titel"
retur = retur & "WHERE (((wintp.dag)='" & dag &"') AND
((wintp.modul)=" & modul & ") "
retur = retur & "AND ((GASdata.Navn)='" & elevnavn & "'))"
ElseIf laenavn<>"" Then
retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale
FROM wintp"
retur = retur & "WHERE (((wintp.laerer)='" &
laerer_navn
retur = retur & "') AND ((wintp.dag)='" & dag & "') AND
((wintp.modul)=" & modul & "))"
ElseIf laeinit<>"" Then
retur = "SELECT wintp.titel, wintp.laerer,
wintp.lokale FROM wintp"
retur = retur & "WHERE (((wintp.laerer)='" &
laerer_initialer
retur = retur & "') AND ((wintp.dag)='" & dag & "')
AND ((wintp.modul)=" & modul & "))"
ElseIF lok<>"" Then
retur = "SELECT wintp.titel, wintp.laerer,
wintp.lokale FROM wintp"
retur = retur & "WHERE (((wintp.lokale)='" &
rum
retur = retur & "') AND ((wintp.dag)='" & dag &
"') AND ((wintp.modul)=" & modul & "))"
Else
Datahent = ""
retur = Null
End If
objRS.Open retur
objRS.Close
obj.Conn close
Datahent = objRS(1) & " " & objRS(2) & " " & objRS(3)
End Function

Databasen er lavet i access og består af to tabeller, en med elevnavne
og deres hold, og en med de rå skemadata, dvs. linier der kobler hold
med lærere, lokaler og tidspunkter. I access kan jeg få alle mine
sql-sætninger til at virke så jeg er lidt på bar bund.

Jeg er også lidt usikker på om mine pulldownmenuer er korrekte så jeg
tager lige et forkortet eksempel med også

<form name="initialer_laerer" method="post"
action="skema.asp">
<p><select onChange="loadpage(this)" size="1"
name="laerer_initialer">
<option value="">Vælg lærer efter
initialer</option>
<option value="AH">AH</option>
<option value="AO">AO</option>
<option value="BB">BB</option>
<option value="No">No</option>
<option value="Ja">Ja</option>
</select></p>
</form><% laeinit = request.form %>

Jeg er ikke sikker på om mine variable bliver gemt så de kommer med når
siden genindlæses.
Endelig er der kaldet af selve funktionen Datahent

<td width="16%" align="center">9:50-11:20</td>
<td width="16%"><% strA = Datahent("manu",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("tiru",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("onsu",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("toru",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("freu",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>

mvh
Jonas

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com


 
 
*XxX* (12-09-2004)
Kommentar
Fra : *XxX*


Dato : 12-09-04 09:44


"Jonas" <jonas_cilieborg@maildk> wrote in message
news:mn.626f7d49e3696174.6227@maildk...
> Function Datahent(dag,modul)
> Set objConn = Server.CreateObject("ADODB.Connection")
> objConn.Open "Data Source=skema;User ID=;Password=;"
> Set objRS = Server.CreateObject("ADODB.Recordset")
> Set objRS.ActiveConnection = objConn
> If elnavn<>"" Then
> retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale"
> retur = retur & "FROM GASdata INNER JOIN wintp ON
> GASdata.Hold = wintp.titel"
> retur = retur & "WHERE (((wintp.dag)='" & dag &"') AND
> ((wintp.modul)=" & modul & ") "
> retur = retur & "AND ((GASdata.Navn)='" & elevnavn & "'))"
> ElseIf laenavn<>"" Then
> retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale
> FROM wintp"
> retur = retur & "WHERE (((wintp.laerer)='" &
> laerer_navn
> retur = retur & "') AND ((wintp.dag)='" & dag & "') AND
> ((wintp.modul)=" & modul & "))"
> ElseIf laeinit<>"" Then
> retur = "SELECT wintp.titel, wintp.laerer,
> wintp.lokale FROM wintp"
> retur = retur & "WHERE (((wintp.laerer)='" &
> laerer_initialer
> retur = retur & "') AND ((wintp.dag)='" & dag & "')
> AND ((wintp.modul)=" & modul & "))"
> ElseIF lok<>"" Then
> retur = "SELECT wintp.titel, wintp.laerer,
> wintp.lokale FROM wintp"
> retur = retur & "WHERE (((wintp.lokale)='" &
> rum
> retur = retur & "') AND ((wintp.dag)='" & dag &
> "') AND ((wintp.modul)=" & modul & "))"
> Else
> Datahent = ""
> retur = Null
> End If
> objRS.Open retur
> objRS.Close
> obj.Conn close
> Datahent = objRS(1) & " " & objRS(2) & " " & objRS(3)
> End Function
>

i din retur variabel mangler du en hel masse mellemrum, ca for hver gang du
laver en ny retur = retur & ...



Jonas (12-09-2004)
Kommentar
Fra : Jonas


Dato : 12-09-04 10:58

> i din retur variabel mangler du en hel masse mellemrum, ca for hver gang du
> laver en ny retur = retur & ...

Så skulle den være rettet, tak for det! Jeg har også fundet en del
andre fejl. Så nu kan jeg da få siden til at køre.
http://www.toender-gym.dk/koll/jc/skema.asp
Men det ser ud som om når jeg aktiverer en menu og den genloader siden
så beholder den ikke værdien af den aktuelle variabel, hvorfor der ikke
bliver slået op i databasen, hvad gør jeg galt?
Desuden er min genload funktion lavet i JavaScript men jeg ville
egentlig gerne holde det hele i VBScript, men nedenstående forsøg
virker ikke:

<SCRIPT language=JavaScript type=text/javascript>
<!--
function loadpage(pageURL){
location.href = "http://www.toender-gym.dk/koll/jc/skema.asp"
}
//-->
</SCRIPT>
<%
Function loadPage(pageURL)
location.href = "http://www.toender-gym.dk/koll/jc/skema.asp"
End Function

De to navne er forskellige så jeg kan teste hhv. den ene eller den
anden funktion.

Tidligere havde jeg desuden hver menu i en form for sig, men jeg har nu
lavet én stor form til alle menuerne.

Function Datahent(dag,modul)
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Data Source=skema;User ID=;Password=;"
Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS.ActiveConnection = objConn
If request.form("elevnavn")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale"
retur = retur & " FROM GASdata INNER JOIN wintp ON
GASdata.Hold = wintp.titel"
retur = retur & " WHERE (((wintp.dag)='" & dag &"') AND
((wintp.modul)=" & modul & ")"
retur = retur & " AND ((GASdata.Navn)='" & elevnavn & "'))"
objRS.Open retur
objRS.Close
objConn.close
Datahent = objRS(1) & " " & objRS(2) & " " & objRS(3)
ElseIf request.form("laerernavn")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale
FROM wintp"
retur = retur & " WHERE (((wintp.laerer)='" &
laerer_navn
retur = retur & "') AND ((wintp.dag)='" & dag & "') AND
((wintp.modul)=" & modul & "))"
objRS.Open retur
objRS.Close
objConn.close
Datahent = objRS(1) & " " & objRS(2) & " " & objRS(3)
ElseIf request.form("laerer_initialer")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer,
wintp.lokale FROM wintp"
retur = retur & " WHERE (((wintp.laerer)='" &
laerer_initialer
retur = retur & "') AND ((wintp.dag)='" & dag & "')
AND ((wintp.modul)=" & modul & "))"
objRS.Open retur
objRS.Close
objConn.close
Datahent = objRS(1) & " " & objRS(2) & " " &
objRS(3)
ElseIF request.form("rum")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer,
wintp.lokale FROM wintp"
retur = retur & " WHERE (((wintp.lokale)='" &
rum
retur = retur & "') AND ((wintp.dag)='" & dag &
"') AND ((wintp.modul)=" & modul & "))"
objRS.Open retur
objRS.Close
objConn.close
Datahent = objRS(1) & " " & objRS(2) & " " &
objRS(3)
Else
Datahent = ""
objConn.close
End If
End Function

mvh
Jonas

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com


*XxX* (12-09-2004)
Kommentar
Fra : *XxX*


Dato : 12-09-04 13:10


"Jonas" <jonas_cilieborg@maildk> wrote in message
news:mn.62cd7d49e8988d3a.6227@maildk...
> > i din retur variabel mangler du en hel masse mellemrum, ca for hver gang
du
> > laver en ny retur = retur & ...
>
> Så skulle den være rettet, tak for det! Jeg har også fundet en del
> andre fejl. Så nu kan jeg da få siden til at køre.
> http://www.toender-gym.dk/koll/jc/skema.asp
> Men det ser ud som om når jeg aktiverer en menu og den genloader siden
> så beholder den ikke værdien af den aktuelle variabel, hvorfor der ikke
> bliver slået op i databasen, hvad gør jeg galt?
> Desuden er min genload funktion lavet i JavaScript men jeg ville
> egentlig gerne holde det hele i VBScript, men nedenstående forsøg
> virker ikke:
>
> <SCRIPT language=JavaScript type=text/javascript>
> <!--
> function loadpage(pageURL){
> location.href = "http://www.toender-gym.dk/koll/jc/skema.asp"
> }
> //-->
> </SCRIPT>
> <%
> Function loadPage(pageURL)
> location.href = "http://www.toender-gym.dk/koll/jc/skema.asp"
> End Function
>

som det ser ud prøver du at lave en javascript funktion i asp, du kan ikke
kalde en serverside funktion fra klienten da alle serverside funktioner
allerede er blvet udført når de når klienten

hold dig til JS



Jonas (13-09-2004)
Kommentar
Fra : Jonas


Dato : 13-09-04 14:37

(supersedes <mn.6ba37d49fbf71a71.6227@maildk>)

> som det ser ud prøver du at lave en javascript funktion i asp, du kan ikke
> kalde en serverside funktion fra klienten da alle serverside funktioner
> allerede er blvet udført når de når klienten
>
> hold dig til JS
Nu har jeg så fået det til at virke med genload af siden, jeg bruger en
onChange=skemakald.Submit() istedet for mine funktioner.
Men jeg kan stadig ikke få læst data ind i min tabel. Min funktion til
databaseopslag ser nu således ud:

Function Datahent(dag,modul)
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Data Source=skema;User ID=;Password=;"
Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS.ActiveConnection = objConn
If request.form("elevnavn")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale"
retur = retur & " FROM GASdata INNER JOIN wintp ON
GASdata.Hold = wintp.titel"
retur = retur & " WHERE (((wintp.dag)='" & dag &"') AND
((wintp.modul)=" & modul & ")"
retur = retur & " AND ((GASdata.Navn)='" & elevnavn & "'))"
objRS.Open retur
variabel1 = ""
While Not objRS.EOF
variabel1 = variabel1 & objRS("titel") & " " &
objRS("laerer") & " " & objRS("lokale")
objRS.MoveNext
Wend
objRS.Close
objConn.close
Datahent = variabel1
ElseIf laernavn<>"" Then
retur = "SELECT wintp.titel, wintp.laerer, wintp.lokale
FROM wintp"
retur = retur & " WHERE (((wintp.laerer)='" &
laerer_navn
retur = retur & "') AND ((wintp.dag)='" & dag & "') AND
((wintp.modul)=" & modul & "))"
objRS.Open retur
variabel1 = ""
While Not objRS.EOF
variabel1 = variabel1 & objRS("titel") & " " &
objRS("laerer") & " " & objRS("lokale")
objRS.MoveNext
Wend
objRS.Close
objConn.close
Datahent = variabel1
ElseIf request.form("laerer_initialer")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer,
wintp.lokale FROM wintp"
retur = retur & " WHERE (((wintp.laerer)='" &
laerer_initialer
retur = retur & "') AND ((wintp.dag)='" & dag & "')
AND ((wintp.modul)=" & modul & "))"
objRS.Open retur
variabel1 = ""
While Not objRS.EOF
variabel1 = variabel1 & objRS("titel") & " " &
objRS("laerer") & " " & objRS("lokale")
objRS.MoveNext
Wend
objRS.Close
objConn.close
Datahent = variabel1
ElseIF request.form("rum")<>"" Then
retur = "SELECT wintp.titel, wintp.laerer,
wintp.lokale FROM wintp"
retur = retur & " WHERE (((wintp.lokale)='" &
rum
retur = retur & "') AND ((wintp.dag)='" & dag &
"') AND ((wintp.modul)=" & modul & "))"
objRS.Open retur
variabel1 = ""
While Not objRS.EOF
variabel1 = variabel1 & objRS("titel") & "
" & objRS("laerer") & " " & objRS("lokale")
objRS.MoveNext
Wend
objRS.Close
objConn.close
Datahent = variabel1
Else
Datahent = ""
objConn.close
End If
End Function


Hvis jeg fjerner While-løkkerne og erstatter dem med linier af typen
Datahent = objRS("titel") & " " & objRS("laerer") & " " &
objRS("lokale"). får jeg en "exception occured" fejl. Som funktionen er
nu, får jeg ikke nogen fejlmeddelelse, men min tabel på siden er tom.

Kaldet af funktionen Datahent ser stadigvæk således ud:

<tr>
<td width="16%" align="center">9:50-11:20</td>
<td width="16%"><% strA = Datahent("manu",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("tiru",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("onsu",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("toru",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
<td width="17%"><% strA = Datahent("freu",2)
Response.Write HTMLEncode(strA) %>&nbsp;</td>
</tr>

mvh
Jonas

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste