webForumDet fria alternativet

Select @@identity

Databaser & SQLur Databashanterare & SQL

9 svar · 271 visningar · startad av Addeladde

Medlem sedan jan. 20013 406 inlägg
Frågan#1

Varför får jag inget id efter insert?

		sqlString = "INSERT INTO Operators (O_CreateDate, O_Username, O_Password, O_Name, O_Icon, O_Email, O_Status, O_Feedback, O_TotalFeedback, O_TotalHandled, O_Activity) VALUES (" & _
			strDate & "," & _
			"'" & strInUsername & "'," & _
			"'" & strInPassword & "'," & _
			"'" & strInName & "'," & _
			"'" & strInIcon & "'," & _
			"'" & strInEmail & "'," & _
			"0,0,0,0,0)"

		objDB.Execute(sqlString)
		strSQL = "SELECT @@IDENTITY"
		Set ObjRS = objDB.execute(strSQL)
  		intOID = ObjRS(0)
		objDB.Close
Medlem sedan jan. 20013 406 inlägg
#2

Får följande felmeddelande:

Feltyp:
Körningsfel i Microsoft VBScript (0x800A01A8)
Objekt krävs.: 'objDB.Execute(...)'
/konvercera/admin/clsOperators.asp, line 85

På denna kod. Den fetmarkerade raden är rad nummer 85

Dim sqlString, strDate, ObjRS

		sqlString = "INSERT INTO Operators (O_CreateDate, O_Username, O_Password, O_Name, O_Icon, O_Email, O_Status, O_Feedback, O_TotalFeedback, O_TotalHandled, O_Activity) VALUES (" & _
			strDate & "," & _
			"'" & strInUsername & "'," & _
			"'" & strInPassword & "'," & _
			"'" & strInName & "'," & _
			"'" & strInIcon & "'," & _
			"'" & strInEmail & "'," & _
			"0,0,0,0,0)"
		objDB.Execute(sqlString)
		Set ObjRS = objDB.execute("SELECT @@IDENTITY")
  		intOID = ObjRS(0)
Medlem sedan juni 200032 969 inlägg
#3

Har du verkligen skapat connectionobjektet objDb?

Medlem sedan jan. 20013 406 inlägg
#4

Så här ser det ut:

Public objDB, objSettings

Set objDB = New DBObject
objDB.ConnectString = DBString
objDB.DBType = DBType

Set objSettings = New Real_Settings

Set objClear = New Real_ClearExpired
Set objClear = Nothing
Medlem sedan juni 200032 969 inlägg
#5

Nu har jag inte en aning om vad allt det där betyder, men är objDB öppnat?

Vad innehåller variablerna DBType och DBString?

Medlem sedan jan. 20013 406 inlägg
#6

Det är riktigt klurigt för mig också, håller på mixtrar i redan befitlig kod och det är massor med olika includefiler med funktioner som anroppar funktioner i andra includefiler.

DBType = "Access"

' The Appropriate DSN or DSN-Less Connect String
DBString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & AccessDBPath & ";"
Medlem sedan juni 200032 969 inlägg
#7

Ganska underligt sätt att skapa connectionobjekt på, och jag undrar om du inte måste ha med en .open någonstans, exempelvis:

Set objDB = New DBObject
objDB.ConnectString = DBString
objDB.DBType = DBType
objDB.Open

mvh

Medlem sedan jan. 20013 406 inlägg
#8

Det konstiga är att användaren läggs in i databasen men @@identity genereras inte.

När jag skapar en egen connection så funkar allt. Så det har definitivt med objdb att göra.

Medlem sedan jan. 20013 406 inlägg
#9

Mailade killen som skrivit koden och fick detta svar:

objDB is a public object for a database abstraction class. There are several levels to the software, with most actual database work organized in classes. I would recommend you place your database work in the relevant class or create a new one to keep the code all organized in the same way.

About using the abstraction class, objDB.Execute is for executing a statement that returns nothing. That function will only execute and returns True/False for if the code was a success (no VBScript errors) or not (VBScript errors).

If you wish to open a recordset, you need to use the objDB.OpenRS function, passing first the recordset name and second the SQL statement. You will later need to close the recordset with objDB.CloseRS and close the database (but not the database abstraction class) with objDB.Close.

Ex:

sqlString = "SELECT @@IDENTITY"
objDB.OpenRS objIdentRS, sqlString

If Not objIdentRS.EOF Then
intIdent = objIdentRS(0)
End If

objDB.CloseRS objIdentRS
objDB.Close

Nu har jag försökt med detta:

		sqlString = "INSERT INTO Operators (O_CreateDate, O_Username, O_Password, O_Name, O_Icon, O_Email, O_Status, O_Feedback, O_TotalFeedback, O_TotalHandled, O_Activity) VALUES (" & _
			strDate & "," & _
			"'" & strInUsername & "'," & _
			"'" & strInPassword & "'," & _
			"'" & strInName & "'," & _
			"'" & strInIcon & "'," & _
			"'" & strInEmail & "'," & _
			"0,0,0,0,0)"
		objDB.Execute(sqlString)
		strSQL = "SELECT @@IDENTITY"
		objDB.OpenRS objhamtaIDRS, sqlString
		intOID = objhamtaIDRS(0)
Medlem sedan jan. 20013 406 inlägg
#10

Fått det att fungera nu också kanske jag ska säga

143 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)