/ 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
? Forrige - Næste record
Fra : Ukendt


Dato : 27-12-06 17:55

Hej

Jeg er i gang med at bygge et fotogalleri på www.fladbrovej.dk .
Når man vælger et billede på siden www.fladbrovej.dk/foto/foto-galleri.asp
eller www.fladbrovej.dk/foto/foto-db.asp , vil jeg gerne have mulighed for
at vælge næste eller forrige billede.

Jeg har fundet en løsning på 'Næste' som ikke er optimal men fungerer (jeg
henter alle records som er >= med valgte 'Id', og finder 'Id' på næste
billede med 'rs.MoveNext' hvis ikke næste er 'EOF'), jeg har ikke fundet
løsningen på 'Forrige', kan I hjælpe med forslag?

Min kode:

<%
SQLstmt = "SELECT * FROM tblFoto WHERE Id >= " & Request("id") & " ORDER BY
Id ASC"
Conn.Execute(SQLstmt)
Set rs = Conn.Execute(SQLstmt)

Dim currentPic,fotoTekst,fotoFilnavn,nextPic
currentPic = rs("Id")
fotoTekst = rs("fotoTekst")
fotoFilnavn = rs("fotoFilnavn")
rs.MoveNext
IF NOT rs.EOF THEN
nextPic = rs("Id")
ELSE
SQLstmt = "SELECT Id FROM tblFoto ORDER BY Id ASC"
Conn.Execute(SQLstmt)
Set rs = Conn.Execute(SQLstmt)
nextPic = rs("Id")
END IF
%>

<a href="vis-foto.asp?id=<%=nextPic%>">Næste</a> <a
href="vis-foto.asp?id=<%=nextPic%>"><img src="../images/ArrowRight.gif"
border="0" alt="Next"></a><br>
<br>
<img src="http://fladbrovej.dk/images/<%=fotoFilnavn%>"
alt="<%=fotoTekst%>">
<br>

<div class="overskrift"><%=fotoTekst%></div>

M.v.h.
Henning



 
 
Finn Elmgaard (28-12-2006)
Kommentar
Fra : Finn Elmgaard


Dato : 28-12-06 05:41

"Henning Smed Sørensen" <Henning snabela smeds dot dk> wrote in message
news:4592a577$0$4159$d40e179e@nntp02.dk.telia.net...

> Når man vælger et billede på siden www.fladbrovej.dk/foto/foto-galleri.asp
> eller www.fladbrovej.dk/foto/foto-db.asp , vil jeg gerne have mulighed for
> at vælge næste eller forrige billede.
>
> Jeg har fundet en løsning på 'Næste' som ikke er optimal men fungerer (jeg
> henter alle records som er >= med valgte 'Id', og finder 'Id' på næste
> billede med 'rs.MoveNext' hvis ikke næste er 'EOF'), jeg har ikke fundet
> løsningen på 'Forrige', kan I hjælpe med forslag?
>
> Min kode:
>

Du har til enhver tid styr på, hvilken billed ID du aktuelt viser, idet du
overfører ID'et som en parameter ved kald af næste side. Så vil det være
muligt at kalde næste side (billede) med ID+1 og forrige billede med ID-1.

Når det fungerer, så husk speciel kode til håndtering af første og sidste
billede.

mvh
Finn




Ukendt (27-12-2006)
Kommentar
Fra : Ukendt


Dato : 27-12-06 22:39


"Finn Elmgaard" <finnxxx@elmgaard.com> skrev i en meddelelse
news:4592cbb9$0$4175>
>> Når man vælger et billede på siden
>> www.fladbrovej.dk/foto/foto-galleri.asp
>> eller www.fladbrovej.dk/foto/foto-db.asp , vil jeg gerne have mulighed
>> for
>> at vælge næste eller forrige billede.
>>
>> Jeg har fundet en løsning på 'Næste' som ikke er optimal men fungerer
>> (jeg
>> henter alle records som er >= med valgte 'Id', og finder 'Id' på næste
>> billede med 'rs.MoveNext' hvis ikke næste er 'EOF'), jeg har ikke fundet
>> løsningen på 'Forrige', kan I hjælpe med forslag?
>>
>> Min kode:
>>
>
> Du har til enhver tid styr på, hvilken billed ID du aktuelt viser, idet du
> overfører ID'et som en parameter ved kald af næste side. Så vil det være
> muligt at kalde næste side (billede) med ID+1 og forrige billede med ID-1.
>
Tak for dit svar
Desværre er det ikke så simpelt, 'Id' er databasens autonummerering så hvis
en post slettes er der ikke styr på nummereringen, derfor bruger jeg
'rs.MoveNext' for at få næste Id.
M.v.h.
Henning



Jens Gyldenkærne Cla~ (28-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-12-06 00:45

Henning Smed Sørensen skrev:

> Jeg har fundet en løsning på 'Næste' som ikke er optimal men
> fungerer (jeg henter alle records som er >= med valgte 'Id',
> og finder 'Id' på næste billede med 'rs.MoveNext'

Du kan optimere den noget ved at bruge TOP 2 - så henter du højst
én post mere end den du skal vise.

SELECT TOP 2 * FROM tblFoto...


> jeg har ikke fundet løsningen på 'Forrige',

En mulighed er en ekstra forespørgsel (antager at du kun skal bruge
id-nummeret):

SELECT MAX(id) as prevID FROM tblFoto WHERE id < DIT_ID

Du kan selvfølgelig også bruge den metode til at finde næste-id'et:

SELECT MIN(id) as nextID FROM tblFoto WHERE id > DIT_ID

- men det er næppe hurtigere end at bruge movenext som du gør nu.

I begge tilfælde vil EOF betyde at DIT_ID ligger først hhv. sidst.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Ukendt (28-12-2006)
Kommentar
Fra : Ukendt


Dato : 28-12-06 08:05


"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
> Du kan optimere den noget ved at bruge TOP 2 - så henter du højst
> én post mere end den du skal vise.
>
> SELECT TOP 2 * FROM tblFoto...
>
>> jeg har ikke fundet løsningen på 'Forrige',
>
> En mulighed er en ekstra forespørgsel (antager at du kun skal bruge
> id-nummeret):
>
> SELECT MAX(id) as prevID FROM tblFoto WHERE id < DIT_ID
>
> Du kan selvfølgelig også bruge den metode til at finde næste-id'et:
>
> SELECT MIN(id) as nextID FROM tblFoto WHERE id > DIT_ID
>
> - men det er næppe hurtigere end at bruge movenext som du gør nu.
>
> I begge tilfælde vil EOF betyde at DIT_ID ligger først hhv. sidst.

Hej Jens
Mange tak for hjælpen, jeg arbejder videre med de svar du og Jørn sender .

Jeg ved for lidt om SQL forespørgsler og options kan I foreslå nogle
bøger/links om emnet?

Godt Nytår
Henning



Jens Gyldenkærne Cla~ (28-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-12-06 10:51

Henning Smed Sørensen skrev:

> Jeg ved for lidt om SQL forespørgsler og options kan I foreslå
> nogle bøger/links om emnet?

Jeg plejer at anbefale Joakim Dalbys "Databasehåndbogen" - det er
en gammel sag, men den giver en fin gennemgang af standard sql-
syntaks (ikke rettet mod noget specielt produkt). Den kan
formentlig findes på biblioteket.

Der findes også masser af engelske moppedrenge, jeg har selv en
rettet specifikt mod MSSQL 2000.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Jørn Andersen (28-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 28-12-06 18:05

On Thu, 28 Dec 2006 10:51:06 +0100, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Henning Smed Sørensen skrev:
>
>> Jeg ved for lidt om SQL forespørgsler og options kan I foreslå
>> nogle bøger/links om emnet?
>
>Jeg plejer at anbefale Joakim Dalbys "Databasehåndbogen" - det er
>en gammel sag, men den giver en fin gennemgang af standard sql-
>syntaks (ikke rettet mod noget specielt produkt). Den kan
>formentlig findes på biblioteket.

Derudover et par andre muligheder:
James Hoffman: Introduction to Structured Query Language
<url:
http://web.archive.org/web/20011116021648/w3.one.net/~jhoffman/sqltut.htm>

W3Schools: SQL Tutorial
<url: http://www.w3schools.com/sql/default.asp>

SqlCourse.com: Interactive Online SQL Training
<url: http://sqlcourse.com/>
SqlCourse2.com: Advanced Online SQL Training
<url: http://sqlcourse2.com/>

ASP Alliance: Free SQL Tutorials
<url: http://authors.aspalliance.com/habal/sql/default.asp>
(har også en række links til flere SQL-sites)

Alle disse handler mest om selve syntaksen i SQL-sproget, og starter
oftest på et *meget* lavt niveau.
Hoffmans er dog også rimeligt god på JOINs og aggregat-funktioner
(eller havd det nu hedder på dansk - "beregninger" ?).


Ellers kan du også komme et stykke vej, hvis du har adgang til en
Access-database.
Dels har den en meget omfattende hjælpe-funktion. Access 97-versionen
er efter min mening mere overskuelig end de nyere.
Dels har den et par gode eksempel-databaser. (Northwind.mdb hedder den
ene vist.)

Dels kan du få meget ud af at bruge forespørgselsgitteret (QBE: Query
By Example).

Du kan både bruge de indbyggede Wizards i QBE-gitteret, eller du kan
hente de tabeller ind, du skal bruge, lave de relationer, du har brug
for og vælge dine felter. Check så med nogle eksempel-data, om du får
det forventede resultat.
Når du har det, så skift til SQL-visning, og se om du forstår meningen
med det.

Jeg bruger den jævnligt, hvis jeg i ASP-sammenhæng har brug for en
forespørgsel, som jeg ikke lige kan overskue i mit lille hoved. Fra
Sql-visning kan forespørgslen kopieres direkte over i ASP-scriptet
(når man lige retter nogle anførselstegn m.v.).

En fordel ved Access i ASP-sammenhæng er også, at man (stort set) kan
bruge de fleste af de VBScript-funktioner, man i forvejen kender fra
ASP-VBScript til fx at lade SQL'en:
- beordre dato-beregninger i databasen
(fx: Year([Foedt]) AS FoedtAaar)
- lægge tekststrenge sammen
(fx: [Fornavn] & ' ' & [Efternavn] AS Navn)
osv.

Problemet med databaser er dog, at man ikke slipper for noget mere
basal teori. Relations-databaser er ikke intuitive på samme måde som
fx et regneark.

Du kan være heldig at finde et af de små A4-hæfter, som kan hjælpe dig
videre, men de fleste holder sig desværre til at snakke om selve
SQL-syntaksen, og det er ikke den sværeste del.

Jeg har én et eller andet sted (hvis ikke den er lånt ud), som jeg
desværre ikke kan finde lige nu. Men kig efter, om den forklarer noget
om "normalisering" af din tabel-opbygning og om simple E-R diagrammer.
Hvis den gør, så køb den

4GuysFromRolla.com har en lille introduktion til bl.a. normalisering:
"The Importance of Data Modeling"
<url: http://www.4guysfromrolla.com/webtech/datamodeling.shtml>
- hvor de bla. henviser til en artikel:

SqlTeam.com: "Database Design and Modeling Fundamentals"
<url: http://www.sqlteam.com/item.asp?ItemID=122>


Endelig: Folkene i dk.edb.database og dk.edb.database.ms-access er
vældig flinke til at svare på spørgsmål.


Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (29-12-2006)
Kommentar
Fra : Ukendt


Dato : 29-12-06 08:16


"Jørn Andersen" <jorn@jorna.dk> wrote in message
>>Henning Smed Sørensen skrev:
>>
>>> Jeg ved for lidt om SQL forespørgsler og options kan I foreslå
>>> nogle bøger/links om emnet?
>>
>>Jeg plejer at anbefale Joakim Dalbys "Databasehåndbogen" - det er
>>en gammel sag, men den giver en fin gennemgang af standard sql-
>>syntaks (ikke rettet mod noget specielt produkt). Den kan
>>formentlig findes på biblioteket.
>
> Derudover et par andre muligheder:
> James Hoffman: Introduction to Structured Query Language
> <url:
> http://web.archive.org/web/20011116021648/w3.one.net/~jhoffman/sqltut.htm>
>
> W3Schools: SQL Tutorial
> <url: http://www.w3schools.com/sql/default.asp>
>
> SqlCourse.com: Interactive Online SQL Training
> <url: http://sqlcourse.com/>
> SqlCourse2.com: Advanced Online SQL Training
> <url: http://sqlcourse2.com/>
>
> ASP Alliance: Free SQL Tutorials
> <url: http://authors.aspalliance.com/habal/sql/default.asp>
> (har også en række links til flere SQL-sites)
>
> Alle disse handler mest om selve syntaksen i SQL-sproget, og starter
> oftest på et *meget* lavt niveau.
> Hoffmans er dog også rimeligt god på JOINs og aggregat-funktioner
> (eller havd det nu hedder på dansk - "beregninger" ?).
>
>
> Ellers kan du også komme et stykke vej, hvis du har adgang til en
> Access-database.
> Dels har den en meget omfattende hjælpe-funktion. Access 97-versionen
> er efter min mening mere overskuelig end de nyere.
> Dels har den et par gode eksempel-databaser. (Northwind.mdb hedder den
> ene vist.)
>
> Dels kan du få meget ud af at bruge forespørgselsgitteret (QBE: Query
> By Example).
>
> Du kan både bruge de indbyggede Wizards i QBE-gitteret, eller du kan
> hente de tabeller ind, du skal bruge, lave de relationer, du har brug
> for og vælge dine felter. Check så med nogle eksempel-data, om du får
> det forventede resultat.
> Når du har det, så skift til SQL-visning, og se om du forstår meningen
> med det.
>
> Jeg bruger den jævnligt, hvis jeg i ASP-sammenhæng har brug for en
> forespørgsel, som jeg ikke lige kan overskue i mit lille hoved. Fra
> Sql-visning kan forespørgslen kopieres direkte over i ASP-scriptet
> (når man lige retter nogle anførselstegn m.v.).
>
> En fordel ved Access i ASP-sammenhæng er også, at man (stort set) kan
> bruge de fleste af de VBScript-funktioner, man i forvejen kender fra
> ASP-VBScript til fx at lade SQL'en:
> - beordre dato-beregninger i databasen
> (fx: Year([Foedt]) AS FoedtAaar)
> - lægge tekststrenge sammen
> (fx: [Fornavn] & ' ' & [Efternavn] AS Navn)
> osv.
>
> Problemet med databaser er dog, at man ikke slipper for noget mere
> basal teori. Relations-databaser er ikke intuitive på samme måde som
> fx et regneark.
>
> Du kan være heldig at finde et af de små A4-hæfter, som kan hjælpe dig
> videre, men de fleste holder sig desværre til at snakke om selve
> SQL-syntaksen, og det er ikke den sværeste del.
>
> Jeg har én et eller andet sted (hvis ikke den er lånt ud), som jeg
> desværre ikke kan finde lige nu. Men kig efter, om den forklarer noget
> om "normalisering" af din tabel-opbygning og om simple E-R diagrammer.
> Hvis den gør, så køb den
>
> 4GuysFromRolla.com har en lille introduktion til bl.a. normalisering:
> "The Importance of Data Modeling"
> <url: http://www.4guysfromrolla.com/webtech/datamodeling.shtml>
> - hvor de bla. henviser til en artikel:
>
> SqlTeam.com: "Database Design and Modeling Fundamentals"
> <url: http://www.sqlteam.com/item.asp?ItemID=122>
>
>
> Endelig: Folkene i dk.edb.database og dk.edb.database.ms-access er
> vældig flinke til at svare på spørgsmål.

Hej Jørn,
Tak for hjælpen.

Godt Nytår
Henning



Jørn Andersen (28-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 28-12-06 01:17

On Wed, 27 Dec 2006 17:55:15 +0100, "Henning Smed Sørensen" <Henning
snabela smeds dot dk> wrote:

>Jeg er i gang med at bygge et fotogalleri på www.fladbrovej.dk .
>Når man vælger et billede på siden www.fladbrovej.dk/foto/foto-galleri.asp
>eller www.fladbrovej.dk/foto/foto-db.asp , vil jeg gerne have mulighed for
>at vælge næste eller forrige billede.
>
>Jeg har fundet en løsning på 'Næste' som ikke er optimal men fungerer (jeg
>henter alle records som er >= med valgte 'Id', og finder 'Id' på næste
>billede med 'rs.MoveNext' hvis ikke næste er 'EOF'), jeg har ikke fundet
>løsningen på 'Forrige', kan I hjælpe med forslag?
>
>Min kode:
><%
>SQLstmt = "SELECT * FROM tblFoto WHERE Id >= " & Request("id") & " ORDER BY
>Id ASC"

Den kunne optimeres noget ved at bruge TOP 2:
SQLstmt = "SELECT TOP 2 Id, fotoTekst, fotoFilnavn FROM ..."

Så henter du kun to records, og hvis du har mange billeder i basen,
vil der være en betydelig performance-gevinst.

Jeg foretrækker desuden at bruge feltnavne, frem for "*" - det gør
både koden mere gennemskuelig, og hvis du har flere felter i
databasen, sparer du at hente unødvendige data.
(Den del vedrører imidlertid ikke dit problem ...)

>Conn.Execute(SQLstmt)
>Set rs = Conn.Execute(SQLstmt)

Den øverste af disse to linier er overflødig (= tjener ikke noget
formål).
(Dette vedrører heller ikke dit problem ...)

For at hente forrige record, tror jeg du er nødt til at lave en ekstra
forespørgsel:

strSqlPrev = "SELECT TOP 1 Id FROM tblFoto" & _
" WHERE Id < " & Request("id") & " ORDER BY Id DESC"
Set rsPrev = Conn.Execute(strSqlPrev)

If Not rsPrev.Eof Then
intPrevPic = rsPrev("Id")
Else
intPrevPic = 0 ' Eller hvad du synes
End If

rsPrev.Close
Set rsPrev = Nothing

<snip>

>IF NOT rs.EOF THEN
> nextPic = rs("Id")
>ELSE

Koden herunder forstår jeg ikke formålet med?
> SQLstmt = "SELECT Id FROM tblFoto ORDER BY Id ASC"
> Conn.Execute(SQLstmt)
> Set rs = Conn.Execute(SQLstmt)
> nextPic = rs("Id")
>END IF
>%>

If intPrevPic <> 0 Then
' Skriv link til foregående
End If


Good luck!

--
Jørn Andersen,
Brønshøj

Ukendt (28-12-2006)
Kommentar
Fra : Ukendt


Dato : 28-12-06 07:49

"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
> Koden herunder forstår jeg ikke formålet med?
>> SQLstmt = "SELECT Id FROM tblFoto ORDER BY Id ASC"
>> Conn.Execute(SQLstmt)
>> Set rs = Conn.Execute(SQLstmt)
>> nextPic = rs("Id")
>>END IF
>>%>
Hej Jørn
Tak for dit svar jeg arbejder videre med de forespørgsler du og Jens
foreslår.
Koden herover har jeg midlertidigt indsat for at få 'Næste' til at gå til
første record hvis 'rs.MoveNext' = 'EOF', jeg er klar over at jeg henter
alle 'Id' poster og forespørgselen burde være SELECT MIN(Id).

Godt Nytår
Henning



Ukendt (28-12-2006)
Kommentar
Fra : Ukendt


Dato : 28-12-06 09:21

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
> Du kan optimere den noget ved at bruge TOP 2 - så henter du højst
> én post mere end den du skal vise.
>
> SELECT TOP 2 * FROM tblFoto...
>
>
>> jeg har ikke fundet løsningen på 'Forrige',
>
> En mulighed er en ekstra forespørgsel (antager at du kun skal bruge
> id-nummeret):
>
> SELECT MAX(id) as prevID FROM tblFoto WHERE id < DIT_ID

og

"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
> For at hente forrige record, tror jeg du er nødt til at lave en ekstra
> forespørgsel:
>
> strSqlPrev = "SELECT TOP 1 Id FROM tblFoto" & _
> " WHERE Id < " & Request("id") & " ORDER BY Id DESC"
> Set rsPrev = Conn.Execute(strSqlPrev)
>

Hej Jens og Jørn,
Tak for hjælpen, nu fungerer www.fladbrovej.dk/foto/vis-foto.asp?id=7 .

Min kode:
<%
SQLstmt = "SELECT TOP 2 Id,fotoTekst,fotoFilnavn FROM tblFoto WHERE Id >= "
& Request("id") & " ORDER BY Id ASC"
Set rs = Conn.Execute(SQLstmt)

SqlPrev = "SELECT TOP 1 Id FROM tblFoto WHERE Id < " & Request("id") & "
ORDER BY Id DESC"
Set rsPrev = Conn.Execute(SqlPrev)

dim currentPic,fotoTekst,fotoFilnavn,nextPic,previusPic
currentPic = rs("Id")
fotoTekst = rs("fotoTekst")
fotoFilnavn = rs("fotoFilnavn")

IF NOT rsPrev.EOF THEN
previusPic = rsPrev("Id")
ELSE
SqlPrev = "SELECT MAX(Id) as previusId FROM tblFoto"
Set rsPrev = Conn.Execute(SqlPrev)
previusPic = rsPrev("previusId")
END IF

rs.MoveNext
IF NOT rs.EOF THEN
nextPic = rs("Id")
ELSE
SQLstmt = "SELECT MIN(Id) as nextId FROM tblFoto"
Set rs = Conn.Execute(SQLstmt)
nextPic = rs("nextId")
END IF
%>
<a href="vis-foto.asp?id=<%=previusPic%>"><img src="../images/ArrowLeft.gif"
border="0" alt="Next"></a>&nbsp;<a
href="vis-foto.asp?id=<%=previusPic%>">Forrige</a>
&nbsp;&nbsp;<a href="vis-foto.asp?id=<%=nextPic%>">Næste</a> <a
href="vis-foto.asp?id=<%=nextPic%>"><img src="../images/ArrowRight.gif"
border="0" alt="Next"></a><br>

Godt Nytår til alle i gruppen og tak for jeres hjælp i 2006
Henning



Jens Gyldenkærne Cla~ (28-12-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-12-06 11:09

Henning Smed Sørensen skrev:

> "Jens Gyldenkærne Clausen" <jens@gyros.invalid>

[snip]

> og
>
> "Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse


Teknisk note: Det er en dårlig ide at citere fra forskellige
deltråde i et enkelt svar - det er ikke så nemt at overskue
(normalt kan man bruge antallet af >-tegn til at afgøre hvor langt
tilbage i deltråden man skal for at finde ophavsmanden). Lav to
svar hvis der er konkrete ting i hvert enkelt indlæg du vil
kommentere, eller nøjes med ét svar og citer fra det indlæg du
svarer direkte på (så kan man evt. tekstligt henvise til det andet
indlæg - a la "også tak til Knud Børge for hjælpen")


> Tak for hjælpen, nu fungerer
> www.fladbrovej.dk/foto/vis-foto.asp?id=7 .

Fino.


> Min kode:

Et par kommentarer følger.


> SQLstmt = "SELECT TOP 2 Id,fotoTekst,fotoFilnavn FROM tblFoto
> WHERE Id >= " & Request("id") & " ORDER BY Id ASC"

Pas på med at anvende request-værdier direkte i en sql-sætning. Det
kan give uønskede resultater eller fejl hvis der puttes noget andet
i formens id-felt end det du regner med.
Se evt. <http://asp-faq.dk/article/?id=95>


> Set rs = Conn.Execute(SQLstmt)
>
> SqlPrev = "SELECT TOP 1 Id FROM tblFoto WHERE Id < " &
> Request("id") & " ORDER BY Id DESC"
> Set rsPrev = Conn.Execute(SqlPrev)

Overvej at lukke det første postsæt før du åbner det andet. Som
siden er skrevet nu, kræver hver instans af den to forbindelser til
databasen - men den kan nemt laves så du kan klare dig med én. Åbn
den ene forespørgsel, gem de værdier du skal hente i variable, luk
postsættet og åbn så det andet du skal bruge.


> IF NOT rsPrev.EOF THEN
> previusPic = rsPrev("Id")
> ELSE
> SqlPrev = "SELECT MAX(Id) as previusId FROM tblFoto"
> Set rsPrev = Conn.Execute(SqlPrev)
> previusPic = rsPrev("previusId")
> END IF

Ovenstående troede jeg først var en fejl - men det ser ud til at du
bare vil have next/prev-linkene til at gå i ring, og så er den god
nok. Du glemmer dog at lukke den første instans af rsPrev - det er
ikke så heldigt.

> IF NOT rs.EOF THEN
> nextPic = rs("Id")
> ELSE
> SQLstmt = "SELECT MIN(Id) as nextId FROM tblFoto"
> Set rs = Conn.Execute(SQLstmt)
> nextPic = rs("nextId")
> END IF


- det samme gælder her (for rs).
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Ukendt (28-12-2006)
Kommentar
Fra : Ukendt


Dato : 28-12-06 13:43

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns98A77162CF2D0jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Henning Smed Sørensen skrev:
>
>> "Jens Gyldenkærne Clausen" <jens@gyros.invalid>
>
> [snip]
>
>> og
>>
>> "Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
>
>
> Teknisk note: Det er en dårlig ide at citere fra forskellige
> deltråde i et enkelt svar - det er ikke så nemt at overskue
> (normalt kan man bruge antallet af >-tegn til at afgøre hvor langt
> tilbage i deltråden man skal for at finde ophavsmanden). Lav to
> svar hvis der er konkrete ting i hvert enkelt indlæg du vil
> kommentere, eller nøjes med ét svar og citer fra det indlæg du
> svarer direkte på (så kan man evt. tekstligt henvise til det andet
> indlæg - a la "også tak til Knud Børge for hjælpen")

OK det gør jeg i fremtiden.

> Et par kommentarer følger.
>> SQLstmt = "SELECT TOP 2 Id,fotoTekst,fotoFilnavn FROM tblFoto
>> WHERE Id >= " & Request("id") & " ORDER BY Id ASC"
>
> Pas på med at anvende request-værdier direkte i en sql-sætning. Det
> kan give uønskede resultater eller fejl hvis der puttes noget andet
> i formens id-felt end det du regner med.
> Se evt. <http://asp-faq.dk/article/?id=95>

Tak for advaselen jeg indsætter en validering af værdien i Request("id") før
der søges i DB

>> Set rs = Conn.Execute(SQLstmt)
>>
>> SqlPrev = "SELECT TOP 1 Id FROM tblFoto WHERE Id < " &
>> Request("id") & " ORDER BY Id DESC"
>> Set rsPrev = Conn.Execute(SqlPrev)
>
> Overvej at lukke det første postsæt før du åbner det andet. Som
> siden er skrevet nu, kræver hver instans af den to forbindelser til
> databasen - men den kan nemt laves så du kan klare dig med én. Åbn
> den ene forespørgsel, gem de værdier du skal hente i variable, luk
> postsættet og åbn så det andet du skal bruge.

Jeg lukker begge postsæt og databaseforbindelsen efter HTML koden der viser
billede og tekst, men jeg ændrer koden så jeg lukker postsættene når data er
overført til variabler.

>> IF NOT rsPrev.EOF THEN
>> previusPic = rsPrev("Id")
>> ELSE
>> SqlPrev = "SELECT MAX(Id) as previusId FROM tblFoto"
>> Set rsPrev = Conn.Execute(SqlPrev)
>> previusPic = rsPrev("previusId")
>> END IF
>
> Ovenstående troede jeg først var en fejl - men det ser ud til at du
> bare vil have next/prev-linkene til at gå i ring, og så er den god
> nok. Du glemmer dog at lukke den første instans af rsPrev - det er
> ikke så heldigt.
>
>> IF NOT rs.EOF THEN
>> nextPic = rs("Id")
>> ELSE
>> SQLstmt = "SELECT MIN(Id) as nextId FROM tblFoto"
>> Set rs = Conn.Execute(SQLstmt)
>> nextPic = rs("nextId")
>> END IF
> - det samme gælder her (for rs).
OK jer retter så postsættene lukkes før næste forspørgsel.
Ja både 'Forrige' og 'Næste' er en loop.


Mange tak
Henning



Jørn Andersen (28-12-2006)
Kommentar
Fra : Jørn Andersen


Dato : 28-12-06 16:28

On Thu, 28 Dec 2006 13:43:02 +0100, "Henning Smed Sørensen" <Henning
snabela smeds dot dk> wrote:


>Jeg lukker begge postsæt og databaseforbindelsen efter HTML koden der viser
>billede og tekst, men jeg ændrer koden så jeg lukker postsættene når data er
>overført til variabler.

Det er i øvrigt generelt en "god ting" at gøre. Jo hurtigere du kan
frigive dine ressourcer, jo mindre serverbelastning og jo mindre
belastning af din database.

Problemet med den slags er, at det ikke altid er en selv, der opdager,
når ressourcerne mangler, og derfor er det godt at "bygge det ind i
rygraden", at ressourcer skal frigives, så snart der ikke længere er
brug for dem - og omvendt: først åbnes/instantieres, når der reelt er
brug for dem.

Det er fx en rigtig dårlig idé at have en include-fil i toppen af
siden med "Set objConn = ..." - hvorimod det er OK at have sin
DSN-streng dér.



Mvh. Jørn

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408191
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste