When inserting data, you don't need a recordset object, since an INSERT
statement doesn't return a recordset. Instead, try using a command object instead. The command object gives you more control over how your SQL statement is passed to the server, and it also gives you a way to test whether any records were inserted.
I'd also recommend setting Option Explicit
at the top of each module, since it will stop you from making mistakes with variables (for instance, you have both conn
and oConn
in your code, which I don't think you intended.
Here are my edits to your code. It's untested, but I think I've got it right. If it runs without any errors, and recordsAffected
returns 1, but there's still nothing on the server, then we'll have to do some more digging.
Sub ConnectSqlServer()
'********SPC DATABASE CONNECTION**********************
'write slurry information to database
'spc_date, mix_type, slurry_lot_num, mixer_num, shift, oper
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim sConnString As String
Dim recordsAffected as Long
'Create connection string
sConnString = "Provider=sqloledb; Server=SERV; Database=db; Trusted_Connection=True;"
'Open connection and execute
conn.Open sConnString
With cmd
.ActiveConnection = conn
.CommandType = adCmdText
.CommandText = "INSERT INTO TBL (col1, col2) VALUES ('val', 'val');"
.Execute recordsAffected 'Includes a return parameter to capture the number of records affected
End With
Debug.Print recordsAffected 'Check whether any records were inserted
'Clean up
If CBool(conn.State And adStateOpen) Then conn.Close
Set cmd = Nothing
Set conn = Nothing
End Sub