/ 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
Hente x antal tegn fra database
Fra : Frederik Østeraa


Dato : 15-09-03 20:58

Hejsa Gruppe.

Jeg er ved at lave en aktivitetskalender, hvor der kun skal hentes de første
hundrede tegn fra feltet 'aktivitet' i databasen.

Jeg prøver at hente de første hundrede tegn således:
-------------
Set database = Server.CreateObject ("ADODB.Connection")
database.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<STI TIL
DATABASEN>")

Set hentAktivitet = Server.CreateObject ("ADODB.Recordset")
hentAktivitet.Open "SELECT dato, klokken, LEFT( aktivitet, 100 ) AS Teaser
FROM aktiviteter WHERE dato < date() ORDER BY dato" ,database

While not hentAktivitet.EOF
Response.Write hentAktivitet.Fields("dato") & " - " &
hentAktivitet.Fields("klokken") & " - " & hentAktivitet.Fields("aktivitet")
& "<br><br>"

hentAktivitet.MoveNext
Wend
-------------

Jeg får fejlen:
-------------
ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name
or ordinal.
/aktivitetskalender/default.asp, line 61
-------------

Jeg er sikker på at felterne findes i databasen, og hvis jeg fjerner
'LEFT( aktivitet, 100 ) AS Teaser' og sætter 'aktivitet' ind i istedet,
virker det også fint, men så bliver alle felterne jo hentet fra databasen.

Er der nogle der kan hjælpe mig?

På forhånd tak.
Mvh Frederik Østeraa



 
 
Peter Lykkegaard (15-09-2003)
Kommentar
Fra : Peter Lykkegaard


Dato : 15-09-03 21:05

Frederik Østeraa wrote:
>
> Set hentAktivitet = Server.CreateObject ("ADODB.Recordset")
> hentAktivitet.Open "SELECT dato, klokken, LEFT( aktivitet, 100 ) AS
> Teaser FROM aktiviteter WHERE dato < date() ORDER BY dato" ,database
>
> While not hentAktivitet.EOF
> Response.Write hentAktivitet.Fields("dato") & " - " &
> hentAktivitet.Fields("klokken") & " - " &
> hentAktivitet.Fields("aktivitet") & "<br><br>"
----------------------^^^^^^^

Du ombøber feltnavnet til "teaser" i din SQL statement men bibeholder
"aktivitet" i din løkke
Enter skal det være
LEFT( aktivitet, 100 ) AS Aktivitet

Eller
Response.Write hentAktivitet.Fields("dato") & " - " & _
hentAktivitet.Fields("klokken") & " - " & _
hentAktivitet.Fields("teaser") & "<br><br>"

mvh/Peter Lykkegaard



Christian M. Nielsen (15-09-2003)
Kommentar
Fra : Christian M. Nielsen


Dato : 15-09-03 21:19

"Peter Lykkegaard" <polonline@hotmail.dk> wrote in message
news:3f661c50$0$32523$edfadb0f@dread16.news.tele.dk...

> Enter skal det være
> LEFT( aktivitet, 100 ) AS Aktivitet
>
> Eller
> Response.Write hentAktivitet.Fields("dato") & " - " & _
> hentAktivitet.Fields("klokken") & " - " & _
> hentAktivitet.Fields("teaser") & "<br><br>"

Alternativ:

Hent feltet som du skal, men udskriv kun de første 100 tegn på denne måde.

<%= left(oRS("aktivitet"),100)%>

Mvh / Regards
-=< Christian >=-
What capital has 164 letters in its name? See my web page to find out.
http://www.cmnielsen.dk ICQ: 25308942
"If you kneel at the fence by the priest, you get dog biscuits. Anna 6
years."



Jørn Andersen (16-09-2003)
Kommentar
Fra : Jørn Andersen


Dato : 16-09-03 01:54

On Mon, 15 Sep 2003 22:19:29 +0200, "Christian M. Nielsen"
<look_for_it@my.webpage> wrote:

>"Peter Lykkegaard" <polonline@hotmail.dk> wrote in message
>news:3f661c50$0$32523$edfadb0f@dread16.news.tele.dk...
>
>> Enter skal det være
>> LEFT( aktivitet, 100 ) AS Aktivitet
<snip>

>Hent feltet som du skal, men udskriv kun de første 100 tegn på denne måde.
>
><%= left(oRS("aktivitet"),100)%>

Af de to ville jeg klart vælge den første. Der er jo ingen grund til
at hente en masse ekstra hjem blot for at smide det væk, når SQL'en
kan nøjes med at hente lige præcis det man har brug for :)

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

Frederik Østeraa (16-09-2003)
Kommentar
Fra : Frederik Østeraa


Dato : 16-09-03 12:19


"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:tkncmvouk5n3ia35bk1bbd6asvfetmmsil@4ax.com...
>
> Af de to ville jeg klart vælge den første. Der er jo ingen grund til
> at hente en masse ekstra hjem blot for at smide det væk, når SQL'en
> kan nøjes med at hente lige præcis det man har brug for :)
>
> --
> Jørn Andersen,
> Brønshøj

Det kan jeg sagtens forstå, men jeg kan altså kun få det til at virke med
den anden mulighed.
Hvad gør jeg forkert her?

hentAktivitet.Open "SELECT dato, klokkeslet, LEFT( aktivitet, 100 ) AS
Teaser FROM aktiviteter WHERE dato < date() ORDER BY dato" ,database

Jeg udskriver den med
Response.Write hentAktivitet.Fields("Teaser")

Jeg kan som sagt godt få det til at virke ved at hente hele feltet, og kun
udskrive de første 100 tegn, men hvis jeg kan få det til at virke på denne
måde vil jeg da hellere det :)

Så er der nogle der lige kan hjælpe mig helt igennem?

Mvh
Frederik Østeraa



Jørn Andersen (16-09-2003)
Kommentar
Fra : Jørn Andersen


Dato : 16-09-03 13:31

On Tue, 16 Sep 2003 13:19:19 +0200, "Frederik Østeraa"
<frederik@oesteraa.dk> wrote:

>Hvad gør jeg forkert her?
>
>hentAktivitet.Open "SELECT dato, klokkeslet, LEFT( aktivitet, 100 ) AS
>Teaser FROM aktiviteter WHERE dato < date() ORDER BY dato" ,database
>
>Jeg udskriver den med
>Response.Write hentAktivitet.Fields("Teaser")
>
>Jeg kan som sagt godt få det til at virke ved at hente hele feltet, og kun
>udskrive de første 100 tegn, men hvis jeg kan få det til at virke på denne
>måde vil jeg da hellere det :)

Jeg har for en sikkerheds skyld lige prøvet på en Access 2000 db, og
der fungerer det fuldstændig som du har skrevet det.

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

///JJ (16-09-2003)
Kommentar
Fra : ///JJ


Dato : 16-09-03 16:58

"Frederik Østeraa" <frederik@oesteraa.dk> wrote in message
news:bk6rjn$l5a$1@sunsite.dk...
>
> "Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
> news:tkncmvouk5n3ia35bk1bbd6asvfetmmsil@4ax.com...
> >
> > Af de to ville jeg klart vælge den første. Der er jo ingen grund til
> > at hente en masse ekstra hjem blot for at smide det væk, når SQL'en
> > kan nøjes med at hente lige præcis det man har brug for :)
> >
> > --
> > Jørn Andersen,
> > Brønshøj
>
> Det kan jeg sagtens forstå, men jeg kan altså kun få det til at virke med
> den anden mulighed.
> Hvad gør jeg forkert her?


Medmindre du har ændret i kildekoden mens indlæggene er skrevet, ligger din
fejl her:

> hentAktivitet.Open "SELECT dato, klokkeslet, LEFT( aktivitet, 100 ) AS
> Teaser FROM aktiviteter WHERE dato < date() ORDER BY dato" ,database

> Response.Write hentAktivitet.Fields("dato") & " - " & _
> hentAktivitet.Fields("klokken") & " - " & _
> hentAktivitet.Fields("teaser") & "<br><br>"


Du selecter et felt ved navn "klokkeslet" men udskriver et felt ved navn
"klokken".
Fejlen (som du poster i det første indlæg) betyder i hvert fald at det felt
du beder ASP om at udskrive ikke findes i det recordset du arbejder med. Der
kan være sket en smutter da du skrev koden i dit oprindelige indlæg, for i
dit indlæg kl. 22.19 skriver du noget andet - men det kan jo også være at du
har ændret i koden. Anyway evt. post alt din kode igen og vi skal hjælpe
dig.

mvh
///JJ



Jens Gyldenkærne Cla~ (16-09-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-09-03 12:50

Frederik Østeraa skrev:

> Det kan jeg sagtens forstå, men jeg kan altså kun få det til
> at virke med den anden mulighed.

Hvilken database benytter du? Left-funktionen virker i MSSQL og
Access - men så vidt jeg husker ikke i MySQL. Funktionen findes
givetvis i alle normale databaser, men den kan godt hedde noget
andet end Left.

> hentAktivitet.Open "SELECT dato, klokkeslet, LEFT( aktivitet,
> 100 ) AS Teaser FROM aktiviteter WHERE dato < date() ORDER BY
> dato" ,database

Det ser udmærket ud. Hvilken fejl får du?

> Jeg udskriver den med
> Response.Write hentAktivitet.Fields("Teaser")

Det ser også rigtigt ud. Som ovenfor - det er uhyre vigtigt at vide
hvilken fejlmeddelelse du får.
--
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

Frederik Østeraa (16-09-2003)
Kommentar
Fra : Frederik Østeraa


Dato : 16-09-03 13:40

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns93F88CB9B18ACjcdmfdk@gyrosmod.dtext.news.tele.dk...
>
> Hvilken database benytter du?
Acces

> Left-funktionen virker i MSSQL og
> Access - men så vidt jeg husker ikke i MySQL. Funktionen findes
> givetvis i alle normale databaser, men den kan godt hedde noget
> andet end Left.
Ja, på asp-faq.dk står der noget om at den kan hedde "substring".

> Det ser udmærket ud. Hvilken fejl får du?

ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name
or ordinal.
/aktivitetskalender/default.asp, line 61

Kan du hjælpe mig?
For er virkelig lost...

Mvh
Frederik Østeraa



Jens Gyldenkærne Cla~ (16-09-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-09-03 13:56

Frederik Østeraa skrev:

> ADODB.Recordset error '800a0cc1'
> Item cannot be found in the collection corresponding to the
> requested name or ordinal.
> /aktivitetskalender/default.asp, line 61

Og linje 61 - er det den med Open? Angiv gerne hele linjen i
kildefilen.

Der er to muligheder - enten har du skrevet feltnavnet
("aktivitet") forkert i sql-sætningen, eller også er dit alias
("Teaser") skrevet forkert i udskriftslinjen.

Prøv at læse <http://asp-faq.dk/article/?id=41> for at se hvad der
er relevant at medtage i et spørgsmål.
--
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

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408945
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste