Hello,
10x for your reply

I write little more info:
process:
1, usr type the casetteId into the txtbox.
2, I check that this is exist or not,
2/1 if not exist then I show a new form,
that the usr select an exist one
3, next step I delete this record from this table
and here are when I get the error

if I opened twice, why not accept third???
1th open code:
[vba]Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
conn.Open glob.connstring
rs.CursorLocation = adUseClient
Set cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
rs.CursorLocation = adUseClient

cmd.CommandText = "SELECT * FROM [rep1]"
rs.Open cmd, , adOpenStatic, adLockReadOnly
rs.MoveFirst
Do
Me.Combo1.AddItem rs("casetteID") & ";(" & rs("date") & " " & rs("time") & ")"
rs.MoveNext
Loop While rs.EOF = False
rs.Close[/vba]

2nd open code:
[vba]
cmd.CommandText = "SELECT * FROM [rep1] where casetteID=?"
cmd.Prepared = True

Set prm1 = cmd.CreateParameter("casetteID", adChar, adParamInput, Len(mainfrm2.Text_grafitID.Text), mainfrm2.Text_grafitID.Text)
cmd.Parameters.Append prm1
rs.Open cmd, , adOpenDynamic, adLockPessimistic
If Not rs.RecordCount = 1 Then
rs.Close
Me.Enabled = True
MsgBox "not in the db!", , "Warning!"
kaz_selector.Show 1, Me
Exit Sub
Else
Me.Label_serial.Caption = rs("serial")
Me.Label_type.Caption = rs("typeID")
End If
'clear conn
rs.Close
cmd.Parameters.Delete ("casetteID")
[/vba]
and this second copyed to here because use this as third, it is not work.

the full code uploaded here
http://laja.extra.hu/vbtest
thanks your time
regards