2013-05-31 2 views
0

Очень простая проблема с попыткой вернуть набор данных из объектной функции VB.NET.Почему эта функция объекта выходит?

Ниже показана моя функция, которая в настоящее время выходит из функции, как только выполняется запрос SQL, и непосредственно перед созданием нового объекта.

Форма редактирования называется здесь:

edit.Show() 

В форме редактирования, следующий бегите, чтобы получить подробную информацию о выбранных данных в базе данных сюда возвращенной datatset из метода «editEntry» на основе на идентификаторе, установленном в конструкторе.

Private Sub edit_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 


    Dim editDetails As New DBHandler(ID) 

    Dim returnedDetails As New DataSet 

    returnedDetails = editDetails.editEntry() 

    Dim nameReturned As Object = returnedDetails.Tables("editedTable").Rows(0)(1) 

    Dim firstNameEdit As String = nameReturned.ToString() 

    TextBox1.Text = firstNameEdit 

Это функция, в которой возникает проблема. Ничто не возвращается из запроса

Конструктор где установлен идентификатор:

Public Sub New(ByVal ID As Integer) 

    IDofFault = ID 

End Sub 

Функция класса:

Public Function editEntry() As DataSet 

    Dim editDataSet As New DataSet 
    Dim editSql As String = "SELECT * FROM duraGadget WHERE _id = " + IDofFault + "" 

    'Exiting from the function here 
    Dim connectionEdit As New OleDbConnection(conString) 
    Dim editAdapter As New OleDbDataAdapter(editSql, connectionEdit) 

    connectionEdit.Open() 

    editAdapter.Fill(editDataSet, "editedTable") 

    connectionEdit.Close() 

    Return editDataSet 

End Function 

Там нет ошибки он просто выходит из функции и им не знаю почему.

+1

Где находится 'IDofFault'? –

+0

Он передается из метода щелчка ячейки в конструктор класса DBHandler, когда создается экземпляр «editDetails». Я проверяю это при отладке и передается и устанавливается правильный идентификатор. – user1352057

+0

@RowlandShaw LOL хороший вопрос :) –

ответ

2

Вы можете получить исключение, а настройки отладки вашей визуальной студии не настроены так, чтобы останавливать вас на этих типах исключений.

Оберните содержимое функции EditEntry в блок Try/Catch и поместите точку прерывания внутри улова. Посмотрите, запускаются ли эти триггеры и просматриваются сведения об исключениях для получения дополнительной информации о том, что произошло.

+0

Это не будет вызвано, так как код выйдет сразу после SQL и непосредственно перед тем, как объект подключения созданный. – user1352057

+0

Скорректированный мой ответ –

+1

@ user1352057 Не раньше: ** во время **. Действие создания соединения вызывает исключение, а VS игнорирует это исключение, которое оно показывает в отладчике, как линия никогда не запускается. –

1

Очень глупая ошибка, это были ребята. Я просто сохранил значение ID как sting ... затем попытался передать его как Integer в конструктор ... результат? ..... Исключение преобразования.

+0

И чтобы добавить .... будучи главным образом C# dev, использование '+' просто для добавления моей переменной в уравнение вызывало ее как уравнение. Для всех, кто читает это и сталкивается с тем же вопросом, используйте '&' вместо '+', чтобы объединить ваш SQL-запрос! – user1352057

+0

Вот почему хорошая практика - добавить опцию Strict On в начало вашего кода или установить ее в свойствах проекта. Вы бы сразу получили ошибку компиляции. –

Смежные вопросы