Ragazzi sapete dirmi perchè ho questo errore ?

in pratica non riesce a fare l'insert nonostante lo stesso codice è applicato in altre tabelle e funziona perfettamente

le parti che non funzionano sono due e coinvolgono due tabelle (T_TopicsTree, T_Topics)

codice:
	if not(RootTopic) then	
		if oSRS.EOF then
			oSRS.AddNew
			oSRS.Fields("NumOrder") = oConn.Execute("SELECT ISNULL(MAX(NumOrder), 0) FROM T_TopicsTree WHERE IdFather=" & iIdPadre)(0) + 1
			oSRS.Fields("IdFather") = iIdPadre
		end if
		oSRS.Fields("Code") = Trim(Request("tInputCode" & strEstensionePagina))
	end if

ho dovuto fare così per risolverlo
codice:
	if not(RootTopic) then	
		if oSRS.EOF then
			oSRS.AddNew
iIDTopics = oConn.Execute("SELECT ISNULL(MAX(idtopics), 0) FROM T_TopicsTree")(0) + 1
			oSRS.Fields("IdTopics") = iIDTopics
			oSRS.Fields("NumOrder") = oConn.Execute("SELECT ISNULL(MAX(NumOrder), 0) FROM T_TopicsTree WHERE IdFather=" & iIdPadre)(0) + 1
			oSRS.Fields("IdFather") = iIdPadre
		end if
		oSRS.Fields("Code") = Trim(Request("tInputCode" & strEstensionePagina))
	end if
 
			iIDTopics = oConn.Execute("SELECT ISNULL(MAX(idtopics), 0) FROM T_TopicsTree")(0) + 1
			oSRS.Fields("IdTopics") = iIDTopics


nel secondo


codice:
		set oRS = GetRS(oConn, strSQL, true)
		if oRS.EOF then
			oRS.AddNew
			oRS.Fields("IDTopics")=iIDTopics
		end if
		oRS.Fields("IdLanguage")=strIDLanguage
		oRS.Fields("TopicName") = Trim(Request("tInputTopicName" & strEstensionePagina))
		oRS.Fields("ShortDescription") = Trim(Request("tInputShortDescription" & strEstensionePagina))
ho dovuto fare così altrimenti non ne voleva sapere

codice:
	set oRS = GetRS(oConn, strSQL, true)
		if oRS.EOF then
			oConn.Execute "SET IDENTITY_INSERT T_Topics ON"
			iIDTopics = iIDTopics + 0
						
                        SecondSQL = "insert into T_Topics (IdTopics,IDLanguage) values (" & iIDTopics & ",'" & strIDLanguage & "')"
			oConn.Execute SecondSQL
			oConn.Execute "SET IDENTITY_INSERT T_Topics OFF"	
			ADOClose oRS
			strSQL = "Select * from T_Topics"
			strSQL = strSQL & " where IdTopics = " & iIDTopics	 & " And IDLanguage='" & strIDLanguage & "'"
			set oRS = GetRS(oConn, strSQL, true)

		end if
		oRS.Fields("IdLanguage")=strIDLanguage
		oRS.Fields("TopicName") = Trim(Request("tInputTopicName" & strEstensionePagina))
		oRS.Fields("ShortDescription") = Trim(Request("tInputShortDescription" & strEstensionePagina))


sapete dirmi la natura del problema ?
saranno le due tabelle corrotte ?
esperienza in merito?

Grazie