/ 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
Et par spørgsmål...
Fra : Magnus


Dato : 27-04-03 11:40

1)
varStartop="167, 243, 21, 146, 255, 235, 25, 248, 29, 247, 236"
SQL="SELECT id, fornavn, efternavn, nr FROM Profiler WHERE id='" &
varStartop & "' ORDER By nr"
Conn.Execute(SQL)
Set RS = conn.execute(SQL)

Hvordan kan det være jeg får værdien "False" ved ovennævnte database
kald...?


2)
Hvodan kan jeg få antallet af gange et specielt bogstav fremkommer i en
tekststreng...?


3)
På en formular kontrollere jeg om det indtastede er i orden og hvis ikke så
skal brugeren sendes tilbage til formularen.
Kan dette gøres på en måde så det han/hun indtastede første gang ikke er
forsvundet så det hele skal skrives på ny...?



/Magnus



 
 
Jens Gyldenkærne Cla~ (27-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-04-03 20:54

Magnus skrev:

> varStartop="167, 243, 21, 146, 255, 235, 25, 248, 29, 247,
> 236"

Herover har du en liste.

> SQL="SELECT id, fornavn, efternavn, nr FROM Profiler
> WHERE id='" & varStartop

Id kan ikke være lig en liste - kun et tal. Id kan derimod _ligge_
i en liste. Det skriver man således:

....WHERE id IN (167, 243, 21, ...236) ...


> Hvordan kan det være jeg får værdien "False" ved ovennævnte
> database kald...?

Det lyder mærkeligt at du får "false" - du burde bare få en
syntaksfejl. Men fejlen er som beskrevet ovenfor.

> 2)
> Hvodan kan jeg få antallet af gange et specielt bogstav
> fremkommer i en tekststreng...?

Hm - jeg har ikke lige nogen gylden metode her. En mulighed er at
itere sig frem, enten med InStr (brug start-parameteren til at
fjerne de bogstaver der er talt) eller med Replace (brug count-
parameteren til kun at erstatte ét bogstav ad gangen).

Det er muligt at det kan gøres med Split - her vil antallet af det
søgte bogstav bestemme størrelsen af arrayet. Jeg er dog ikke
sikker på hvordan split opfører sig når der fx er to skilletegn
umiddelbart efter hinanden.


> 3)
> På en formular kontrollere jeg om det indtastede er i orden og
> hvis ikke så skal brugeren sendes tilbage til formularen.
> Kan dette gøres på en måde så det han/hun indtastede første
> gang ikke er forsvundet så det hele skal skrives på ny...?

Du kan - og bør - kontrollere så meget som muligt via javascript
(på klientsiden). En javascriptvalidering forhindrer brugeren i at
submitte formen hvis valideringsbetingelserne ikke er opfyldt. Når
man bliver på siden bibeholdes alle indtastninger naturligvis også.

I ASP.NET kan serverforms som standard "huske" deres indhold
(postback er en ret essentiel del af asp.net, så det er praktisk).
Man kan formentlig lave noget tilsvarende i traditonel asp - men
overvej at skifte til .net-udgaven. Her er en lang række
valideringsfunktioner også foruddefinerede.
--
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

Torben Brandt (27-04-2003)
Kommentar
Fra : Torben Brandt


Dato : 27-04-03 22:27

Jens Gyldenkærne Clausen wrote:
> Magnus skrev:
>>varStartop="167, 243, 21, 146, 255, 235, 25, 248, 29, 247,
>>236"
>
> Herover har du en liste.
>
>>SQL="SELECT id, fornavn, efternavn, nr FROM Profiler
>>WHERE id='" & varStartop
>
>>Hvordan kan det være jeg får værdien "False" ved ovennævnte
>>database kald...?
>
> Det lyder mærkeligt at du får "false" - du burde bare få en
> syntaksfejl. Men fejlen er som beskrevet ovenfor.
>

Nej, det burde ikke give en syntax-fejl. Der vil bare ikke blive fundet
nogle poster med _hele_ listen som id.

Magnus, prøv evt. at skrive hvordan du ser at værdien skulle være False

>
>>2)
>>Hvodan kan jeg få antallet af gange et specielt bogstav
>>fremkommer i en tekststreng...?
>
>
> Hm - jeg har ikke lige nogen gylden metode her. En mulighed er at
> itere sig frem, enten med InStr (brug start-parameteren til at
> fjerne de bogstaver der er talt) eller med Replace (brug count-
> parameteren til kun at erstatte ét bogstav ad gangen).
>
> Det er muligt at det kan gøres med Split - her vil antallet af det
> søgte bogstav bestemme størrelsen af arrayet. Jeg er dog ikke
> sikker på hvordan split opfører sig når der fx er to skilletegn
> umiddelbart efter hinanden.

En anden måde er at bruge RegExp-objektet:
sTekstStreng = "aben har en banan"
sTegn = "a"
Set oRegEx = New RegExp
oRegEx.Global = True
oRegEx.IgnoreCase = False ' Angiver om "a" og "A" skal behandles ens
oRegEx.Pattern = sTegn
iAntalForekomsterAfTegnet = oRegEx.Execute(sTekstStreng).Count

Bemærk at nogle tegn behandles specielt, men tegnene a - z og 0 - 9
fungerer som man ville forvente. Hvis du skal kunne optælle andre tegn,
så skal metoden lige finpudses lidt...

mvh Torben


Jens Gyldenkærne Cla~ (27-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 27-04-03 22:42

Torben Brandt skrev:

>> Det lyder mærkeligt at du får "false" - du burde bare få en
>> syntaksfejl. Men fejlen er som beskrevet ovenfor.

> Nej, det burde ikke give en syntax-fejl. Der vil bare ikke
> blive fundet nogle poster med _hele_ listen som id.

Forkert. Når felttypen er et tal vil et komma kun kunne opfattes
som en fejl. Hvis der var anførselstegn om værdien var det
naturligvis en anden sag.

Såvel MSSQL som Access melder syntaksfejl hvis man forsøger med en
sætning som eksemplet (WHERE feltnavn = 2, 3, 4)


> En anden måde er at bruge RegExp-objektet:

Det vil nok være en bedre løsning.
--
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

Torben Brandt (27-04-2003)
Kommentar
Fra : Torben Brandt


Dato : 27-04-03 22:59

Jens Gyldenkærne Clausen wrote:
> Torben Brandt skrev:
>
>>>Det lyder mærkeligt at du får "false" - du burde bare få en
>>>syntaksfejl. Men fejlen er som beskrevet ovenfor.
>
>>Nej, det burde ikke give en syntax-fejl. Der vil bare ikke
>>blive fundet nogle poster med _hele_ listen som id.
>
> Forkert. Når felttypen er et tal vil et komma kun kunne opfattes
> som en fejl. Hvis der var anførselstegn om værdien var det
> naturligvis en anden sag.

Under en antagelse om at id er et tal-felt, så har du ret.
Men i det oprindelige indlæg stod:
id='" & varStartop & "' (med plinger)
Så jeg antog, at id er et tekst-felt (der måske indeholder tal).

Det - jeg tror - der menes er:
WHERE id IN ('167', '243', '21', ..., '236')

mvh Torben


Bjarke Walling Peter~ (27-04-2003)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 27-04-03 23:06

Jens Gyldenkærne Clausen skrev:
[klip]
> I ASP.NET kan serverforms som standard "huske" deres indhold
> (postback er en ret essentiel del af asp.net, så det er praktisk).
> Man kan formentlig lave noget tilsvarende i traditonel asp - men
> overvej at skifte til .net-udgaven. Her er en lang række
> valideringsfunktioner også foruddefinerede.

Men man kan også blot udskrive indholdet igen:

<input type="text" name="username" value="<% =
Server.HTMLEncode(Request.Form("username")) %>">

Mvh. Bjarke



Jens Gyldenkærne Cla~ (28-04-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 28-04-03 09:02

Torben Brandt skrev:

> Under en antagelse om at id er et tal-felt, så har du ret.
> Men i det oprindelige indlæg stod:
> id='" & varStartop & "' (med plinger)

Ups - de plinger havde jeg totalt overset.

> Så jeg antog, at id er et tekst-felt (der måske indeholder tal).

Det er en rimelig antagelse - i hvert fald når der tilsyneladende
ikke har været asp-fejl med den syntaks.

Hvis id _kun_ indeholder tal vil det være en god ide at ændre
felttypen til et talfelt - så slipper man også for at skulle
konvertere en talliste til en strengliste.
--
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

Ryan Dahl (02-05-2003)
Kommentar
Fra : Ryan Dahl


Dato : 02-05-03 00:36

On Sun, 27 Apr 2003 12:40:19 +0200, "Magnus" <arnason@email.dk> wrote:

>1)
>varStartop="167, 243, 21, 146, 255, 235, 25, 248, 29, 247, 236"
>SQL="SELECT id, fornavn, efternavn, nr FROM Profiler WHERE id='" &
>varStartop & "' ORDER By nr"
>Conn.Execute(SQL)
>Set RS = conn.execute(SQL)
>
>Hvordan kan det være jeg får værdien "False" ved ovennævnte database
>kald...?
>
Hej Magnus,

hvis det tilfældigvis er en Access-database, så mener jeg (puh grave i
den godt-gemte hukommelse..) at jeg på et tidspunkt havde problemer
med at benytte id som et felt, da det var reserveret.
Løsning var såvidt jeg husker, at sætte firkantede parenteser om:
[id].

mvh
Ryan

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

Månedens bedste
Årets bedste
Sidste års bedste