Avatar billede s_raagaard Nybegynder
01. oktober 2001 - 01:17 Der er 9 kommentarer og
3 løsninger

Sammenlægning af SELECT

Kan man ikke gøre dette i een select, således at der blot refereres til variablen, når man vil skrive RS(\"Name\") ud?

MenuSQL = \"SELECT * FROM Menu WHERE NameVal =\'Top\' \" Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open MenuSQL, myConn, 1, 3
WHILE NOT RS.EOF
response.write(RS(\"Name\") & \"<br>\"
RS.MoveNext
WEND

MenuSQL = \"SELECT * FROM Menu WHERE NameVal =\'Bot\' \" Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open MenuSQL, myConn, 1, 3
WHILE NOT RS.EOF
response.write(RS(\"Name\") & \"<br>\"
RS.MoveNext
WEND

MenuSQL = \"SELECT * FROM Menu WHERE NameVal =\'Left\' \" Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open MenuSQL, myConn, 1, 3
WHILE NOT RS.EOF
response.write(RS(\"Name\") & \"<br>\"
RS.MoveNext
WEND


/søren
Avatar billede zeptic Nybegynder
01. oktober 2001 - 08:19 #1
Yoda. Du skal blot skrive:

MenuSQL = \"SELECT * FROM Menu WHERE NameVal =\'Top\' or NameVal=\'Bot\' or NameVal=\'Left\'\"
Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open MenuSQL, myConn, 1, 3
WHILE NOT RS.EOF
  response.write(RS(\"Name\") & \"<br>\"
  RS.MoveNext
WEND
Avatar billede s_raagaard Nybegynder
01. oktober 2001 - 09:02 #2
arrhhh... det var ikke lige det jeg mente.

De tre variabler skal ikke skrives ud efter hinanden....mere noget ala´

<table>
  <tr>
    <td><%=(RS(\"Name\"),Top)%></td>
    <td><%=(RS(\"Name\"),Bot)%></td>
    <td><%=(RS(\"Name\"),Left)%></td>
  </tr>
</table>
Avatar billede aho_metier Nybegynder
01. oktober 2001 - 09:39 #3
Hvis dine forespørgsler kun returnerer en række kan du lave din kode således:

MenuSQL = \" select name AS Top, \"
MenuSQL = MenuSQL &  \" (select name from Menu where NameVal=\'Bot\') AS Bot, \"
SQL = SQL &  \" (select name from Menu where nameVal=\'Left\') AS Left\"
SQL = SQL &  \" FROM Menu \"
SQL = SQL &  \" WHERE NameVal=\'Top\'\"

Set RS = Server.CreateObject(\"ADODB.Recordset\")
RS.Open MenuSQL, myConn, 1, 3
IF NOT RS.EOF
  response.write(RS(\"Top\") & \"<br>\"
  response.write(RS(\"Bot\") & \"<br>\"
  response.write(RS(\"Left\") & \"<br>\"
END IF
Avatar billede tmceu Praktikant
01. oktober 2001 - 14:19 #4
Jeg har et forslag, hvis din database kan returnere flere recordsets. Access kan eks. ikke, men hvilken database bruger du ?
Avatar billede cort Nybegynder
01. oktober 2001 - 16:08 #5
Function Sel(placering)

Select case placering

End Select

End Function
Avatar billede cort Nybegynder
01. oktober 2001 - 16:12 #6
Function Sel(placering)

Select case placering
  Case Top:\"SELECT * FROM Menu WHERE NameVal =\'Top\' \"
Case Bot:\"SELECT * FROM Menu WHERE NameVal =\'´Bot\' \"
Case Left:\"SELECT * FROM Menu WHERE NameVal =\'Left\' \"
End Select

End Function


Noget i den her stil
Avatar billede s_raagaard Nybegynder
01. oktober 2001 - 16:15 #7
Jeg kører det på en SQL 7.0 db

>> cort
Det skal jeg lige teste.....


/søren
Avatar billede tmceu Praktikant
01. oktober 2001 - 16:44 #8
MenuSQL = \"SELECT * FROM Menu WHERE NameVal =\'Top\'\" & vbCrLf & \"UNION\" & vbCrLf
MenuSQL = MenuSQL & \"SELECT * FROM Menu WHERE NameVal =\'Bot\'\" & vbCrLf & \"UNION\" & vbCrLf
MenuSQL = MenuSQL & \"SELECT * FROM Menu WHERE NameVal =\'Left\'\"

Dette vil returnere ét recordset, hvor Top, Bot og Left vil ligge som hhv. record 1, 2 og 3 (forudsat at der kun er én record der passer pr. kriterie)

Alternativt kan du køre 3 SQL statements og få 3 recordssets retur

MenuSQL = \"SELECT * FROM Menu WHERE NameVal =\'Top\';\" & \"SELECT * FROM Menu WHERE NameVal =\'Bot\';\" & \"SELECT * FROM Menu WHERE NameVal =\'Left\';\"

Derefter kan du loop\'e gennem dine recordsets

do unti RS is nothing
do until RS.EOF
  response.write \"<TD>\" & RS(\"Name\") & \"</TD>\"
loop
set RS = RS.NextRecordset
loop

Nu har du da noget at vælge i mellem :-)
Avatar billede tmceu Praktikant
01. oktober 2001 - 16:55 #9
UPS! Fik vist lige lavet en endeløs loop

do unti RS is nothing
do until RS.EOF
  response.write \"<TD>\" & RS(\"Name\") & \"</TD>\"
  RS.MoveNext
loop
set RS = RS.NextRecordset
loop
Avatar billede s_raagaard Nybegynder
01. oktober 2001 - 17:01 #10
Recordsettet skal ikke skrives ud samlet men i de tre grupper hvor variablen er henholdsvis Top, Bot og Left....

Se Top    Se Bot    Se Left
Top 1      Bot 1      Left 1
Top 2      Bot 2      Left 2
Top 3      Bot 3      Left 3
Top 4      Bot 4      Left 4

Jeg kan sagtens lave det med en SQL for hver gruppering....det jeg vil er kun at have een SQL og så forspørge efter variablen når jeg udskriver RS
Avatar billede zeptic Nybegynder
08. oktober 2001 - 10:44 #11
Hvorfor vil du kun have een SQL-forespoergsel?? Er du bange for at det er for dyrt at kalde databasen flere gange?? I saafald boer du ogsaa aendre din SELECT-saetning til noget i stil med dette:

\"SELECT Name, NameVal FROM Menu\"
Avatar billede zeptic Nybegynder
08. oktober 2001 - 10:46 #12
Men ellers vil jeg foreslaa dig at loope over dit Recordset, og saa laegge data ind i en af tre arrays, afhaegingt af hvilken NameVal det drejer sig om. Derefter kan du saa traekke data ud fra de forskellige arrays i den raekkefoelge du har brug for.
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