Avatar billede boiii Nybegynder
22. maj 2001 - 09:34 Der er 32 kommentarer og
1 løsning

genereing af sql sætning fra en for loop!

Jeg skal ud fra denne dictionary lave en sql-sætning der indeholder  alle de items der er i dictionary:

Select lande from lande where lande =\'\"& blande&\"\'\"
Det vil faktisk sige at den kommer til at se sådan ud : select Select lande from lande where lande =\'danmark\' and \'norge\' and \'sverige\'!

Hvordan kan jeg gør det?

    For z = 0 To session(\"brugerlande\").Count -1

        blande = BrugerItems(z)

    next             
Avatar billede madrich Nybegynder
22. maj 2001 - 10:28 #1
sql = \"Select lande from lande where lande in =(\'danmark\',\'norge\',\'sverige\')\"
Avatar billede madrich Nybegynder
22. maj 2001 - 10:29 #2
Er dit sql-udtryk
Avatar billede boiii Nybegynder
22. maj 2001 - 10:31 #3
yep men de lande de kommer fra mit dictionary object og jeg vil jo ikke lave flere sql sætninger med et land i hver sætning.Så hvordan kan jeg få alle landene med fra dictionary i min sql sætning??
Avatar billede soerens Nybegynder
22. maj 2001 - 10:32 #4
Øh, i dit spørgsmål siger du Dictionary object, men i dit kode-eksempel ittererer du igennem et Session object.

Hvilken vil du bruge?

Skulle man lave lidt pseudo-kode over det, vil det nok se således ud:

strSQL = \"SELECT * FROM tblLande WHERE 1=2\"
For i = 1 To Count
  strSQL = strSQL + \" OR Lande=\'\" & Item(i) & \"\'\"
Next

Bemærk tricket med \"WHERE 1=2\", som gør at du bare kan blive ved med at fylde OR\'s på din SQL ;-)

/SørenS
Avatar billede soerens Nybegynder
22. maj 2001 - 10:33 #5
madrich >> Ved du om IN også duer på f.eks. en Access-database?

/SørenS
Avatar billede madrich Nybegynder
22. maj 2001 - 10:34 #6
Hvordan ser din tabel med lande ud?
Avatar billede madrich Nybegynder
22. maj 2001 - 10:35 #7
Yup det gør det, det er bare en eller anden måde at lave en forespørgsel på!
Avatar billede madrich Nybegynder
22. maj 2001 - 10:36 #8
Soerens ---><(Jeg har lige siddet og lavet noget ala det der skal laves her:))
Avatar billede boiii Nybegynder
22. maj 2001 - 10:38 #9
jamen mir dictionay object har jeg lavet til et session objekt
Avatar billede boiii Nybegynder
22. maj 2001 - 10:40 #10
whre 1=2 ???Men jeg vil ikke or jeg vil and\'e!!!  For jeg vil have alle værdier fra tabellen ud så faktisk ser sætninmgen us sådan her :

Select * from lande where land=\'danmark\' and \'norge\' osv osv

Alle landene som søges på kommer fra met dictionary/session objekt
Avatar billede madrich Nybegynder
22. maj 2001 - 10:41 #11
For z = 0 To session(\"brugerlande\").Count -1

        lande = BrugerItems(z)

    next   

lande = replace(lande,\", \",\"\',\'\")

sql = \"Select lande from lande where lande in =(\'&lande&\')\" 

       

Prøv det!
Avatar billede madrich Nybegynder
22. maj 2001 - 10:42 #12
eller hvad er det du vil:)??
Avatar billede madrich Nybegynder
22. maj 2001 - 10:43 #13
Vil du have Id (landene) trukket ud fra din Session variabel Og sat på din Sql-streng - eller hvad?
Avatar billede soerens Nybegynder
22. maj 2001 - 10:44 #14
Hvis du vil AND\'e istedet for OR\'e, så hedder det \"WHERE 1=1\" istedet.

...men madrich\'s betoder ser 10x bedre ud, den tror jeg selv jeg vil benytte fremover ;-)

/SørenS.
Avatar billede madrich Nybegynder
22. maj 2001 - 10:44 #15
Og prøv at være en smule mere opfindsom med navnene, det er lidt svært at se i din kode om det er variabler, tabeller eller kolonner:)
Avatar billede madrich Nybegynder
22. maj 2001 - 10:45 #16
Søren ---> bukker og takker;)
Avatar billede madrich Nybegynder
22. maj 2001 - 10:47 #17
Replace-strengen skal kun være der hvis der er tale om at strengen \"lande\" indeholder text

Hvis det ikke er text, skal det sådan ud!

For z = 0 To session(\"brugerlande\").Count -1

        lande = BrugerItems(z)

    next   


sql = \"Select lande from lande where lande in =(&lande&)\" 

       




Avatar billede madrich Nybegynder
22. maj 2001 - 10:50 #18
sql = \"Select lande from lande where lande inb (\'&lande&\')\"

der skal selvfølgelig ikke være et = tegn imellem \"in og (\'&lande&\')
Avatar billede madrich Nybegynder
22. maj 2001 - 10:50 #19
og heller ikke et B

sql = \"Select lande from lande where lande in (\'&lande&\')\"
Avatar billede madrich Nybegynder
22. maj 2001 - 10:54 #20
Kn du få det til at hænge sammen?
Avatar billede soerens Nybegynder
22. maj 2001 - 10:56 #21
Tjek evt. denne artikel mht. navngivningsstandarder i VBScript:

http://msdn.microsoft.com/scripting/default.htm?/scripting/VBScript/doc/VBSCodingConventions.htm

Har ikke lige en liggende på SQL, men generelt set er det en god ide at starte alle tabelnavne med f.eks. tbl (tblMinTabel). En farlig ting det ser ud til at have lavet er, at du har både en tabel og et felt med samme navn (lande), hvilket hurtigt vil skabe kaos i din kode.

Bare lige et par tips, håber de ka\' bruges ;-)

/SørenS
Avatar billede boiii Nybegynder
22. maj 2001 - 11:00 #22
Jamen problemet er her at lande bliver jo lig med den sidste item i dictionary objektet!Jeg vil have alle items med i queryien!!

For z = 0 To session(\"brugerlande\").Count -1

        (tal i objektet) landeid = BrugerItems(z)

    next   


sql = \"Select * from lande(tabel navn) where landid(kollonne navn) in =(&lande&)\" 
Avatar billede boiii Nybegynder
22. maj 2001 - 11:02 #23
thanx duuude!!!
Avatar billede madrich Nybegynder
22. maj 2001 - 11:03 #24
For z = 0 To session(\"brugerlande\").Count -1

            landeid = landeid & BrugerItems(z)

    next   


Avatar billede boiii Nybegynder
22. maj 2001 - 11:05 #25
Jamen problemet er her at lande bliver jo lig med den sidste item i dictionary objektet!Jeg vil have alle items med i queryien!!

For z = 0 To session(\"brugerlande\").Count -1

        (tal i objektet) landeid = BrugerItems(z)

    next   


sql = \"Select * from lande(tabel navn) where landid(kollonne navn) in =(&landeID&)\" 
Avatar billede madrich Nybegynder
22. maj 2001 - 11:05 #26
er det tal --> LandeId så skulle dette altså virke!

For z = 0 To session(\"brugerlande\").Count -1

            landeid = landeid & BrugerItems(z)

    next   

sql = \"Select lande from lande where lande in =(&lande&)\" 

       









Avatar billede boiii Nybegynder
22. maj 2001 - 11:08 #27
det virker det er ikke det men da sql sætningen er udenfor loop\'en tager den jo kun den sidste item med fra dictionry objektet.Jeg vil have alle tallene med fra dictionary objektet
Avatar billede madrich Nybegynder
22. maj 2001 - 11:09 #28
Nu har du jo ændret på navnene!!!


For z = 0 To session(\"brugerlande\").Count -1

            landeid = landeid & BrugerItems(z)

    next   

sql = \"Select lande from lande where lande in =(&landeid&)\" 
Avatar billede madrich Nybegynder
22. maj 2001 - 11:10 #29
det får du hvis du laveR

landeid = landeid & BrugerItems(z)


så tager den automatisk den streng med fra sidst og den samlede streng kommer til at se sådan ud



landeID = 1,2,3,4,5,6,7,8,9

eller noget i den forretning!

Avatar billede madrich Nybegynder
22. maj 2001 - 11:10 #30
inde i dit loop!
Avatar billede boiii Nybegynder
22. maj 2001 - 11:11 #31
THAAAAAAAAAAAAAAAAANZ MAKKER!!!
Avatar billede madrich Nybegynder
22. maj 2001 - 11:11 #32
Og det er meningen at Sql-strenge helst skal stå uden for loops og den slags, det gør koden en smule mere overskuelig
Avatar billede madrich Nybegynder
22. maj 2001 - 11:12 #33
Er det noget der virker:)
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