1

im currently facing problem with executeScalar when i create custom ID. the error is

InvalidOperationException was unhandled by user code.

Message=Connection must be valid and open.

Below is my code :

Dim str As String = "select isnull(max(idcr_record),0)+1 from cr_record where Emplid = '" & Session("Emplid") & "'"
Dim com As New MySqlCommand()
'this line was the error
'
Dim count As Integer = Convert.ToInt32(com.ExecuteScalar())

If count = 1 Then
    'insert if no record found
    '
    Dim cc As New MySqlCommand("insert into cr_record values (" & count & "," & Session("Emplid") & ")")
    cc.ExecuteNonQuery()
Else
    'update becoz record already exist
    '
    Dim upd As String = "update cr_record set idcr_record = " & count & " where Emplid = " & Session("Emplid") & " "
    Dim cc As New MySqlCommand(upd)
    cc.ExecuteNonQuery()
End If

Dim length As Integer = 0
Dim val As String = Convert.ToString(count)
length = val.Length
If length = 1 Then
    val = "CR " + "00000" & Convert.ToString(count)
End If
If length = 2 Then
    val = "CR " + "0000" & Convert.ToString(count)
End If
If length = 3 Then
    val = "CR " + "000" & Convert.ToString(count)
End If
If length = 4 Then
    val = "CR " + "00" & Convert.ToString(count)
End If
If length = 5 Then
    val = "CR " + "0" & Convert.ToString(count)
End If
cr_id = "" & val
har07
  • 88,338
  • 12
  • 84
  • 137
kolapopo
  • 108
  • 1
  • 4
  • 14
  • where are you opening your connection? i.e. Dim con as new MySqlConnection(connectionstringvariable) – attila Apr 02 '14 at 02:11
  • @attila owh i must also open connection again..because i have already open connection when it start running..i will try yours suggestion tq – kolapopo Apr 02 '14 at 02:29
  • @attila i just make an oppen connection it still facing the same error.. – kolapopo Apr 02 '14 at 02:39

1 Answers1

0

At least, you need to pass your SQL command string and SqlConnection object to SqlCommand object before you can execute the command :

Dim str As String = "select isnull(max(idcr_record),0)+1 from cr_record where Emplid = '" & Session("Emplid") & "'"
Dim conn As New MySqlConnection
conn.ConnectionString = "....."

'pass your SQL command string and MySqlConnection object to MySqlCommand
'
Dim com As New MySqlCommand(str, conn)

conn.Open()
Dim count As Integer = Convert.ToInt32(com.ExecuteScalar())
har07
  • 88,338
  • 12
  • 84
  • 137