Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

syntaks for recordset

4 views
Skip to first unread message

Jens

unread,
Jan 4, 2014, 11:05:13 AM1/4/14
to
hej/

Jeg skal mange steder i mit asp-program hente et bestemt felt i databasetabellen "varekatalog". Derfor vil jeg gerne lave en funktion med en parameter for, hvad det er for et felt, jeg skal hente.

Altså har jeg funktionskaldet HENT(type), hvor jeg ønske at returnerer med
rs("type")

Jeg har derfor lavet funktionen

Function HENT(art)
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open DSN
strSQL = "Select " & art & " from Varekatalog order by " & art
set rs = Conn.Execute(strSQL)
...

Så langt så godt. Men hvordan adresserer jeg nu record-sættet? Altså hvordan sætter jeg HENT lig rs("art").

Function = rs("art") dur ikke
function = "rs('" & art & "')" dur heller ikke

så hvad er den korrekte syntaks?

mvh.
/jens

Leif Neland

unread,
Jan 4, 2014, 11:39:40 AM1/4/14
to
Jens kom med fᅵlgende:
> hej/
>
> Jeg skal mange steder i mit asp-program hente et bestemt felt i
> databasetabellen "varekatalog". Derfor vil jeg gerne lave en funktion med en
> parameter for, hvad det er for et felt, jeg skal hente.
>
> Altsᅵ har jeg funktionskaldet HENT(type), hvor jeg ᅵnske at returnerer med
> rs("type")
>
> Jeg har derfor lavet funktionen
>
> Function HENT(art)
> Set Conn = Server.CreateObject("ADODB.Connection")
> Conn.Open DSN
> strSQL = "Select " & art & " from Varekatalog order by " & art
> set rs = Conn.Execute(strSQL)
> ...
>
> Sᅵ langt sᅵ godt. Men hvordan adresserer jeg nu record-sᅵttet? Altsᅵ hvordan
> sᅵtter jeg HENT lig rs("art").
>
> Function = rs("art") dur ikke
> function = "rs('" & art & "')" dur heller ikke
>
> sᅵ hvad er den korrekte syntaks?

Blot rs(art)

Hvis art har den samme vᅵrdi, som da du kaldte HENT

Ellers kan du bruge et alias.

> Function HENT(art)
> Set Conn = Server.CreateObject("ADODB.Connection")
> Conn.Open DSN
> strSQL = "Select " & art & " felt from Varekatalog order by " & art
> set rs = Conn.Execute(strSQL)

Og sᅵ bruge rs("felt")

Har du overvejet at hente hele resultatsᅵttet ind i et array, og
returnere det som funktionens resultat?

Mᅵske vil det give fᅵrre databasekald.

Leif

--
Husk kᅵrelys bagpᅵ, hvis din bilfabrikant har taget den idiotiske
beslutning at undlade det.


Jens

unread,
Jan 4, 2014, 12:06:28 PM1/4/14
to
Du har sikkert ret. I mellemtiden læste jeg (og det virker) at jeg skal adresserer mit recordsets felt sådan
rs.Fields(art)

mvh og tak for hurtigt svar
/jens

Jens

unread,
Jan 5, 2014, 10:06:14 AM1/5/14
to
Hej igen/

Som sagt virker mit funktionskald med variabel parameter nu fint.
Jeg bruger det til at opsætte de valgmuligheder, som brugerne skal se, når de skal vælge fra en pickliste. Dvs. funktionen slår op i en databasetabel der hedder varekatalog, og opsamler de muligheder, der er i det valgte felt i databasen.

Pt. slår funktionen op i 3 felter: type (som er et tekstfelt) , land (som er et tekstfelt)og fadlagret (som er et logisk felt altså Sand/falsk)

Forud for funktionskaldene er der fra en form overført hvad brugeren tidligere har valgt fx type = Rødvin, land = Italien og fadlagret lig Falsk. Disse parametre er gemt i ltype, lland og lfadlagret.

Function HENT(art)
Parameter = ""
strSQL = "Select " & art & " from Varekatalog order by " & art
set rs = Conn.Execute(strSQL)
DO WHILE Not rs.eof
if rs.Fields(art) <> parameter then
if rs.Fields(art) = lland OR rs.Fields(art) = ltype OR rs.Fields(art) =lfadlagret then
response.write "<option selected>" & rs.Fields(art) & "</option>"
else
response.write "<option>" & rs.Fields(art) & "</option>"
end if
parameter = rs.Fields(art)
end if
rs.MoveNext
loop
end function

Som det ses, ønsker jeg at brugeren kan se, hvad han har valgt tidligere, altså hvilken type, hvilket land og fadlagret eller ej.

Og det går fint for tekstfelterne type og land - men ikke for det logiske felt fadlagret. Picklisten indeholder ganske vist både Sand og Falsk, som man kan vælge til næste søgning - Men ligegyldig hvad man vælger, er den option, der står øverst og kan ses lig Sand), når jeg har kørt SQL-kommandoen og hentet resultatet (som er rigtigt)

Så søgningen går som sagt OK - Men hvis der er valgt Rødvin, Italien, Nej - så vises i picklisten Rødvin, Italien, Sand

Kan du Leif eller andre se hvad jeg skal ændre for at få "selected" den rette fadlagring ?

mvh.
/jens
0 new messages