Avatar billede x-pander Nybegynder
24. marts 2006 - 08:27 Der er 37 kommentarer og
1 løsning

Typeuoverensstemmelse i ASP

God morgen.

En fejl der fortæller man har en typeuoverensstemmelse???

Det er på linie 38 og det eneste der står der er:

forum("svarid") = request.form("beskedid")

Hvaaaa?
Avatar billede fennec Nybegynder
24. marts 2006 - 08:30 #1
forum("svarid") er en taltype
request.form returnere ALTID tekst.

Løsning:
if forum("svarid")&"" = request.form("beskedid")&"" then
Avatar billede softspot Forsker
24. marts 2006 - 08:30 #2
Prøv med en typecast:

forum("svarid") = clng("0" & request.form("beskedid"))

under antagelse at forum("svarid") er et felt i et recordset som er af typen tal.
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:40 #3
fennec, det virkede ikke. Eller skal der stå noget i ""'erne?

Og softspot, jeg aner ikke hvad der er sket, men altså nu kommer den da ikke med fejl. Men istedet for at mit indlæg bliver besvaret så bliver et helt nyt emne oprettet. Men hvad er det egentlig der sker i den nye streng?
Avatar billede softspot Forsker
24. marts 2006 - 08:44 #4
default-værdien (hvis request.form("bedskedid") er en tom streng) bliver sat til 0. Det kan godt være du er nød til at lave en if-sætning omkring linien i stedet, så der ikke kommer noget i feltet svarid, hvis beskedid er tom. Altså:

if request.form("beskedid") & "" <> "" then
  forum("svarid") = request.form("beskedid")
end if
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:46 #5
Jamen altså jeg fatter ikke alle de der paranteser der. Hvorfor skal de være der?

Jeg forstår heller ikke i kan huske alt sådan noget i ASP? Altså jeg har svært ved at lave sådan noget der og fejlfinde på det, det er fuldstændigt umuligt...
Avatar billede eagleeye Praktikant
24. marts 2006 - 08:48 #6
Skal du ligge request.form ind i forum som er et recordset så prøv:

forum("svarid") = int("0" & trim(request.form("beskedid")))
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:50 #7
Jamen den virker også eagleeye. Men nu kommer den ikke op som svar til indkægget men som nyt indlæg...
Avatar billede softspot Forsker
24. marts 2006 - 08:50 #8
At huske sådan noget er et spørgsmål om erfaring (læs: at prøve det ofte nok, så man også drømmer om det om natten - eller hvornår man nu sover).

Det samme gælder med fejlfinding - når du har gjort det ofte nok, så får du nogle teknikker indarbejdet som hjælper dig i de fleste tilfælde - så kan man jo altid spørge på eksperten i de sidste tilfælde :)

Hvad er det for nogle paranteser du snakker om i øvrigt?
Avatar billede softspot Forsker
24. marts 2006 - 08:52 #9
BEMÆRK: en int kan kun indeholde en max-værdi på 32767, derfor vil jeg kraftigt råde dig til at holde fast i clng til konvertering af id i databasesammenhænge (hvis ellers du er lidt ambitiøs med dit forum :)).
Avatar billede fennec Nybegynder
24. marts 2006 - 08:52 #10
Jeg havde helt misforstået ?'et så glem min kommentar :o)
Avatar billede eagleeye Praktikant
24. marts 2006 - 08:53 #11
softspot >> Det er IKKE RIGTIGT hvad du skriver omkring int. Du tænker på cint.
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:56 #12
Softspot, det er den parantes du starter inden "0", hvorfor er den der lige pludselig?
Avatar billede eagleeye Praktikant
24. marts 2006 - 08:56 #13
Så tjek at du har noget i request.form("beskedid")

Prøv at udskrive den:

Response.write "beskedid=" & request.form("beskedid")
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:56 #14
Men det er bare en meget sur tid her inden man kan bruge ASP til noget så må jeg sige. Altså indtil det bliver mere rutine-agtigt at arbejde med ASP.
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:57 #15
Det prøver jeg lige eagleeye
Avatar billede x-pander Nybegynder
24. marts 2006 - 08:58 #16
Nej den er tom, den returnerer bare: beskedid=
Avatar billede eagleeye Praktikant
24. marts 2006 - 08:59 #17
Ok, hvor kommer beskedid fra?

Er det via linket .asp?besekdid=xx  eller er det et form felt på formen?
Avatar billede softspot Forsker
24. marts 2006 - 09:00 #18
eagleeye >> Ja, det kan jeg godt se (efter at have testet det). Logikken har fejlet :(
Avatar billede eagleeye Praktikant
24. marts 2006 - 09:02 #19
Hvis det er et form felt så tjek at formfeltet hedder "beskedid" og at det er inden for  <form> og </form> tagnsne.

Er det via linket skal du bruge Request.Querystring i stedet for Request.Form
Avatar billede softspot Forsker
24. marts 2006 - 09:03 #20
24/03-2006 08:56:16 >> Det var netop for at kompensere for en tom beskedid (hvilket så viste sig at være problemet), men det er som du kan se ikke altid ønskværdigt at lave den "fallback"-løsning. I dit tilfælde bør du nok lægge en fejlhåndtering ind i koden i stedet for, så du får en besked om at datagrundlaget ikke er korrekt.

Det løser ikke problemet, men det gør din fejlfinding lettere, fordi du så ved hvor du skal starte :)
Avatar billede eagleeye Praktikant
24. marts 2006 - 09:05 #21
Hvis du er i tvivl om hvilke data du modteger via request.form kan du udksirve dem alle på en gang ved:

Response.Write Request.Form
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:18 #22
Jamen prøv lige at stoppe op! Stop! Helt stop nu! Hvad er det i siger fejlen er!?

Altså tal og tekst det er det, der er kludret sammen?

Hvordan kan det blive det? Og jeg har prøvet at udskrive alle data eagleeye, men æh... Hvordan kan jeg se om det er tal eller tekst? Og JA! Jeg er virkelig nybegynder, men det er så sandelig også derfor jeg spørger herinde.
Avatar billede eagleeye Praktikant
24. marts 2006 - 09:29 #23
Hvis den udskriver:  beskedid=
Så er fejlen at Request.Form("beskedid") er tom eller lig "" så får du en fejl på typen da et tal ikke kan sættes lig ""

VBscript laver type konvertering for en så derfor skal man normalt ikke tjekke på det.

Du kan bruge funktionen isNumeric til at teste om en variable indeholder et tal:

if isNumeric(request.form("beskedid")) then
  'det var et tal
else
  'det var ikke et tal.
end if
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:32 #24
Request.Form("beskedid") Den bruger jeg ikke. Jeg bruger request.querystring("beskedid")

Der, der er noget galt?
Avatar billede eagleeye Praktikant
24. marts 2006 - 09:34 #25
ok så beskedid kommer via dit link? Så retter du det til:

if isNumeric(request.querystring("beskedid")) then
  'det var et tal
else
  'det var ikke et tal.
end if
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:36 #26
Ja den kommer via link. Det er vidst den måde vi skal lave det på. Men altså er der en bedre måde?
Avatar billede dafox Nybegynder
24. marts 2006 - 09:48 #27
er du sikker på at du har en besked id med, ellers ved den jo ikke hvor den skal lægge det hen?
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:49 #28
<a href="besvar.asp">Besvar</a>

Altså du mener i selve linket? Der skal jeg have ID med over?
Avatar billede dafox Nybegynder
24. marts 2006 - 09:50 #29
<a href="forum.asp?action=besvar&beskedid=<% = forum.fields("beskedid")%>">Besvar</a>

sådan skulle det se ud, skulle jeg mene...
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:51 #30
Okay, jeg forstår ikke lige det der med forum.fields, men jeg prøver...
Avatar billede eagleeye Praktikant
24. marts 2006 - 09:52 #31
Ja den skal kende id på den post som du ønsker at besvare og det kan gøre via linket:

<a href="besvar.asp?beskedid=xxx">Besvar</a>


På besvar.asp siden kan du tjekke beskedid og evt. udksive en fejl hvis det ikke er et tal:

if isNumeric(request.querystring("beskedid")) then
  'det var et tal
else
  'det var ikke et tal.
  response.write "Ingen besked at besvare"
end if
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:54 #32
Dafox!! Det virker! Den har fået ID med over nu! Nej da! eagleeye. Jeg forstår stadig ikke den der sætning. Hvad var det den skulle tjekke?

Men mange tak Dafox!!!
Avatar billede x-pander Nybegynder
24. marts 2006 - 09:56 #33
Jeg har kørt den. Den returnerer at det var et tal. Det er vel ikke godt så hvis resten er holdt i tekst?
Avatar billede dafox Nybegynder
24. marts 2006 - 09:56 #34
npz's...  nu skal jeg koge noget vand til mine nudler!
Avatar billede x-pander Nybegynder
24. marts 2006 - 10:01 #35
Æh okay.

AAARRRGGHH!! Nu virker det da slet ikke! Hver gang jeg trykker besvar så bliver jeg redirected uanset hvad. Jeg kan ikke besvare mere.
Avatar billede x-pander Nybegynder
24. marts 2006 - 10:12 #36
Ja det virker stadig ikke...
Avatar billede eagleeye Praktikant
24. marts 2006 - 11:11 #37
Al respect men du acceptere et skud i tågen uden at havde testet om det virker. Vi er faktisk nogle som forsøgte at forklare dig hvordan det virker og førsøger at finde fejlen. :-)

Du spørger: Hvordan kan jeg se om det er tal eller tekst?

Jeg svare: Du kan bruge funktionen isNumeric til at teste om en variable indeholder et tal.

if sætningen er et eksempel på hvordan du kan bruge isNumeric til at teste om beskedid indeholder et tal.


dafox kan nok hjælpe dig færdig eller må du bede ham give dig point tilbage da han jo ikke har løst problemet.


For at komme lidt vidre:

Hvad hedder filen, hvor koden der skal "besvare" ligger?

Hvordan ser dit link ud til den fil?
Avatar billede x-pander Nybegynder
24. marts 2006 - 11:12 #38
Jeg ligger den lige op på en server om lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester