|
| Select case Fra : Is |
Dato : 16-08-03 22:30 |
|
Hvor kan jeg se noget om select case ???
Jag har lavet nogle stykker, den ene starter sådan
Select Case mymhfoedt (dette er linje 152)
Case 01
mymmhfoedt = "Jannuar"
Case 02... osv
Og de virker lokalt. men når jeg tester på nettet får jeg fejl:
---
Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "/1"]'
/testbeta/opdater.asp, line 152
---
mymhfoedt får indhold fra et datofelt i en access databasse og via :
mymhfoedt = Mid(myhundfoedt, 4, 2)
--
Venlig hilsen
Erik Isager
| |
Jørgen Müller (16-08-2003)
| Kommentar Fra : Jørgen Müller |
Dato : 16-08-03 22:50 |
|
Is skrev:
>Microsoft VBScript runtime error '800a000d'
>Type mismatch: '[string: "/1"]'
>/testbeta/opdater.asp, line 152
Tyder på serveren kører med en anden dato formatering end din egen computer.
Prøv at skrive mymhfoedt ud med
Response.Write mymfoedt
Response.End
Hvis måneden er under 10 bliver der kun vist et tal altså ikke 01 og 02 men
1 og 2 og derfor vil
mymhfoedt = Mid(myhundfoedt, 4, 2)
give en fejl da du trækker 2 tal ud.
Du kan bruge InStr til at måle længden hen til første adskillelse ( - eller
/) og så bruge tallene i din Mid funktion.
InStr([start, ]string1, string2[, compare])
tal1 = InStr(1,mymfoedt,"-")
tal2 = InStr(tal1+1,mymfoedt,"-")
Mid(myhundfoedt, tal1, tal2)
PS er ikke afprøvet.
Det nemmeste er nok bare i din SELCECT CASE at skrive Case 1
Har selv brugt det i forbindelse med en database hvor jeg har trukket
måneden ud i et specielt felt og herefter kører jeg det gennem en Select
Case:
SELECT CASE rs(0)
Case 1
Response.Write "<B>Januar</B>" & "</TD><TD>" & rs(1) & "<BR>"
Case 2
Response.Write "<B>Februar</B>" & " </TD><TD>" & rs(1) & "<BR>"
Case 3
Response.Write "<B>Marts</B>" & "</TD><TD> " & rs(1) & "<BR>"
Case 4
Response.Write "<B>April</B>" & " </TD><TD>" & rs(1) & "<BR>"
--
Med Venlig Hilsen
Jørgen Müller
| |
Is (17-08-2003)
| Kommentar Fra : Is |
Dato : 17-08-03 21:41 |
|
"Jørgen Müller" <j.muller@mail.tele.dk> skrev i en meddelelse
news:bhm8uj$p4q$1@sunsite.dk...
> Is skrev:
> >Microsoft VBScript runtime error '800a000d'
>
> >Type mismatch: '[string: "/1"]'
>
> >/testbeta/opdater.asp, line 152
>
> Tyder på serveren kører med en anden dato formatering end din egen
computer.
>
> Prøv at skrive mymhfoedt ud med
> Response.Write mymfoedt
> Response.End
>
Ja, det tog sin tid inden jeg fik lov at se hvordan databasen sender dato
format, men det lykkedes endeligt, det ser sådan ud :
2/2/1996
Jeg kunne vel ikke få dig til at forklare lidt mere om "InStr" ?? hvad
kommer der ud af at bruge den ??
--
Venlig hilsen
Erik Isager
| |
Torben Brandt (17-08-2003)
| Kommentar Fra : Torben Brandt |
Dato : 17-08-03 23:25 |
|
Is wrote:
>>> Select Case mymhfoedt (dette er linje 152)
>>> Case 01
>>> mymmhfoedt = "Jannuar"
>>> Case 02... osv
>
> Ja, det tog sin tid inden jeg fik lov at se hvordan databasen sender dato
> format, men det lykkedes endeligt, det ser sådan ud :
>
> 2/2/1996
Hvis rs("felt") har typen dato og du skal bruge måneden, så skal du bare
bruge funktionen Month, der giver månedens nummer (1,2,..,12):
maaned = Month(rs("mymhfoedt"))
Select Case maaned ' NB! maaned er et tal, ikke en streng
Case 1
mymmhfoedt = "Januar"
Case 2
mymmhfoedt = "Februar"
...
End Select
PS Forsøg aldrig(!) at bruge Mid, Left, Right, InStr på variable, der
har typen dato. Brug i stedet Day, Month, Year, DatePart og dan dit eget
format, hvis du har brug for at skrive det ud som en streng. Eks:
Response.Write Day(dato) & "/" & Month(dato) & "-" & Year(dato)
Her bestemmer man helt selv og serveren skal ikke gætte, hvad man prøver
på...
/Torben
| |
Jørgen Müller (18-08-2003)
| Kommentar Fra : Jørgen Müller |
Dato : 18-08-03 08:44 |
|
Is skrev:
>Ja, det tog sin tid inden jeg fik lov at se hvordan databasen sender dato
>format, men det lykkedes endeligt, det ser sådan ud :
>2/2/1996
Er du sikker på det er dmå og ikke mdå?
>Jeg kunne vel ikke få dig til at forklare lidt mere om "InStr" ?? hvad
>kommer der ud af at bruge den ??
Se først Torbens svar, dog en lille tilføjelse - hvis du bruger
FormatDateTime kommer der en streng ud af resultatet og på den kan du så
bruge InStr, der bruger en startværdi, tekststreng, og noget der skal
findes, retunerer et tal (antal pladser hen til det søgte.
<%
tal = InStr(1, "Find noget i denne streng", " ")
Response.Write tal
%>
Her vil tal indeholde 5, antal anslag hen til det første mellemrum
Hvis du så næste gang skriver
tal1 = InStr(tal +1, "Find noget i denne streng", "i")
vil tal +1 give 6 og InStr vil starte sin søgning ved "n"oget og returnere
tallet 12, på den måde kan du overføre nogle værdier du ikke kender på
forhånd til f.eks. mid
Læg dette link ind under foretrukne, for den kan ikke undværes i forbindelse
med asp
http://www.html.dk/dokumentation/vbscript/html-vss/vbsTOC.htm
--
Med Venlig Hilsen
Jørgen Müller
| |
Jørn Andersen (18-08-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 18-08-03 19:54 |
| | |
Is (19-08-2003)
| Kommentar Fra : Is |
Dato : 19-08-03 22:03 |
|
"Jørn Andersen" <jorn@jorna.dk> skrev i en meddelelse
news:n282kvghgqmgelgql1cnk41590glshuiij@4ax.com...
> On Mon, 18 Aug 2003 09:44:13 +0200, "Jørgen Müller"
> <j.muller@mail.tele.dk> wrote:
>
> >Læg dette link ind under foretrukne, for den kan ikke undværes i
forbindelse
> >med asp
> >
> > http://www.html.dk/dokumentation/vbscript/html-vss/vbsTOC.htm
>
> Eller download VBScript-dokumentationen i Windows HelpFile format
> (.chm) og installér den lokalt:
> <url:
>
http://www.msdn.microsoft.com/downloads/default.asp?url=/downloads/sample.as
p?url=/msdn-files/027/001/728/msdncompositedoc.xml&frame=true>
> - eller direkte:
> <url:
>
http://download.microsoft.com/download/winscript56/Install/5.6/W982KMeXP/EN-
US/scrdoc56en.exe>
>
> Good luck!
---
Joo tak !
Den her jeg hentet fordi jeg også tidligere har fået den anbefalet, den
siger mig også noget, men mit engelsk er ikke så godt, og hvis man ikke helt
er klar over hvad man skal lede efter, er det rart med alle de gode svar i
NG der kan hjælpe mig videre
Tak for det !
Min løsning er nu sådan:
---
Dim myhundfoedt, mydhundfoedt, mymhundfoedt, mymmhfoedt, myyhundfoedt
'opdeler hund foedt til value hundfoedt select
myhundfoedt = medlemsliste("hundfoedt")
if myhundfoedt <> "" Then
mydhfoedt = Day(myhundfoedt)
mymhfoedt = Month(myhundfoedt)
myyhfoedt = Right(myhundfoedt, 4)
Select Case mymhfoedt
Case 1
mymmhfoedt = "Jannuar"
Case 2
mymmhfoedt = "Februar"
Case 3
mymmhfoedt = "Marts"
---
senere kan jeg jo lige så godt lave år om også !!
Men det har så også medført at jeg har lavet formatet om på selve listen fra
at være
2/8/2002
til
02-08-2003 det synes jeg er pænere
PS jeg har ligget lidt stille pga besøg af "Blaster"
--
Venlig hilsen
Erik Isager
| |
Jørn Andersen (17-08-2003)
| Kommentar Fra : Jørn Andersen |
Dato : 17-08-03 04:43 |
|
On Sat, 16 Aug 2003 23:29:48 +0200, "Is"
<detteerminnewsgruppemailadresse1@get2net.dk> wrote:
>Select Case mymhfoedt (dette er linje 152)
> Case 01
> mymmhfoedt = "Jannuar"
> Case 02... osv
>
>Og de virker lokalt. men når jeg tester på nettet får jeg fejl:
> ---
>Microsoft VBScript runtime error '800a000d'
>
>Type mismatch: '[string: "/1"]'
>
>/testbeta/opdater.asp, line 152
>
>---
>
>mymhfoedt får indhold fra et datofelt i en access databasse og via :
>
>mymhfoedt = Mid(myhundfoedt, 4, 2)
Jørgen Møller har givet noget af forklaringen på, hvorfor det ikke
virker.
Mere grundlæggende, så er
Case 02
jo ikke en streng - hvis det var en streng, skulle den hedde:
Case "02"
Jeg ville i stedet trække månedens nummer ud med:
mymhfoedt = Month(myhundfoedt)
- eller evt. trække den ud direkte i Sql'en - afhængigt af hvilken db
du har kunne det se således ud:
SELECT ... Month(myhundfoedt) AS mymhfoedt ...
Select Case'en skulle så hedde:
Case 1
Case 2
....
Case 12
Good luck!
--
Jørn Andersen,
Brønshøj
| |
|
|