Avatar billede dramsgaard Nybegynder
16. november 2004 - 18:09 Der er 16 kommentarer og
1 løsning

problemer med Select MAX

flg kode skal tage højeste værdi fra kolonnen "placering" og ligge 1 til for hver post der oprettes, men selvom der er masser af poster i DB'en bliver select max ved med at have værdien NULL istedet for værdien af det højeste tal i kolonnen "placering", hvad er der galt??


For Each File in Upload.Files

Dim navn, galleri, pos, SQL 
           
        SQL = "SELECT MAX(placering) as SidstePost from galleriBilleder where galleri = "&request.QueryString("galleriID")
          Set rsPos = MyConn.Execute(SQL)
          if rsPos.Eof or IsNull(rsPos("SidstePost")) Then pos = 1 else pos = (rsPos("sidstePost")+1)

            navn = File.FileName
            galleri = request.QueryString("galleriID")       
        SQL = "Insert Into galleriBilleder (navn, galleri, placering) Values('"&navn&"','"&galleri&"',"&pos&")"
          MyConn.Execute(SQL)

Next
Avatar billede michael_stim Ekspert
16. november 2004 - 18:11 #1
Ved ikke hvorfor den gör det, men kan du ikke bare skrive:
SQL = "SELECT MAX(placering) as SidstePost from galleriBilleder where placering <> NULL AND galleri = "&request.QueryString("galleriID")
Avatar billede dramsgaard Nybegynder
16. november 2004 - 18:30 #2
tjo det kan man vel godt, men så er min rsPos stadig tom
Avatar billede hmortensen Nybegynder
16. november 2004 - 18:35 #3
SELECT TOP 1 placering as SidstePost from galleriBilleder where placering <> NULL AND galleri = "&request.QueryString("galleriID") ORDER BY placering
Avatar billede hmortensen Nybegynder
16. november 2004 - 18:37 #4
Du burde måske også bruge Int() på Request.QueryString(), så den ikke tjekker op mod en streng
Avatar billede ellebaek Nybegynder
16. november 2004 - 18:39 #5
prøv med:

SQL = "SELECT MAX(placering) as SidstePost from galleriBilleder where placering IS NOT NULL AND galleri = "&CInt(request.QueryString("galleriID"))
Avatar billede dramsgaard Nybegynder
16. november 2004 - 18:48 #6
...har prøvet alle forslagene. Den sætter stadig bare 1 ind ved hver post i feltet "placering" istedet for at ligge 1 til
Avatar billede netro Nybegynder
16. november 2004 - 18:58 #7
Aggregatfunktionerne Max(), Min() og Avg() returnerer Null, hvis der ingen poster er. Det kunne derfor være, at du skulle starte med at undersøge, om der overhovedet er nogle tupler, der matcher forespørgslen:

SQL = "SELECT Count(*) from galleriBilleder where galleri = "&request.QueryString("galleriID")
Set rsPos = MyConn.Execute(SQL)
Response.Write rsPos(0)
Avatar billede netro Nybegynder
16. november 2004 - 19:02 #8
Hvis du bruger hmortensens eksempel, skal du lige huske at tilføje en "Desc" til sidst.
Avatar billede dramsgaard Nybegynder
16. november 2004 - 19:18 #9
hmm hvis jeg laver en response.write rsPos(0)efter SQL = "SELECT Count(*) og inden NEXT udskriver den ikke noget, og hvis jeg sætter den efter next får jeg flg fejl:

Type mismatch: 'rsPos'
Avatar billede michael_stim Ekspert
16. november 2004 - 19:29 #10
Pröv (burde väre det samme, men man kan pröve):
SQL = "SELECT Count(*) AS antal from galleriBilleder where galleri = "&request.QueryString("galleriID")
Set rsPos = MyConn.Execute(SQL)
Response.Write rsPos("antal")
Avatar billede dramsgaard Nybegynder
16. november 2004 - 19:34 #11
hmm ja den udskriver stadig ikke noget...fatter det ik
Avatar billede netro Nybegynder
16. november 2004 - 19:38 #12
Det lyder til, at du har glemt følgende linie inden, du udskriver tallet(?)

Set rsPos = MyConn.Execute(SQL)
Avatar billede netro Nybegynder
16. november 2004 - 19:43 #13
Prøv at skrive følgende i din test, så du præcis kan se, hvad der egentlig foregår:

For Each File in Upload.Files
  SQL = "SELECT Count(*) from galleriBilleder where galleri = "&request.QueryString("galleriID")
  Set rsPos = MyConn.Execute(SQL)
  Response.Write SQL & "<br>Antal poster: " & rsPos(0) & "<br><br>"
Next
Avatar billede dramsgaard Nybegynder
16. november 2004 - 19:59 #14
netro>> det giver flg:
SELECT Count(*) from galleriBilleder where galleri = 10
Antal poster:


...og der er masser af poster i tabellen
Avatar billede dramsgaard Nybegynder
16. november 2004 - 20:11 #15
jeg har vist selv fundet fejlen nu....det var kolonnen Galleri i tabellen galleriBilleder der stod til "text" istedet for "number"!!!

men alle der har prøvet at hjælpe med at finde fejlen kan lige smide at svar, så får i point som tak for i gad at bruge tid på det : )
Avatar billede michael_stim Ekspert
16. november 2004 - 20:29 #16
Shit hvor er vi dumme. Det er klart det er et tekstfelt når den udskriver NULL. Men vi tog for givet at det skulle väre et numerisk felt, eller at der ikke fandtes nogle tupler. Nogen gange kan man ikke se skoven for alle träerne
Avatar billede netro Nybegynder
16. november 2004 - 20:58 #17
Ja, så er det jo ikke så underligt, at der ikke returneres noget.
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