webForumDet fria alternativet

Liknande SQL-sats flera gånger

ASP

6 svar · 543 visningar · startad av Thompa__85

Medlem sedan aug. 2002600 inlägg
Frågan#1

Hej Wf!

Jag har en stor sajt där jag kör samma sql-sats flera gånger. Dock varierar värderna. Jag skulle tycka att det vore grymt smidigt att göra en function av det.

Men jag har googlat runt lite och inte hittat någon lösning för det. Går det ens att skapa en function med en SQL-sats med dynamiska värdern? Om inte, finns det något annat sätt jag kan lösa det här på?

Tacksam för svar :)

Mvh
Andreas

Medlem sedan sep. 2004828 inlägg
#2

Det är klart du kan skapa en funktion för det, eller en Stored Procedure, lite beroende på vad du egentligen vill göra

Medlem sedan aug. 2002600 inlägg
#3

StefanBergfeldt skrev:

Det är klart du kan skapa en funktion för det, eller en Stored Procedure, lite beroende på vad du egentligen vill göra

Hej!

Tack för svar.
Okej, det jag tänkt mig är nått sånt här:

Jag har tex 5 variabler som jag skickar in i en funktion:
Call AddPoints(MemberID,kampanj,datum,type,ID)
(Vet inte ens OM jag kan skicka dom via den vägen..?)

Sen att jag i min funktion för AddPoints hämtar värderna och kör en SQL Insert Into samt retunerar som det gick OK eller om det blev något fel.

Går det?

Medlem sedan sep. 2004828 inlägg
#4

Ska du använda resultatet som en del av ett recordset, så är det en function du ska köra.
Ska det bara hända så låter det som en Stored Procedure.

Medlem sedan aug. 2002600 inlägg
#5

StefanBergfeldt skrev:

Ska du använda resultatet som en del av ett recordset, så är det en function du ska köra.
Ska det bara hända så låter det som en Stored Procedure.

Hej!
Både och faktiskt. På vissa ställen vill jag enbart att den kör en SQL-sats och sparar det i databasen. Dvs inte hämta några värden.
Kan jag då köra något liknande?

Function AddPoints(memberID,intAntal)	
			sql = "UPDATE members SET intPoang = intPoang + "& intAntal &" WHERE member_id = " & memberID & ""
			Connect.Execute(sql),,128	
		Done = 1
	End Function

Om jag vill kolla om en post i databasen finns eller ej, kan jag då inte köra det som function också?

Function CheckPoints(memberID,strKampanj)	
		SQL = "SELECT strKampanj, member_id FROM poang_kampanjer Where member_id = "& memberID &" AND strKampanj = '"& strKampanj &"'"
		Set RS = Connect.execute(SQL)
			IF RS.EOF Then
				Done = 1
				RS.Close
				Set RS = Nothing
			Else
				Done = 0
			End IF
	End Function

Ingen av dessa funktioner fungerar. OM det går att göra så här, vad har jag då gjort för del?

Medlem sedan juni 20003 076 inlägg
#6

En funktion ska returnera något, det gör du inte i dina exempel.
Exempel om du vill räkna antalet poäng:

Function CheckPoints(memberID,strKampanj)
     Dim points
     points = 0

     SQL = "SELECT COUNT(*) As Points FROM poang_kampanjer Where member_id = "& memberID &" AND strKampanj = '"& strKampanj &"'"
     Set RS = Connect.execute(SQL)
     IF NOT RS.EOF Then points = RS("Points")
     RS.Close
     Set RS = Nothing

     CheckPoints = points
End Function

Och du använder funktionen:

If CheckPoints(12345, "kampanj 1") >0 Then
     Response.Write("Du har många poäng!")
Else
     Response.Write("Du saknar poäng!")
End If

Och om du inte t.ex. vill returnera användarens totala poäng eller dyligt efter AddPoints så ska den vara en Sub.

Medlem sedan aug. 2002600 inlägg
#7

doggelito skrev:

En funktion ska returnera något, det gör du inte i dina exempel.
Exempel om du vill räkna antalet poäng:

Function CheckPoints(memberID,strKampanj)
     Dim points
     points = 0

     SQL = "SELECT COUNT(*) As Points FROM poang_kampanjer Where member_id = "& memberID &" AND strKampanj = '"& strKampanj &"'"
     Set RS = Connect.execute(SQL)
     IF NOT RS.EOF Then points = RS("Points")
     RS.Close
     Set RS = Nothing

     CheckPoints = points
End Function

Och du använder funktionen:

If CheckPoints(12345, "kampanj 1") >0 Then
     Response.Write("Du har många poäng!")
Else
     Response.Write("Du saknar poäng!")
End If

Och om du inte t.ex. vill returnera användarens totala poäng eller dyligt efter AddPoints så ska den vara en Sub.

Tack så mycket! Ska genast testa och se om jag kan få det att fungera! :)

255 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)