Преобразование из строки "" в тип 'Double недопустимо - PullRequest
0 голосов
/ 05 апреля 2011

Я продолжаю получать эту ошибку при попытке выполнить этот код, даже после размещения CType вокруг значения и определения его как double?

Private Sub GridView1_RowDeleting(sender As Object, e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting
    ' The deletion of the individual row is automatically handled by the GridView.
    Dim dbDelete As New pbu_housingEntities
    ' Remove individual from the bed.
    Dim occupant As String = GridView1.Rows(e.RowIndex).Cells(2).Text
    Dim room As String = GridView1.Rows(e.RowIndex).Cells(5).Text
    Dim building As String = GridView1.Rows(e.RowIndex).Cells(4).Text
    Dim find_id = From p In dbDelete.Residents _
                  Where p.person_name = occupant _
                  Select p


    Dim remove_bed = From p In dbDelete.Beds _
                     Where p.occupant = find_id.FirstOrDefault.id _
                     Where p.room = room _
                     Where p.building = building _
                     Order By p.id Descending _
                     Select p
    remove_bed.First.occupant = CType(0, Double)
    dbDelete.SaveChanges()

    ' Increase number of open spaces in room.
    Dim update_occupancy = From p In dbDelete.Rooms _
                           Where p.room1 = room
                           Where p.building = building _
                           Select p

    update_occupancy.First.current_occupancy = update_occupancy.First.current_occupancy - 1
    dbDelete.SaveChanges()

End Sub

Ответы [ 2 ]

1 голос
/ 05 апреля 2011

Я подозреваю, что проблема в этой строке:

Where p.occupant = find_id.FirstOrDefault.id _

Оба они одного типа? Причина, по которой я подозреваю эту строку, заключается в том, что в другой таблице ранее вы используете occupant в качестве имени человека. Я бы проверил, что другие значения в ваших предложениях where также соответствуют типам, с которыми вы их сравниваете.

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

0 голосов
/ 05 апреля 2011

Невозможно преобразовать пустую строку в двойную. Вставьте оператор if, проверяя пустую строку, и если она пуста, тогда установите double в 0.

...