webForumDet fria alternativet

Skrivningsfunktion till för SP / Access

.NET

5 svar · 455 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Hej,
jag har en SP inlagd i min accessdatabas som heter set_post som ser ut så här:

INSERT INTO guestbook ( id, rubrik )
VALUES ([@id], [@rubrik]);

Och en ASP.NET kod som ser ut så här.

...
Private conn As OleDbConnection
Private cmd As OleDbCommand
        
Private Sub connOpen(ByVal sql As String)
	conn = New OleDb.OleDbConnection("PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=" & Server.MapPath("\data\my_db.mdb"))
	cmd = New OleDb.OleDbCommand(sql, conn)
	cmd.CommandType = CommandType.StoredProcedure
End Sub
  

Public Function wri(ByVal str As String) As String
	connOpen("set_post")
	Dim objParam As OleDbParameter
		'objParam.Direction = ParameterDirection.Input
		objParam = New OleDbParameter("@id", OleDbType.Guid)
		objParam.Value = "{BD20D264-9A18-49F3-B5B1-DBA645826BA2}"
		cmd.Parameters.Add(objParam)
		
		objParam = New OleDbParameter("@rubrik", OleDbType.Char)
		objParam.Value = str
		cmd.Parameters.Add(objParam)

	   Try
		conn.Open() 
		cmd.ExecuteNonQuery()
		conn.Close 
			
	   Catch ex As OleDbException 
			Return "Err: " & ex.Message.ToString
		Throw ex 
	   End Try 
	   
	   Return "* Done *"
End Function
...

Men när jag kör funktionen så händer ingenting. får inte ens ett felmeddelande. och inte heller "* Done *" visas.
Jag har testat det mesta. Att köra SP:n direkt i access funkar bra.
Vad är fel?
IUSR har både läs och -skrivrättigheter

Medlem sedan jan. 20022 440 inlägg
#2

Har du visual studio? Lägg in en breakpoint innan try och stega igenom din try catch!

Du kan också skita i try-catch så får du garanterat bättre vetskap om vad som går fel.

Medlem sedan nov. 20041 189 inlägg
#3

Om du skriver
Throw ex
mister du din stacktrace.

Medlem sedan okt. 20041 556 inlägg
#4

Ok, då får jag felet:
System.InvalidCastException: Invalid cast from System.String to System.Guid
På denna rad: cmd.ExecuteNonQuery()

Medlem sedan sep. 20011 914 inlägg
#5
objParam = New OleDbParameter("@id", OleDbType.Guid)
objParam.Value = new Guid("BD20D264-9A18-49F3-B5B1-DBA645826BA2")
Medlem sedan okt. 20041 556 inlägg
#6

mmm, jag googlade lite och hittade det.
Tusen tack!

261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)