ผมมีฟังก์ชั้นอยู่ 2 ฟังก์ชั้น คือ checkDupIndex กับ GetNewPropertyID ถ้าผมจะให้ฟังก์ชั่น GetNewPropertyID เรียกใช้ฟังก์ชั่น checkDupIndex ต้องเขียนโค้ดยังไงครับ ผมเขียนแบบนี้แล้วมัน error ว่า Cannot use parentheses when calling a Sub
Code (ASP)
Function checkDupIndex(prpID,Prefix)
Dim Rs, genID
sql = "SELECT * FROM tbl_properties WHERE prp_id='" & prpID & "' "
Call app.executeSQLDynamicUser(sql,Rs)
If Not Rs.EOF Then
genID = Prefix & Right("00000" & (CInt(Right(prpID, 5)) + 5), 5)
checkDupIndex(genID,Prefix)
Else
checkDupIndex = prpID
End If
End Function
Function GetNewPropertyID(PrpType)
Dim Prefix, NewId, Rs, genID
Select Case PrpType
Case "Rent":
Prefix = "L"
Case "Sale":
Prefix = "S":
Case "Sale & Rent":
Prefix = "C"
PrpType="Sale & Rent"
Case "SR":
Prefix = "C"
End Select
'Prefix = Left(PrpType, 1)
'If Prefix = "R" Then Prefix = "L"
sql = "SELECT Max(prp_id) as ID FROM tbl_properties WHERE rentorsell='" & PrpType & "'"
Call app.executeSQLDynamicUser(sql,Rs)
If Not Rs.EOF Then
If IsNull(Rs("ID")) Then
genID = Prefix & "00001"
Else
genID = Prefix & Right("00000" & (CInt(Right(Rs.Fields("ID").Value, 5)) + 1), 5)
End If
Else
genID = Prefix & "00001"
End If
Rs.Close
Set Rs = Nothing
Call checkDupIndex(genID,Prefix)
End Function
Function checkDupIndex(prpID,Prefix)
Dim Rs, genID
sql = "SELECT * FROM tbl_properties WHERE prp_id='" & prpID & "' "
Call app.executeSQLDynamicUser(sql,Rs)
If Not Rs.EOF Then
genID = Prefix & Right("00000" & (CInt(Right(prpID, 5)) + 5), 5)
checkDupIndex(genID,Prefix) '<!-------------------- เรียกตัวเอง
Else
checkDupIndex = prpID
End If
End Function
ใช่ครับ ผมให้มันเรียกตัวเองด้วย คือ ถ้าค่าที่ gen ออกมามันซ้ำ ผมให้มันเริ่มการทำงานของ Function ไปเรื่อยๆ จนกว่าจะได้ค่าที่ไม่ซ้ำหกับใน DB อ่ะคับ แล้วสรุปว่าถ้าจะให้อีกฟังก์ชั่นนึงเรียกใช้ฟังก์ชั่นนี้ ต้องเขียนยังไงครับเนี่ย?