在我应用了一些条件之前它运行良好...现在我的表单执行在ExecuteScalar之后停止......任何想法?这是我的代码:
Dim IDNomina As String = Format(Date.Now, "ddMMyyyy")
conn = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;")
connCalc = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;")
connActualizar = New MySqlConnection("Data Source=localhost; user id=root; password=; database=arj;")
myCommand.Connection = conn
If Date.Now.Day <> 14 And Date.Now.Day <> 15 And Date.Now.Day <> 28 And Date.Now.Day <> 29 And Date.Now.Day <> 30 Then
MessageBox.Show("La nómina no puede ser generada ya que no se encuentra en días de pago")
Me.Close()
Else
myCommand.CommandText = "SELECT MAX(IDNomina) FROM Nomina WHERE left(cast(`IDEmpleado` as char(10)), 8) = ?IDNomina"
myCommand.Parameters.AddWithValue("?IDNomina", IDNomina)
conn.Open()
Dim Ejecucion As Object = myCommand.ExecuteScalar '<--- Here is where execution stops and open the incomplete form
conn.Close()
If IsDBNull(Ejecucion) Then
...
答案 0 :(得分:0)
问题很可能是声明参数。
尝试更改以下行:
myCommand.CommandText = "SELECT MAX(IDNomina) FROM Nomina WHERE left(cast(`IDEmpleado` as char(10)), 8) = ?IDNomina"
myCommand.Parameters.AddWithValue("?IDNomina", IDNomina)
为:
myCommand.CommandText = "SELECT MAX(IDNomina) FROM Nomina WHERE left(cast('IDEmpleado' as char(10)), 8) = @IDNomina"
myCommand.Parameters.AddWithValue("@IDNomina", IDNomina)
此外,添加一个try / catch处理程序,以便您可以查看报告的其他错误(如果有)。
<强>更新强>
感谢the link提供的Miika L,上述内容仅适用于MySQL 5.0之前的版本,除非old syntax=yes
添加到连接字符串中。如果您使用的是5.0之前的版本,则这是您需要使用的语法;否则,您的原始语法是正确的,并且您在代码中的其他位置有问题。
有一点需要注意:IDEmpleado周围的引号可能会导致问题,但您需要找出确切的位置和发生的错误。
答案 1 :(得分:0)
提取SQL并在Management Studio /您选择的SQL工具中运行它,并查看生成的错误(如果有)。