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å?
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.
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?
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.
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