Avatar billede vanddyr Nybegynder
20. september 2001 - 09:12 Der er 12 kommentarer og
1 løsning

2 tabeller...

Øverst har jeg denne kode :

<td><a href=vare.asp?felt=pris&varetype=<% = Request.QueryString(\"varetype\")%>&azza=><img src=pilned.gif BORDER=0 ALT=\"Sorter Min - Max\"></A>&nbsp;<a href=vare.asp?felt=pris&varetype=<% = Request.QueryString(\"varetype\")%>&azza=DESC><img src=pilop.gif BORDER=0 ALT=\"Sorter Max - Min\"></A>

Dette er en pil op/ned, som folk kan klikke på for at sortere efter lavest pris første eller højest pris først, herfra går den ned i nedenstående kode og gennemløber det igen...


<%
strSQL = \"SELECT * FROM fabrikat INNER JOIN \" & Request.QueryString(\"varetype\") & \" ON fabrikat.Fabrikatnr = \" & Request.QueryString(\"varetype\") & \".Fabrikat WHERE \" & Request.QueryString(\"varetype\") & \".Fabrikat = fabrikat.Fabrikatnr ORDER BY \" & felt & \" \" & azza & \";\"
Set database = con.Execute(strSQL)

if database.EOF then
  Response.write \"<H3><CENTER>Der er desværre ingen produkter i denne kategori...</H3></CENTER>\"
  else
      DO WHILE NOT database.EOF
      \' Her finder den ud af om tilbud er større end 0, hvis den er, skriver den værdien fra datase.tilbud, elelrs tager den værdien fra database.pris
          if database(\"Tilbud\") > 0 then
            response.write \"</td><td><img src=../billeder/tilbud.gif BORDER=0><br>\" & database(\"Tilbud\")
          else
            response.write \"</td><td>\" & database(\"Pris\") & \"&nbsp;\"
        end if
          Database.MoveNext
      loop
end if
%>

Men hvad så når der er tilbud, hvordan får man det med i en sådan sortering, da den jo så skal tjecke noget 2 steder i databasen, og SQL kan ikke lave noget IF sætning, hvordan skal man så lave en sådan sortering???  Nogele IDEr?

På forhånd TAK for hjælpen.. :-)
Avatar billede tmceu Praktikant
20. september 2001 - 16:21 #1
Hvad er spørgsmålet helt konkret - skal du bare have sorteret på 2 felter; det brugeren vælger og om der er tilbud ?
Avatar billede eagleeye Praktikant
21. september 2001 - 00:40 #2
Hvilken type database er det?
Hvis det er access kan du godt lave en if i SQL-sætningen.

Jeg antager du har et felt Pris og et felt Tilbudspris. Hvis en vare ikke er på tilbud er Tilbudspris sat til 0.

SELECT IIf([pris]>[tilbudspris] AND [tilbudspris] <> 0,[tilbudspris],[pris]) AS vare_pris, * FROM vare_tabel;

Du kan også bruge et andet felt til at teste på her en ja/nej felt som hedder tilbud:

strSQL = \"SELECT IIf([tilbud]=true,[tilbudspris],[pris]) AS vare_pris, * FROM vare_tabel;\"
Avatar billede eagleeye Praktikant
21. september 2001 - 00:44 #3
hmm tilbuds prisen vil vel altid være lavere en den rigtige pris så der er jo ingen grund til at tjekke Pris>Tilbudspris :)

SELECT IIf([tilbudspris] <> 0,[tilbudspris],[pris]) AS vare_pris, * FROM vare_tabel;

Avatar billede vanddyr Nybegynder
22. september 2001 - 23:59 #4
Databasen er en Access 97 database, og ved at klikke på en pil genkalder den sioden igen (vare.asp) men tilligger nogle ekstra variabler, blandt andet og det skal sorteres stigende eller faldende, samt hvad den skal sorterer efter, og jeg kan ikke helt finde ud af hvordan disse nævnte SQL sætninger skal sættes ind i sammenhængen......
Avatar billede vanddyr Nybegynder
23. september 2001 - 00:00 #5
og i SQL sætningen, kan jeg ikke indsætte en IF sætning, det så siger den at CASE var ventet?

Jeg giver gerne flere point for mere hjælp, hvis jeg bare kan få det til at virke :-)
Avatar billede eagleeye Praktikant
23. september 2001 - 00:03 #6
Det er den her som skal tilrettes?

strSQL = \"SELECT * FROM fabrikat INNER JOIN \" & Request.QueryString(\"varetype\") & \" ON fabrikat.Fabrikatnr = \" & Request.QueryString(\"varetype\") & \".Fabrikat WHERE \" & Request.QueryString(\"varetype\") & \".Fabrikat = fabrikat.Fabrikatnr ORDER BY \" & felt & \" \" & azza & \";\"
Set database = con.Execute(strSQL)

Avatar billede eagleeye Praktikant
23. september 2001 - 00:07 #7
I hvilken tabel ligger Pris og Tilbud?
Avatar billede eagleeye Praktikant
23. september 2001 - 00:12 #8
Vil felt altid være = Pris:
vare.asp?felt=pris
eller kan det ændre sig?
Avatar billede eagleeye Praktikant
23. september 2001 - 02:28 #9
Hej jeg har lavet dette forsøg:

\'Henter diverse data omkring table og kolonne
azza = Request.QueryString(\"azza\")
felt = Request.QueryString(\"felt\")
varetype_TB = Request.QueryString(\"varetype\")

\'Hvis det er felt Pris som er valt lave speciel søgning
if LCase(felt) = \"pris\" then
  felt = \"IIF([\" & varetype_TB & \"].[Tilbud] <> 0, [\" & varetype_TB & \"].[Tilbud], [\" & varetype_TB & \"].[Pris])\"
end if

strSQL = \"SELECT IIF([\" & varetype_TB & \"].[Tilbud] <> 0, [\" & varetype_TB & \"].[Tilbud], \"
strSQL = strSQL & \"[\" & varetype_TB & \"].[Pris]) As Belob, * FROM fabrikat \"
strSQL = strSQL & \"INNER JOIN \" & varetype_TB
strSQL = strSQL & \" ON fabrikat.Fabrikatnr = \" & varetype_TB & \".Fabrikat \"
strSQL = strSQL & \"WHERE \" & varetype_TB & \".Fabrikat = fabrikat.Fabrikatnr \"
strSQL = strSQL & \"ORDER BY \" & felt & \" \" & azza & \";\"

Denne vil giver hvad du hendter idag + et felt som hedder belob, det kan du bruge til at udskrive den aktuelle prisen med.
Avatar billede eagleeye Praktikant
23. september 2001 - 02:31 #10
Hvis bare vil havde sorteret på Pris/tilbud uden at få den ekstra kolonne med i recordsetet. Det er ikke nødvendigt med den ekstra kolonne (belob) hvis du beholder din måde at udskrive prisen på:

\'Henter diverse data omkring table og kolonne
azza = Request.QueryString(\"azza\")
felt = Request.QueryString(\"felt\")
varetype_TB = Request.QueryString(\"varetype\")

\'Hvis det er felt Pris som er valt lave speciel søgning
if LCase(felt) = \"pris\" then
  felt = \"IIF([\" & varetype_TB & \"].[Tilbud] <> 0, [\" & varetype_TB & \"].[Tilbud], [\" & varetype_TB & \"].[Pris])\"
end if

strSQL = \"SELECT * FROM fabrikat \"
strSQL = strSQL & \"INNER JOIN \" & varetype_TB
strSQL = strSQL & \" ON fabrikat.Fabrikatnr = \" & varetype_TB & \".Fabrikat \"
strSQL = strSQL & \"WHERE \" & varetype_TB & \".Fabrikat = fabrikat.Fabrikatnr \"
strSQL = strSQL & \"ORDER BY \" & felt & \" \" & azza & \";\"
Avatar billede vanddyr Nybegynder
23. september 2001 - 13:34 #11
TAkker :-)
Avatar billede vanddyr Nybegynder
23. september 2001 - 13:35 #12
UPS, ville du forresten have flere point, så bare lige lig en ny besked her om hvormeget :-)
Avatar billede eagleeye Praktikant
23. september 2001 - 13:42 #13
Nej, det er fint :)
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