while not RsVehicle.EOF
sVehicleName=RsVehicle("Name")
sVehicleNr=RsVehicle("Nr")
If g_ListVehicleListType = 0 then
sListType=sVehicleNr
Elseif g_ListVehicleListType = 1 then
sListType=sVehicleName
Else
sListType=sVehicleName & " - " & sVehicleNr
End If
s=s & "<option value='" & sVehicleName & "'"
if sVehicleName=par_vehicle then s=s& " selected"
s=s & ">" & sListType & "</option>"
if sVehicleName=par_vehicle then par_vehicle_id=sVehicleId
if sVehicleName=par_vehicle then par_vehicle_nr=sVehicleNr
RsVehicle.MoveNext
wend
Kan man optimera detta, eller göra det snyggare? Det funkar som det är tänkt, men jag är lite ringrostig.
dim g_ListVehicleSortOrder
dim g_ListVehicleSortType
dim g_ListVehicleListType
'Sorteringsordning. "ASC"=stigande, "DESC"=fallande
g_ListVehicleSortOrder = "ASC"
'Väljer hur resurserna ska sorteras i listmenyn. 1=Namn, 2=Nummer
g_ListVehicleSortType = 2
'Variabeln; g_ListVehicleListType styr vad som skall visas listmenyn. 0=registreringsnummer, 1=namn, 2=registreringsnummer och namn
g_ListVehicleListType = 2
'Funktion för att ange sorteringstyp
dim listVehicleSortType
listVehicleSortType = "[tblResource].[Name] "
If g_ListVehicleSortType <> 1 Then listVehicleSortType = "[tblResource].[Nr] " End if
...
' Hitta resurser som har loggposter
sSQLVehicle="SELECT DISTINCT [tblResource].[Id], [tblResource].[Nr], [tblResource].[Name]" _
& " FROM tblResource INNER JOIN tblResourceLog ON [tblResource].[Id] = [tblResourceLog].[ResourceId]" _
& " GROUP BY [tblResource].[Id], [tblResource].[Nr], [tblResource].[Name], [tblResource].[LogUnit]" _
& " HAVING ([tblResource].[LogUnit])='km' OR ([tblResource].[LogUnit])='mil'" _
& " ORDER BY " & g_ListVehicleSortType & g_ListVehicleSortOrder
s="<option>--- Fordon ---</option>"
RsVehicle.Open sSQLVehicle, Conn, 1
while not RsVehicle.EOF
sVehicleName=RsVehicle("Name")
sVehicleNr=RsVehicle("Nr")
If g_ListVehicleListType = 0 then
sListType=sVehicleNr
Elseif g_ListVehicleListType = 1 then
sListType=sVehicleName
Else
sListType=sVehicleName & " - " & sVehicleNr
If g_ListVehicleSortType <> 1 Then sListType = sVehicleNr & " - " & sVehicleName End if
End If
s=s & "<option value='" & sVehicleName & "'"
if sVehicleName=par_vehicle then s=s& " selected"
s=s & ">" & sListType & "</option>"
if sVehicleName=par_vehicle then par_vehicle_id=sVehicleId
if sVehicleName=par_vehicle then par_vehicle_nr=sVehicleNr
RsVehicle.MoveNext
wend
Det fungerar fortfarande som det är tänkt, att man kan sätta olika värden på variablerna och på så sätt ändra hur listmenyn byggs upp, men går det inte göra snyggare? :)
Indenteringen på din If är lite tokig. Så här blir bättre:
If g_ListVehicleListType = 0 then
sListType=sVehicleNr
Elseif g_ListVehicleListType = 1 then
sListType=sVehicleName
Else
sListType=sVehicleName & " - " & sVehicleNr
End If
Om dina variabler inte är variabla utan konstanta så kan du ange dem som konstanter istället.
Const g_ListVehicleSortType = 2
Sen att inte göra någon HTMLEncode på sVehicleName kan öppna upp för Cross Site Scripting säkerhetshål.
Indenteringen på din If är lite tokig. Så här blir bättre:
If g_ListVehicleListType = 0 then
sListType=sVehicleNr
Elseif g_ListVehicleListType = 1 then
sListType=sVehicleName
Else
sListType=sVehicleName & " - " & sVehicleNr
End If
Ja, lite snyggare... :)
Erik Juhlin skrev:
Sen att inte göra någon HTMLEncode på sVehicleName kan öppna upp för Cross Site Scripting säkerhetshål.
Om det finns möjlighet för användaren att ange vehicle name på något sätt så skulle det vara möjligt att mixtra med cookies och annat för andra användare.
Sen så skulle det bugga ur så fort en vehicle name har ett ' tecken.