/ 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
Bogstaver som nøgleværdi ???
Fra : Esben Nielsen


Dato : 22-01-03 15:48

Hejsa !!!

Jeg skal linke til en ny side fra en database i Access, og det voldte mig
større problemer, intil jeg fandt ud af at man kun kan linke hvis
nøgleværdien er et tal.

Nu er mit spørgsmål så; Kan man ikke linke i ASP således at det er bogstaver
der er ens nøgleværdi ???

Eks: www.xxx.bilarkiv.asp?regnr=NPP

Jeg ville blive meget glad hvis der fantes en løsning på problemet, da jeg
meget gerne vil beholde min nøgleværdi som bogstaver....

Med venlig hilsen
Esben



 
 
Jimmy (22-01-2003)
Kommentar
Fra : Jimmy


Dato : 22-01-03 16:05


"Esben Nielsen" <ern@mail.dk> wrote in message
news:3e2eaf1f$0$174$edfadb0f@dread16.news.tele.dk...
> Hejsa !!!
>
> Jeg skal linke til en ny side fra en database i Access, og det voldte mig
> større problemer, intil jeg fandt ud af at man kun kan linke hvis
> nøgleværdien er et tal.

Det er ikke noget problem at have et felt der er defineret som VARCHAR(20)
og trække en side ud på basis af en WHERE Page_ID = 'NPP'

En Autogenereret primærnøgle er dog altid tal.

Men hvilken kode oplevede du problemet?

Mvh
Jimmy



Esben Nielsen (22-01-2003)
Kommentar
Fra : Esben Nielsen


Dato : 22-01-03 16:52

Tak for svaret !!!

Jeg er dog vist ikke helt med alligevel......

Men på min første side har jeg et udtræk fra databasen, og gennem et link på
på en af posterne, kommer man så til næste side med en mere specifik
beskrivelse af produktet, og hvor følgende sql-stætning er sat op:

valgt = "Select * From biler Where Regnr = " & Request.Querystring("Regnr")
Response.Write ........


Sætningen virker som sagt kun når jeg går ind i databasen og ændrer min
primærnøgle fra "tekst" til "tal" eller "autonum."

Men hvor skal jeg så deffinere den "VARCHAR(20)" ???

Mvh.
Esben






> Det er ikke noget problem at have et felt der er defineret som VARCHAR(20)
> og trække en side ud på basis af en WHERE Page_ID = 'NPP'
>
> En Autogenereret primærnøgle er dog altid tal.
>
> Men hvilken kode oplevede du problemet?
>
> Mvh
> Jimmy



Jens Gyldenkærne Cla~ (22-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-03 17:01

Esben Nielsen skrev:

> valgt = "Select * From biler Where Regnr = " &
> Request.Querystring("Regnr") Response.Write ........

Tekstværdier skal i (enkelte) anførselstegn.


> Sætningen virker som sagt kun når jeg går ind i databasen og
> ændrer min primærnøgle fra "tekst" til "tal" eller "autonum."

Fordi talværdier ikke skal i anførselstegn.
--
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

Esben Nielsen (23-01-2003)
Kommentar
Fra : Esben Nielsen


Dato : 23-01-03 00:07

Når jeg gør som beskrevet, får jeg enten syntaxfejl....eller også outsourcer
jeg linien???
Er det ("Regnr") der står forkert, eller hvor skal de enkelte anførselstegn
sættes ind henne ???



> > valgt = "Select * From biler Where Regnr = " &
> > Request.Querystring("Regnr") Response.Write ........
>
> Tekstværdier skal i (enkelte) anførselstegn.
>
>
> > Sætningen virker som sagt kun når jeg går ind i databasen og
> > ændrer min primærnøgle fra "tekst" til "tal" eller "autonum."
>
> Fordi talværdier ikke skal i anførselstegn.
> --
> 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



Jens Gyldenkærne Cla~ (23-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-01-03 11:26

Esben Nielsen skrev:

> Når jeg gør som beskrevet, får jeg enten syntaxfejl....eller
> også outsourcer jeg linien???

Det er noget lettere at vurdere hvad der er galt hvis du viser hvad
du gør - med andre ord, send de kodelinjer det drejer sig om.

> Er det ("Regnr") der står forkert, eller hvor skal de enkelte
> anførselstegn sættes ind henne ???

Hvis du starter med det ønskede slutresultat - en sqlsætning der
vælger et givent regnr, så skal den se ud på en af følgende måder:

   SELECT * FROM biler WHERE RegNR = 42

   SELECT * FROM biler WHERE RegNR = '42'

I det første eksempel er RegNR et talfelt, i det andet er RegNR et
tekstfelt.

Nu skal du så lave sådan en sætning i asp. Asp benytter dobbelte
anførselstegn til tekster og enkelte anførselstegn til kommentarer.
Indkapslet som asp-strenge bliver ovenstående:

   strSQL =    "SELECT * FROM biler WHERE RegNR = 42"

   strSQL =    "SELECT * FROM biler WHERE RegNR = '42'"

For at gøre asp-siden brugbar skal selve værdien nu udskiftes med
en variabel, så man kan hente mange forskellige biler. Det er god
skik at erklære alle variable (se evt.
<http://asp-faq.dk/article/?id=9>), så der kommer lige lidt ekstra
kode:

Dim strRegNR

strRegNr = Request.Form("RegNR")

' Ovenstående kode er den samme uanset typen af feltet RegNr

strSQL =    "SELECT * FROM biler WHERE RegNR = " & strRegNR

   strSQL =    "SELECT * FROM biler WHERE RegNR = '" & strRegNR &
"'"


Det eneste der nu mangler er at validere data fra formen.
Valideringen afhænger af den givne felttype, men kan fx se sådan
ud:

Function tjekNR(input)
   If IsNull(input) Then
       tjekNR = ""
   Else
       tjekNR = Replace(input, "'", "''")
   End If
End Function

Så skal linjen
   strRegNr = Request.Form("RegNR")
- erstattes af:
   strRegNr = tjekNr(Request.Form("RegNR"))

Hvis feltet er numerisk, behøver du ikke tjekke for anførselstegn,
men her skal du til gengæld tjekke for tomme eller ikke-numeriske
værdier.

NB: Se lige min signatur før du svarer.
--
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

Esben Nielsen (23-01-2003)
Kommentar
Fra : Esben Nielsen


Dato : 23-01-03 13:20

Hej Jens !!!

Mange tak for hjælpen...nu virker programmet bare som det skal. Det var
udelukkende et spørsmål om de enkelt anførselstegn der var årsag til
problemet.....
Jeg kunne bare ikke forstå pointen...før nu....men nu er alt også godt igen


Mvh.
Esben



"Jens Gyldenkærne Clausen" <jens@gyros.invalid> skrev i en meddelelse
news:Xns930C74464F819jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Esben Nielsen skrev:
>
> > Når jeg gør som beskrevet, får jeg enten syntaxfejl....eller
> > også outsourcer jeg linien???
>
> Det er noget lettere at vurdere hvad der er galt hvis du viser hvad
> du gør - med andre ord, send de kodelinjer det drejer sig om.
>
> > Er det ("Regnr") der står forkert, eller hvor skal de enkelte
> > anførselstegn sættes ind henne ???
>
> Hvis du starter med det ønskede slutresultat - en sqlsætning der
> vælger et givent regnr, så skal den se ud på en af følgende måder:
>
> SELECT * FROM biler WHERE RegNR = 42
>
> SELECT * FROM biler WHERE RegNR = '42'
>
> I det første eksempel er RegNR et talfelt, i det andet er RegNR et
> tekstfelt.
>
> Nu skal du så lave sådan en sætning i asp. Asp benytter dobbelte
> anførselstegn til tekster og enkelte anførselstegn til kommentarer.
> Indkapslet som asp-strenge bliver ovenstående:
>
> strSQL = "SELECT * FROM biler WHERE RegNR = 42"
>
> strSQL = "SELECT * FROM biler WHERE RegNR = '42'"
>
> For at gøre asp-siden brugbar skal selve værdien nu udskiftes med
> en variabel, så man kan hente mange forskellige biler. Det er god
> skik at erklære alle variable (se evt.
> <http://asp-faq.dk/article/?id=9>), så der kommer lige lidt ekstra
> kode:
>
> Dim strRegNR
>
> strRegNr = Request.Form("RegNR")
>
> ' Ovenstående kode er den samme uanset typen af feltet RegNr
>
> strSQL = "SELECT * FROM biler WHERE RegNR = " & strRegNR
>
> strSQL = "SELECT * FROM biler WHERE RegNR = '" & strRegNR &
> "'"
>
>
> Det eneste der nu mangler er at validere data fra formen.
> Valideringen afhænger af den givne felttype, men kan fx se sådan
> ud:
>
> Function tjekNR(input)
> If IsNull(input) Then
> tjekNR = ""
> Else
> tjekNR = Replace(input, "'", "''")
> End If
> End Function
>
> Så skal linjen
> strRegNr = Request.Form("RegNR")
> - erstattes af:
> strRegNr = tjekNr(Request.Form("RegNR"))
>
> Hvis feltet er numerisk, behøver du ikke tjekke for anførselstegn,
> men her skal du til gengæld tjekke for tomme eller ikke-numeriske
> værdier.
>
> NB: Se lige min signatur før du svarer.
> --
> 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



Jens Gyldenkærne Cla~ (23-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-01-03 13:30

Esben Nielsen skrev:

> Mange tak for hjælpen...

Velbekomme. Hvis du gerne vil have hjælp en anden gang vil det være
en god ide at bruge lidt tid på at læse min signatur. Bundcitater
er, for at sige det ligeud, møgirriterende - og det tager ikke
mange minutter at lære en fornuftig citatteknik.
--
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 : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408540
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste