VB.NET - Остановка выполнения формы после ExecuteScalar - PullRequest
0 голосов
/ 28 ноября 2011

Это работало нормально, пока я не применил некоторые условия ... Теперь выполнение моей формы останавливается сразу после 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
...

Ответы [ 2 ]

0 голосов
/ 28 ноября 2011

Извлеките SQL и запустите его в Management Studio / выбранном вами инструменте SQL и посмотрите, какая ошибка, если есть, генерируется.

0 голосов
/ 28 ноября 2011

Проблема, скорее всего, связана с объявлением вашего параметра.

Попробуйте изменить следующие строки:

        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, чтобы вы могли видеть, какие дополнительные ошибки,если таковые имеются, сообщается.

Обновление

Благодаря ссылке , предоставленной Miika L , выше будетработает только для версий, предшествующих MySQL 5.0, если только old syntax=yes не добавлено в строку подключения.Если вы используете версию до 5.0, это синтаксис, который вам нужно будет использовать;в противном случае ваш исходный синтаксис правильный, и у вас есть проблема в другом месте кода.

Одна вещь, на которую следует обратить внимание: кавычки вокруг IDEmpleado могут вызывать проблемы, но вам нужно точно определить, где и какая ошибкапроисходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...