Avatar billede ashansen Nybegynder
30. november 2005 - 19:48 Der er 29 kommentarer og
1 løsning

Notationi string/variabel

Hejsa
Jeg er ved at blive vanvittig over dette.
Jeg skal have sammensat nedenstående streng, og der skal være "" om visnin2("linkfile").
Det kan jeg bare ikke få til at virke

show2 = show2 + "menu = '"
show2 = show2 + visning2("linkfile")
show2 = show2 + "' or "

Nogen der kan hjælpe?

Mvh

Allan
Avatar billede erikjacobsen Ekspert
30. november 2005 - 19:52 #1
Måske

show2 = show2 & "menu = '"
show2 = show2 & visning2("linkfile")
show2 = show2 & "' or "
Avatar billede softspot Forsker
30. november 2005 - 19:53 #2
show2 = show2 & "menu = """
show2 = show2 & visning2("linkfile")
show2 = show2 & """ or "
Avatar billede ashansen Nybegynder
30. november 2005 - 19:58 #3
Desværre virker ingen af jeres forslag, fejlen er stadig "type mismatch"
Avatar billede ashansen Nybegynder
30. november 2005 - 19:59 #4
jeg har også prøvet med

show2 = show2 & "menu = """"
show2 = show2 & visning2("linkfile")
show2 = show2 & """" or "

og

show2 = show2 & "menu = """""
show2 = show2 & visning2("linkfile")
show2 = show2 & """"" or "

det virker heller ikke
Avatar billede softspot Forsker
30. november 2005 - 20:01 #5
Hvad er visning2? en sub? og er det VBScript?
Avatar billede ashansen Nybegynder
30. november 2005 - 20:02 #6
det er udtræk af felt fra db
Avatar billede ashansen Nybegynder
30. november 2005 - 20:05 #7
og ja, vb
Avatar billede softspot Forsker
30. november 2005 - 20:08 #8
Er det helt sikkert at det lige er den kode der som fejler, for det ser ikke specielt suspekt ud... talværdier vil bliver konvereteret at VBScript-fortolkeren og det samme gælder null-værdier...

Kan du vise den kontekst som de 3 linier indgår i?
Avatar billede ashansen Nybegynder
30. november 2005 - 20:12 #9
Set visning2 = Conn.Execute("Select linkfile, linkname, niveau, reference, placering, users From ashansen_admin_links Where users >= '" & Session("ID") & "' AND placering= '" & placement & "'" & "AND niveau ='2' AND reference='" & Links("linkname") & "' ORDER BY linkname ASC")
show2 = ""
Do
show2 = show2 & "menu = """"
show2 = show2 & visning2("linkfile")
show2 = show2 & """" or "

visning2.MoveNext
Loop While Not visning2.EOF
visning2.MoveFirst

med de "rette" " kan jeg godt udskrive variablen med response.write
Jeg skal bruge variablen i en if sætning:
If show2 then
...
End if
Avatar billede ashansen Nybegynder
30. november 2005 - 20:16 #10
hvis der ikke kommer " om visning2("linkfile"), så fejler den i if sætningen
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:17 #11
Hvad mener du med den if-sætning?

if show2<>"" then

??  Type mismatch kan komme fra databasen. Er niveau et talfelt?
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:18 #12
Og vis venligst hele fejlbeskeden!
Avatar billede softspot Forsker
30. november 2005 - 20:19 #13
Hmmm... lidt risky at vente med at checke for EOF til efter du har aflæst den første række (men det er måske bare et udtryk for at du ved at der ALTID bliver returneret mindst en række...?)

Personligt ville jeg gøre sådan her (bare for at undgå en runtimefejl, den dag hvor der rent faktisk ikke er nogle rækker...):

Set visning2 = Conn.Execute("Select linkfile, linkname, niveau, reference, placering, users From ashansen_admin_links Where users >= '" & Session("ID") & "' AND placering= '" & placement & "' AND niveau ='2' AND reference='" & Links("linkname") & "' ORDER BY linkname ASC")
show2 = ""
Do  While Not visning2.EOF
  show2 = show2 & "menu = """ & visning2("linkfile") & """ or "

  visning2.MoveNext
Loop
visning2.MoveFirst


NB: jeg har lige indføjet et mellemrum før den sidste AND.
Avatar billede ashansen Nybegynder
30. november 2005 - 20:20 #14
Technical Information (for support personnel)

Error Type:
Sun ONE ASP VBScript runtime (0x800A000D)
Type mismatch
/admin\functions\links.asp, line 21


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1)

Page:
GET /default.asp

Time:
Wednesday, November 30, 2005, 8:19:59 PM


More information:
Sun ONE Active Server Pages Support
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:22 #15
Godt, og linie 21 er så hvilken ?
Avatar billede ashansen Nybegynder
30. november 2005 - 20:24 #16
linie 21 er ifsætningen

If show2 then
...
End if
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:25 #17
Og hvad gør
    if show2<>"" then
så ved det?
Avatar billede ashansen Nybegynder
30. november 2005 - 20:28 #18
den validerer
Hvis indholdet af variablen er opfyldt, så går den ind i if sætningen.

Her et eks.

if menu="test" or menu="test2" then
...
end if
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:32 #19
Det skal (kan) du ikke gøre. Tag betingelsen med i SELECT-sætningen.
Avatar billede softspot Forsker
30. november 2005 - 20:33 #20
Næh!? Det er vist en ny feature i VBScript så... :)

Hvis du vil det, så skal du nok gøre sådan i stedet

if ExecuteGlobal("show2") then


men jeg tvivler faktisk på at det vil fungere... :)

Jeg tror du er bedre tjent med at opsamle en boolsk status inde i dit loop i stedet.
Avatar billede ashansen Nybegynder
30. november 2005 - 20:35 #21
det kan jeg ikke for jeg skal bruge valideringen på nogle link der skal være i if sætningen. For hvis den ikke skal vi det ene link, så skal den vise det andet.
Det virker hvis jeg hardkoder det, så det må kunne laves dynamisk
Avatar billede softspot Forsker
30. november 2005 - 20:35 #22
OK, nåede ikke lige at se EJ's kommentar :)
Avatar billede ashansen Nybegynder
30. november 2005 - 20:37 #23
jeg takker for jeres tid.
Jeg vil spekulerer lidt over en anden løsning så.
Med lad mig give jer point for indsatsen
Avatar billede softspot Forsker
30. november 2005 - 20:38 #24
Hvis du insisterer - velbekomme :)
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:39 #25
"så det må kunne laves dynamisk" ... ikke på den måde.

Men hvis det ikke giver mening at lave i SELECT-sætningen, så må du jo lave det i while-løkken (og ikke i din "do ... while" - den bruger man stort set ikke). Skitse:

ok=false
while ....
  if visning2("linkfile")=menu then
    ok=true
  end if
  ...
end whlie
Avatar billede softspot Forsker
30. november 2005 - 20:44 #26
erikjacobsen >> "(og ikke i din "do ... while" - den bruger man stort set ikke)." Hvad mener du med det? Det er da afløseren for den gamle/forældede notation "while...wend"...
Avatar billede erikjacobsen Ekspert
30. november 2005 - 20:53 #27
Ja, ja, mente jo "do ... loop"
Avatar billede softspot Forsker
30. november 2005 - 20:58 #28
Ja, ja, det opfattede jeg også, men jeg mener nu stadig hvad jeg skrev om det med loop-konstruktionen. Do..Loop-konstruktionen er da mere fleksibel end while..wend, så derfor foretrækker jeg personligt den konstruktion (men det er så nok bare mig der ikke er normal :))...
Avatar billede erikjacobsen Ekspert
30. november 2005 - 21:19 #29
Ja, men vi er helt enige - det er bare den skøre syntaks i VB ... Altså: man skal altid teste i toppen af løkken (hvordan syntaksen nu end er) ;)
Avatar billede softspot Forsker
30. november 2005 - 21:55 #30
Nu ved jeg godt at jeg er træls, men bare lige for en god ordens skyld, så kan man godt checke i slutningen. Jeg frarådede det bare i dette tilfælde (og alle andre tilfælde hvor man itererer et recordset) af åbenlyse årsager.

Anyway! Tak for point :)
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