Använder mig av en rekursiv funktion för att skapa ett löpnummer. Finns löpnummret redan ska funktionen anropa sig själv tills funktionen har skapt ett löpnummer som inte finns. Hej, tror vi behöver få se lite kod för att kunna avgöra vad som går fel för dig. Varför rekursion för att skapa ett löpnummer? Duger inte vanlig iteration? <code> <b>Var har du rekursionen?</b> La till variabeln locCasenumber till funktionsanropet.Problem med rekursiv funktion
Problem: Om det första löpnummret som skapas finnns i db, ropar jag på funktionen igen och skapar ett nytt löpnummer och kollar det mot db. Vi säger att detta löpnummer var ledigt, då returnerar jag detta löpnummer, men variabeln som tar emot detta värde är tom. Jag kollar löpnummret precis innan jag returnerar värdet och det är ok.
Allt funkar bra om det första löpnummret som skapas inte finns i db. Då får jag med mig det skapade löpnummret.
Varför får jag inte med mig värdet?Sv: Problem med rekursiv funktion
Sv: Problem med rekursiv funktion
Finns det inte risk för oändlig rekursion/iteration eller är det säkert att ett nytt nummer verkligen kommer att hittas?Sv:Problem med rekursiv funktion
'Funktionsanrop
locCace = generateCasenumber(conn, "")
'Desa funktioner ligger i en egen fil. Filen inkluderas i den fil som anropa denna funktion
function generateCasenumber(conn, inCountCaseNumber)
dim locSQL, locRS, locDate, locCount, locCasenumber, locStatus, locCounter
if inCountCaseNumber <> "" then
locCount = inCountCaseNumber + 1
locCounter = locCount
else
locSQL = "select count(*) from tbl_xxx where left(create_date, 10) = #"&date&"#"
set locRS = conn.execute(locSQL)
locCount = locRS(0)
locRS.close
set locRS = nothing
locCount = locCount + 1
locCounter = locCount
end if
locDate = date
locCasenumber = locDate & locCount
locStatus = checkIfCasenumberExsits(conn, locCasenumber)
if locStatus then
generateCasenumber conn, locCounter
else
generateCasenumber = locCasenumber
end if
end function
function checkIfCasenumberExsits(conn, inCasenumber)
dim locSQL, locRScount, locCount
locSQL = "select count(*) from tbl_xxx where casenumber = '"&inCasenumber&"'"
set locRScount = conn.execute(locSQL)
locCount = locRScount(0)
locRScount.close
set locRScount = nothing
if locCount = 0 then
checkIfCasenumberExsits = false
else
checkIfCasenumberExsits = true
end if
end function
</code>Sv:Problem med rekursiv funktion
Här har han anropet...
<code>
...
if locStatus then
generateCasenumber conn, locCounter
...
</code>
...dock anropas den som en subrutin, inte som en funktion...Sv: Problem med rekursiv funktion
locCasenumber = generateCasenumber(conn, locCounter)
Tackar