[ASP Classic] String gebruiken in IF statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Roog1317
  • Registratie: December 2003
  • Laatst online: 10:33
Ik heb het volgende stukje code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
    SQL = "SELECT fldTAALCODE FROM tbl_website_instellingen" 
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.LockType   = 1
    RS.CursorType = 0
    RS.Open SQL, MyConn 
        WHILE NOT RS.EOF
            strTAALCODE = strTAALCODE & "strACCEPT = """ & trim(RS("fldTAALCODE")) & """ OR" & vbcrlf
        RS.MoveNext
        WEND
    RS.Close 
    Set RS = Nothing

    strTAALCODE = "IF " & Mid(strTAALCODE,1, len(strTAALCODE)-4) & " THEN"


De uitkomst van de string strTAALCODE is bijvoorbeeld:

code:
1
IF strACCEPT = "nl" OR strACCEPT = "en" THEN


Ik wil die string gebruiken als IF statement in het vervolg van de ASP code.

Dus iets als:
code:
1
2
3
4
5
" & strTAALCODE & "
SQL = "SELECT BLA BLA BLA"
ELSE
SQL = "SELECT BLA2 BLA2 BLA2"
END IF


De vraag is hoe doe ik dat, want " & strTAALCODE & " kan dus niet!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je wil een Eval() achtig-iets en (behalve met wat ranzig hackwerk) Classic ASP biedt daar geen mogelijkheden toe als je VBScript gebruikt (de JScript variant kent dat wel meen ik).

Either way: ik zou me eerst eens af gaan vragen of dit überhaupt wel is wat je wil; doorgaans wijzen dit soort constructies namelijk op slecht ontwerp en dit stuk code ruikt daar wel behoorlijk naar. Ik zie namelijk niet waarom je de taalcodes niet in een array/collection zou zetten en waarom je die inhoud even verderop dan niet even bekijkt van de collection/array om vervolgens je query te bepalen. Om maar een zijstraat te noemen; er zijn natuurlijk -tig oplossingen te verzinnen maar die zijn nogal afhankelijk van je exacte probleem en eisen etc.

[edit]
Oeh, niet dat je 't wil gaan gebruiken, maar Eval() schijnt in de latere versies van Classic ASP wel beschikbaar te zijn. Blijft nog steeds het punt dat Eval() is doorgaans evil en waarom je überhaupt nog in een taal als classic ASP zit te werken anno 2011 ;)

[ Voor 47% gewijzigd door RobIII op 12-01-2011 10:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:10

gorgi_19

Kruimeltjes zijn weer op :9

Je kan toch die waarden in een variabele opslaan (boolean) en die gebruiken?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • keesdewit
  • Registratie: December 2003
  • Laatst online: 19-06 20:46
Niet echt logisch verhaal, maar toch een poging:

VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    boolTAALCODE = False
    SQL = "SELECT fldTAALCODE FROM tbl_website_instellingen" 
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.LockType   = 1
    RS.CursorType = 0
    RS.Open SQL, MyConn    
        WHILE NOT RS.EOF
            boolTAALCODE = ((strACCEPT = trim(RS("fldTAALCODE"))) OR (boolTAALCODE))
        RS.MoveNext
        WEND
    RS.Close 
    Set RS = Nothing


If boolTAALCODE Then
    strSQL = "iets"
Else
    strSQL = "Nog iets"
End If


Dit lijkt me beter:
VBScript:
1
    SQL = "SELECT fldTAALCODE FROM tbl_website_instellingen WHERE fldTAALCODE = '" &  strACCEPT & "'"


@RobIII: vbscript heeft wel een Eval() / Execute() functie.

[ Voor 19% gewijzigd door keesdewit op 13-01-2011 21:59 ]