|
| Redirect hvis en post ikke eksisterer? Fra : Rasmus Nielsen |
Dato : 18-10-03 15:02 |
|
Hej,
Jeg har en SQL, der ser således ud:
SQL = "select * from produktblade where varenummer = " & varenr & ""
Jeg vil gerne have en Response.Redirect, der bliver udført, hvis der ikke er
en post i DB'en med det nummer. Hvordan gør jeg det?
--
Venlig hilsen, Rasmus Nielsen.
| |
Rasmus Nielsen (18-10-2003)
| Kommentar Fra : Rasmus Nielsen |
Dato : 18-10-03 15:12 |
|
Jeg har fundet ud af det - jeg havde lige glemt at der var noget der hed
rs.eof...
--
Venlig hilsen, Rasmus Nielsen.
| |
Thomas Voller (18-10-2003)
| Kommentar Fra : Thomas Voller |
Dato : 18-10-03 15:18 |
|
"Rasmus Nielsen" <postmaster@rasmusn.dk> skrev...
> Jeg vil gerne have en Response.Redirect, der bliver udført, hvis der ikke
er
> en post i DB'en med det nummer. Hvordan gør jeg det?
Du skal for det første eksekvere SQL-sætningen vha. f.eks. et
connection-objekt og eller et recordset-object. Jeg viser det med et
Connection og et Recordset-object.
Dim objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = MyConnString
objConn.Open
Dim objRS
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Source = SQL
objRS.ActiveConnection = objConn
objRS.Open
Her kommer vi så til sagens kerne. Du kan checke om dit cursoren i dit
recordset peger på BOF eller EOF. Hvis den gør det, så er dit recordset
tomt..
If objRS.BOF OR objRS.EOF Then
Response.Redirect(" http://dinside.dk")
Else
'Gør noget med din post.
End If
Husk så desuden at lukke objConn og objRS.
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
| |
Torben Brandt (18-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 18-10-03 16:17 |
|
Thomas Voller skrev:
> Her kommer vi så til sagens kerne. Du kan checke om dit cursoren i dit
> recordset peger på BOF eller EOF. Hvis den gør det, så er dit recordset
> tomt..
>
> If objRS.BOF OR objRS.EOF Then
> Response.Redirect(" http://dinside.dk")
> Else
> 'Gør noget med din post.
> End If
Du skal se på objRS.BOF _AND_ objRS.EOF.
For .BOF er altid sand når recordsettet lige er åbnet.
Derfor er det også nok at se på om .EOF er sand, for at se om
recordsettet er tomt.
/Torben
| |
Thomas Voller (18-10-2003)
| Kommentar Fra : Thomas Voller |
Dato : 18-10-03 16:36 |
|
"Torben Brandt" <name@domain.invalid> skrev
> Du skal se på objRS.BOF _AND_ objRS.EOF.
> For .BOF er altid sand når recordsettet lige er åbnet.
Den er jeg ikke med på? Hvis jeg åbner et recordset som skitseret i min
forrige post, så stiller cursoren sig da på den første record i
recordsettet, ikke på BOF. Altså så længe vi antager recordsettet ikke er
tomt.
Hvis recordsettet er tomt, så er både BOF og EOF indtruffet. Du kan da godt
have ret i man kan så bruge AND, men da både BOF og EOF er sandt, så kan man
vel lige så godt bruge OR? Det skulle der da ikke være noget galt i?
Ret mig, hvis jeg tager fejl?
> Derfor er det også nok at se på om .EOF er sand, for at se om
> recordsettet er tomt.
Rigtigt nok. Jeg forsøger bare at tage højde for så mange ting som muligt
når jeg skruer noget sammen. Det er en god vane. Her er det dog en smule
overflødigt at checke for BOF.
Mvh. Thomas.
| |
Torben Brandt (18-10-2003)
| Kommentar Fra : Torben Brandt |
Dato : 18-10-03 16:47 |
|
Thomas Voller skrev:
> "Torben Brandt" skrev:
>
>>Du skal se på objRS.BOF _AND_ objRS.EOF.
>>For .BOF er altid sand når recordsettet lige er åbnet.
>
> Den er jeg ikke med på? Hvis jeg åbner et recordset som skitseret i min
> forrige post, så stiller cursoren sig da på den første record i
> recordsettet, ikke på BOF. Altså så længe vi antager recordsettet ikke er
> tomt.
>
> Ret mig, hvis jeg tager fejl?
Næ, det var vist mig, der var gal på den. Sorry :)
/Torben
| |
Jørn Andersen (18-10-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 18-10-03 18:38 |
|
On Sat, 18 Oct 2003 17:46:55 +0200, Torben Brandt
<name@domain.invalid> wrote:
>Næ, det var vist mig, der var gal på den. Sorry :)
Men du var ikke gal på, at det er nok at teste på .eof
--
Jørn Andersen,
Brønshøj
| |
Jørgen Müller (19-10-2003)
| Kommentar Fra : Jørgen Müller |
Dato : 19-10-03 07:08 |
|
Thomas Voller skrev:
>If objRS.BOF OR objRS.EOF Then
vil det så ikke være mere korrekt at indkapsle bof og eof i en prantes?
If (rs.BOF Or rs.EOF) Then
--
Med Venlig Hilsen
Jørgen Müller
| |
Thomas Voller (19-10-2003)
| Kommentar Fra : Thomas Voller |
Dato : 19-10-03 11:26 |
|
"Jørgen Müller" <j.muller@mail.tele.dk> skrev i
> vil det så ikke være mere korrekt at indkapsle bof og eof i en prantes?
> If (rs.BOF Or rs.EOF) Then
Tjoh, måske sådan rent logisk i koden. Det er dog ikke nødvendigt. Det er
derimod nødvendigt hvis man laver noget i denne stil:
If NOT (objRS.BOF OR objRS.EOF) Then
'Recordsettet er tomt.
End If
Uden parantesen vil det blive opfattet som om recordsettet ikke må være BOF,
men skal være EOF. Dog har vi har jo flere gange fået konstateret at det er
nok at checke for EOF, så der er ingen grund til at rode sig ud i
paranteser.
If NOT objRS.EOF Then
'Recordsettet er tomt.
End If
Mvh. Thomas.
| |
Tom Jensen (19-10-2003)
| Kommentar Fra : Tom Jensen |
Dato : 19-10-03 12:45 |
|
"Thomas Voller"
> If NOT objRS.EOF Then
> 'Recordsettet er tomt.
> End If
Og så lige en pikant detalje: Der skal _ikke_ stå NOT
Der er en slåfejl fra Thomas, han ved godt at der ser sådan ud:
if objRS:EOF then
' Ingen records
else
' Der er records
end if
--
Med venlig hilsen
Tom Jensen
FF Soft
www.ffsoft.dk
Hent en gratis web shop
| |
Jørn Andersen (19-10-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 19-10-03 15:33 |
|
On Sun, 19 Oct 2003 12:44:45 +0100, "Tom Jensen" <tje@fsoft.dk> wrote:
>Der er en slåfejl fra Thomas, han ved godt at der ser sådan ud:
>
>if objRS:EOF then
"." i stedet for ":"
Der er en slåfejl fra Tom, han ved godt at der ser sådan ud:
If objRS.EOF Then
--
Jørn Andersen,
Brønshøj
| |
|
|