Avatar billede moejensen Nybegynder
30. april 2002 - 08:54 Der er 22 kommentarer og
1 løsning

resultset

Hvilke komandoer er det muligt at bruge her??

Jeg har et resultdet jeg har opbygget på baggrund af en sql streng, og nu vil jeg gerne lave forskellige operationer på det. F.eks, hente den record ud, hvor id =4.

Er et recordset ikke bygget op som en kopi af databasen ??

Avatar billede lenn Nybegynder
30. april 2002 - 09:01 #1
Sådanne kan det gøres

SQL = "SELECT * FROM tabel WHERE ID = '4'"
Conn.Execute(SQL)
Avatar billede eagleeye Praktikant
30. april 2002 - 09:07 #2
Ja etrecordset er en kopi af databasen og du kan begrænse den kopi til dit behov via SQL.

Prøv at kikke her:
http://www.w3schools.com/sql/default.asp
Linket er en "SQL Tutorial" som er let at gå til. Også godt som hurtigt opslag når man er i tvivl om SQL syntaxen, om der skal ' eller ikke på...


'Du laver en SQL streng, denne vælger den record som har ID=4:
SQL = "SELECT * FROM tabel WHERE ID = '4'"

'Åbner recordset
Set rs = Connetion.Execute(SQL)
Avatar billede lenn Nybegynder
30. april 2002 - 09:08 #3
Virker det???

Det skulle gøre at den kun tager data ud hvor din id er = 4
Avatar billede eagleeye Praktikant
30. april 2002 - 09:09 #4
Se nu har jeg alderrede lavet en fejl i SQL hvis ID er autonummer/tal så skal der nemlig ikke '' omkring 4. Så SQL-sætningen skal se sådan her ud:
SQL = "SELECT * FROM tabel WHERE ID = 4"
Avatar billede korup Nybegynder
30. april 2002 - 09:10 #5
Hej

Hvis du har udført dit SQL kald, så kan du bevæge dig frem og tilbage i dit resultset, dette gøres ved "resultsetnavn".moveNext() el .moveLast .moveFirst 

Du kan så søge i det med enten if for eller while sætninger..

JEg vile nok tilpasse min SQL-sætning så jeg kun fik det med jeg skulle bruge!!

/korup
Avatar billede moejensen Nybegynder
30. april 2002 - 09:22 #6
Det lyder jo lækkert, her kommer så næste del af historien.

Jeg er ved at lave et billede arkiv, hvor man vælger en billedeserie, og derefter får vist alle billeder i det pågældende billedearkiv. HErefter kan man så trykke på billedet og få det vist i et nytvindue. Det er så her jeg har skal kunne bladre frem og tilbage i de billeder der er i den valgte billedeserie.

I øjeblikket kalder jeg popupvinduet med billede id'et, på denne måde: SQL = "SELECT * FROM tabel WHERE ID = 4", og derved får jeg vis det pågældende billede.

Jeg skal nu bare have det lavet sådan at den når vinduet åbnes opbygger et resultset der kun indeholder billederne fra den valgte billedeserie, så jeg udfra det kan vælge billedet med id = 4, og derefter bladre frem og tilbage.
Avatar billede moejensen Nybegynder
30. april 2002 - 09:25 #7
Lidt mere beskrivelse:

Systemet bygger på en database med to tabeller, en der hedder billedeserie, og en der hedder image, de har følgende attributer:

Tabellen billedeserie
----------------------------------
BSId - Id for billedeserie
besk - Beskrivelse af billedeserien
overskrift - Overskrift på billedeserien
UID - Userid for personen der har oprettet billedet

Tabellen image
------------------------------------
ImageID - Billedets unikke id
beskrivelse - beskrivelse af billedet
BsId - Id'et på den billedeserie den høre til
UId - Id'et på den bruger der har uploadet det
sti - den fysiske sti på billedet
billedenavn - det fysiske navn på billedet

Visningen af billederne foregår ved at man vælger en billedeserien der ønskes vist. Derefter vises alle billederne i serien i små billeder, hvis man så trykker på billedet bliver det vist i stor format i et popopvindue. Jeg skal så bare finde ud af hvordan jeg får holdt styr på de belleder der er i den pågældende serie, så jeg kan gøre det muligt at bladre frem og tilbage i den enkelte serie. Når man når til den ene eller den anden ende af billedeserien, skal muligheden for at bladre videre den pågældende vej forsvinde.

Håber det gav lidt mere klarhed for problemet.
Avatar billede eagleeye Praktikant
30. april 2002 - 09:40 #8
På den side der viser billedet. Du skal linke til pop-up vindet ved: visbillede.asp?id=4&bs=X

'Hend det ID smat serie som skal vises i popup vinduet
imageID = reqest.querystring("id")
bs = reqest.querystring("id")
previousID = ""  'ID til forrige billed
nextID = "" 'ID til næste billede

'Find alle biller i billede serienen
sql = "SELECT ImageID FROM image WHERE BsID = " & bs
set rs = conn.execute(sql)
do while not rs.EOF
  if CInt(rs("ImageID")) = CInt(imageID) then
    rs.MoveLast
    if not rs.BOF then
      previousID = rs("imageID")
    end if
    rs.Movenext
    rs.MoveNext
    if not rs.EOF
      nextID = rs("imageID")
    end if
    break 'break ud af loopen..
  end if
  rs.movenext
loop

'Find sti til billede:
sql = "SELECT * FROM images WHERE ImageID = " imageID
set rs = conn.execute
'Udskriv/vise billed

'lav links til forrige og næste:
if previousID = "" then
  Response.write " forrige "
else
  Response.write "< href='visbilled.asp?id=" & previousID & "&bs=" & bs & "'> forrige </a>"
end if

'lav links til forrige og næste:
if nextID = "" then
  Response.write " næste "
else
  Response.write "< href='visbilled.asp?id=" & nextID & "&bs=" & bs & "'> næste </a>"
end if
Avatar billede moejensen Nybegynder
30. april 2002 - 09:44 #9
Det ser fanme godt ud, jeg tester det lige, og så vender jeg tilbage
Avatar billede moejensen Nybegynder
30. april 2002 - 10:08 #10
min kode ser nu således ud:

<%
Set imageConn = Server.CreateObject("ADODB.Connection")
imageConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../Database/VAG/image.mdb")


imageID = reqest.querystring("id")
bsid = reqest.querystring("id")
previousID = ""  'ID til forrige billed
nextID = "" 'ID til næste billede

sql = "SELECT ImageID FROM image WHERE BsID = " & bs
set rs = imageConn.execute(sql)
do while not rs.EOF
  if CInt(rs("ImageID")) = CInt(imageID) then
    rs.MoveLast
    if not rs.BOF then
      previousID = rs("imageID")
    end if
    rs.Movenext
    rs.MoveNext
    if not rs.EOF
      nextID = rs("imageID")
    end if
    break 'break ud af loopen..
  end if
  rs.movenext
loop

'Find sti til billede:
sql = "SELECT * FROM images WHERE ImageID = " imageID
set rs = imageConn.execute
'Udskriv/vise billed

%>
<html>
<head>
<style type="text/css">
<!--
a {  text-decoration: none; color: #0A246A}
a:hover {  color: #0A246A; text-decoration: underline}
-->
</style>
<title>Billed (fuld størrelse)</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<%If NOT ns.BOF OR ns.EOF Then%>
<table border="0" width="100%" height="423">
  <tr>
    <td width="100%" colspan="3" height="341"><p align="center"><img border="1" src="<%=ns("sti")%><%=ns("billedenavn")%>" width="475" height="355"></td>
  </tr>
  <tr>
    <td width="100%" colspan="3" height="52">
      <p align="left"><i><font face="Verdana" size="2"><%=ns("beskrivelse")%><br><br></font></i></td>
  </tr>
  <tr>
    <td width="100%" align="center" height="9" colspan="3"><hr noshade width="410" size="1" id="barfarve"></td>
  </tr>
  <tr>
    <td width="33%" align="center" height="9"><font size="2" face="Verdana" color="#0000FF">
    <%
    'lav links til forrige og næste:
    if previousID = "" then
      Response.write " forrige "
    else
      Response.write "< href='visbilled.asp?id=" & previousID & "&bs=" & bs & "'> forrige </a>"
    end if
    %>
    </font></td>
    <td width="33%" align="center" height="9"><font size="2" face="Verdana" color="#0000FF"><a href='java script:onClick=window.close()'>Luk vindue</a></font></td>
    <td width="34%" align="center" height="9"><font size="2" face="Verdana" color="#0000FF">
    <%
    'lav links til forrige og næste:
    if nextID = "" then
      Response.write " næste "
    else
      Response.write "< href='visbilled.asp?id=" & nextID & "&bs=" & bs & "'> næste </a>"
    end if
    %>
    </font></td>
  </tr>
</table>
<%End If%>
</body>
</html>
<%
Set SQL = Nothing
imageConn.Close
Set imageConn = Nothing
%>


-----------------------

Men jeg får følgende fejl

Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
/moejensen/VAG/se_billede_stor.asp, line 13, column 20
do while not rs.EOF Then
-------------------^
Avatar billede eagleeye Praktikant
30. april 2002 - 10:11 #11
du skal lige havde en definition af rs oppe ved:
Set imageConn = Server.CreateObject("ADODB.Connection")


Sådan her:
Set imageConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Avatar billede moejensen Nybegynder
30. april 2002 - 10:15 #12
det skal lige siges at det then der står der, prøvede jeg selv at sætte ind, men det virkede ikke
Avatar billede moejensen Nybegynder
30. april 2002 - 10:17 #13
JEg får denne fejl:

Error Type:
Microsoft VBScript compilation (0x800A03F9)
Expected 'Then'
/moejensen/VAG/se_billede_stor.asp, line 22, column 13
if not rs.EOF
------------^
Avatar billede eagleeye Praktikant
30. april 2002 - 10:18 #14
der mangler et then i den ene if sætning...

if not rs.EOF
  nextID = rs("imageID")

Til:
if not rs.EOF then
  nextID = rs("imageID")
Avatar billede moejensen Nybegynder
30. april 2002 - 10:31 #15
Her nu rettet nogle enkelte navne til, så det skulle passe. Jeg får nu denne fejl:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E24)
Rowset does not support fetching backward.
/moejensen/VAG/se_billede_stor.asp, line 16
Avatar billede eagleeye Praktikant
30. april 2002 - 10:45 #16
Ikke så godt.. prøv at ændre do while til:


sql = "SELECT ImageID FROM image WHERE BsID = " & bs
set rs = imageConn.execute(sql)

previousIDtmp = ""
do while not rs.EOF
  if CInt(rs("ImageID")) = CInt(imageID) then
    if previousIDtmp <> "" then
      previousID = previousIDtmp
    end if
    rs.MoveNext
    if not rs.EOF then
      nextID = rs("imageID")
    end if
    break 'break ud af loopen..
  end if
  previousIDtmp = rs("imageID")
  rs.movenext
loop
Avatar billede moejensen Nybegynder
30. april 2002 - 11:17 #17
Jeg får nu følgende fejl

Error Type:
Microsoft VBScript runtime (0x800A000D)
Type mismatch: 'break'
/moejensen/VAG/se_billede_stor.asp, line 25
Avatar billede eagleeye Praktikant
30. april 2002 - 12:03 #18
så bare fjerne den break ..
Avatar billede moejensen Nybegynder
30. april 2002 - 12:46 #19
Nu har jeg fået rettet en del fejl mere, og nu virker det SKU...næsten, jeg kan bladre tilbage, og forrige forsvinder når der ikke er flere billeder, men når jeg når den skal til at vise sidste billede, kommer følgende fejl:


Error Type:
ADODB.Field (0x800A0BCD)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
/moejensen/VAG/se_billede_stor.asp, line 27

Koden ser i øjeblikket sådan ud:

<%
Set imageConn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
imageConn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../Database/VAG/image.mdb")


imageID = request.querystring("imageID")
bsid = request.querystring("BSId")
previousID = ""  'ID til forrige billed
nextID = "" 'ID til næste billede

sql = "SELECT ImageID FROM image WHERE BsID = " & bsid
set rs = imageConn.execute(sql)

previousIDtmp = ""
do while not rs.EOF
  if CInt(rs("ImageID")) = CInt(imageID) then
    if previousIDtmp <> "" then
      previousID = previousIDtmp
    end if
    rs.MoveNext
    if not rs.EOF then
      nextID = rs("imageID")
    end if
    'break 'break ud af loopen..
  end if
  previousIDtmp = rs("imageID")
  rs.movenext
loop

'Find sti til billede:
sql2 = "SELECT * FROM image WHERE ImageID = " & imageID
set ns = imageConn.execute(sql2)
'Udskriv/vise billed

%>
<html>
<head>
<style type="text/css">
<!--
a {  text-decoration: none; color: #0A246A}
a:hover {  color: #0A246A; text-decoration: underline}
-->
</style>
<title>Billed (fuld størrelse)</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table border="0" width="100%" height="423">
  <tr>
    <td width="100%" colspan="3" height="341"><p align="center"><img border="1" src="<%=ns("sti")%><%=ns("billedenavn")%>" width="475" height="355"></td>
  </tr>
  <tr>
    <td width="100%" colspan="3" height="52">
      <p align="left"><i><font face="Verdana" size="2"><%=ns("beskrivelse")%><br><br></font></i></td>
  </tr>
  <tr>
    <td width="100%" align="center" height="9" colspan="3"><hr noshade width="410" size="1" id="barfarve"></td>
  </tr>
  <tr>
    <td width="33%" align="center" height="9"><font size="2" face="Verdana" color="#0000FF">
    <%
    'lav links til forrige og næste:
    if previousID = "" then
      Response.write " forrige "
    else
      Response.write "<a href='se_billede_stor.asp?ImageID=" & previousID & "&BSId=" & bsid & "'>forrige</a>"
    end if
    %>
    </font></td>
    <td width="33%" align="center" height="9"><font size="2" face="Verdana" color="#0000FF"><a href='java script:onClick=window.close()'>Luk vindue</a></font></td>
    <td width="34%" align="center" height="9"><font size="2" face="Verdana" color="#0000FF">
    <%
    'lav links til forrige og næste:
    if nextID = "" then
      Response.write " næste "
    else
      Response.write "<a href='se_billede_stor.asp?imageID=" & nextID & "&BSId=" & bsid & "'> næste </a>"
    end if
    %>
    </font></td>
  </tr>
</table>

</body>
</html>
<%
Set SQL = Nothing
imageConn.Close
Set imageConn = Nothing
%>
Avatar billede eagleeye Praktikant
30. april 2002 - 12:50 #20
Prøv der hvor der stod break (c-kode) at ændre det til Exit Do '(ASP kode)

break -> Exit do
Avatar billede moejensen Nybegynder
30. april 2002 - 12:56 #21
Nu virker det fanme, tusind tak for hjælpen, du har fortjent hver og et point...Det var super god hjælp
Avatar billede moejensen Nybegynder
30. april 2002 - 13:03 #22
du virker til at have temmelig styr på ASP, er det muligt at få dit icq nummer, så jeg kan spørge dig en anden gang?
Avatar billede moejensen Nybegynder
30. april 2002 - 13:15 #23
har du evt opså et svar på dette spørgsmål

http://www.eksperten.dk/spm/204208
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester