Member 12456202 Ответов: 3

Преобразование из dbnull к типу число не является действительным


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

Private Sub btnNew_Click(ByVal sender As System.Объект, бывал е как система.EventArgs) обрабатывает btnNew.Щелчок

cnnOLEDB = New SqlConnection("источник данных=SHRAYAS-PC; начальный каталог=Bag_Shop; Интегрированная безопасность=True")

cnnOLEDB.Открыть()

Звоните ясно()

Dim cmd As New SqlCommand("Select Max(emp_id) from employee_details", cnnOLEDB)
Dim maxrows As Integer = cmd.Executescalar так()
maxrows = maxrows + 1
txt_id.Text = maxrows
'MsgBox(maxrows)
cmd = ничего

флаг = 2
кому btnsave.Text = "Сохранить"


btnNew.Включен = Ложь
btnDelete.Включен = Ложь
btnSearch.Включен = Ложь
бтнфирст.Включен = Ложь
btnPrevious.Включен = Ложь
btnNext.Включен = Ложь
btnLast.Включен = Ложь

Конец Подводной Лодки

Что я уже пробовал:

это исключение детали ошибки которые я получаю :-

Система.Которого вызывается invalidcastexception не обработано
Сообщение=преобразование из типа 'DBNull' в тип 'Integer' недопустимо.
Источник=Microsoft.VisualBasic
Трассировка стека:
в корпорации Microsoft.На языке VisualBasic.CompilerServices.Преобразования.ToInteger(Значение Объекта)
в Bag_Shop.employee_details.btnNew_Click(отправитель объекта, EventArgs e) в C:\Users\SHRAYAS\Desktop\Bag Shop\Bag_Shop\employee_details.vb:строка 74
в системе.Окна.Формы.Контроль.OnClick(EventArgs e)
в системе.Окна.Формы.Кнопка.OnMouseUp(MouseEventArgs mevent)
в системе.Окна.Формы.Контроль.WmMouseUp(Message& m, кнопка MouseButtons, Int32 клика)
в системе.Окна.Формы.Контроль.WndProc(сообщение& m)
в системе.Окна.Формы.ButtonBase.WndProc(сообщение& m)
в системе.Окна.Формы.Кнопка.WndProc(сообщение& m)
в системе.Окна.Формы.Контроль.ControlNativeWindow.WndProc(сообщение& m)
в системе.Окна.Формы.Родное окно.DebuggableCallback(hwnd элемента указателя IntPtr, int32 и глутамат натрия, указателя IntPtr параметр wparam, указателя IntPtr lparam должен)
в системе.Окна.Формы.Небезопасные методы.DispatchMessageW(MSG& msg)
в системе.Окна.Формы.Приложение.ComponentManager.Система.Окна.Формы.Небезопасные методы.IMsoComponentManager.FPushMessageLoop(dwComponentID типа int32, int32 и причина, типа int32 pvLoopData)
в системе.Окна.Формы.Приложение.ThreadContext.RunMessageLoopInner(Int32 причина, контекст ApplicationContext)
в системе.Окна.Формы.Приложение.ThreadContext.RunMessageLoop(Int32 причина, контекст ApplicationContext)
в корпорации Microsoft.На языке VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Онран()
в корпорации Microsoft.На языке VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
в корпорации Microsoft.На языке VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(строка[] командная строка)
в Bag_Shop.My.MyApplication.Main(String[] Args) в 17d14f5c-a337-4978-8281-53493378c1071.vb:строка 81
в системе.Домен приложений._nExecuteAssembly(монтаж, string[] аргументы)
в корпорации Microsoft.VisualStudio.Хостингпроцесс.HostProc.RunUsersAssembly()
в системе.Нарезание резьбы.Параллельном режиме.Выполнения(в параллельном режиме параллельном режиме, ContextCallback обратного вызова, состояние объекта)
в системе.Нарезание резьбы.ThreadHelper.ThreadStart()
Свойство innerexception:

3 Ответов

Рейтинг:
20

Nigam,Ashish

Это сообщение вы получаете из-за отсутствия записей в вашей таблице("employee_details")

таким образом вы можете сделать одну вещь использовать функцию Isnull в своем запросе следующим образом

Выберите ISNULL(Max(emp_id),0) из employee_details


Он вернет 0 для первой записи.


Ашиш


Nigam,Ashish

можете ли вы прислать мне снимки экрана или код после изменения и детали ошибки.

Member 12456202

о ... Ашиш, моя ошибка решена, брат...спасибо....на самом деле я сначала вставил код неправильно place....it это была моя ошибка...
теперь у меня есть изменения правильно, и они работают erfectly...еще раз благодарю вас..
:)

Рейтинг:
1

Rahul Rajat Singh

Проблема заключается в том, что когда в вашей таблице нет записей, результат

cmd.ExecuteScalar()
является DbNull... Который является классом. И вы пытаетесь подтолкнуть его к целому числу.

Поэтому мое предложение состояло бы в том, чтобы сначала взять результат этого в неявно типизированную переменную(например, var в C#, не уверен насчет VB), а затем проверить, является ли она DbNull, нажмите 0 на целочисленное значение, иначе фактическое значение.

Альтернативное решение: Используйте решение, которое предложил Ашиш, и поместите ISNULL в сам ваш запрос.


Member 12456202

Рахул, может быть, ты немного точен...я не знал тебя...к тому же я делаю свой проект в VB.net и я могу показать вам скриншот ошибки, но я не могу найти здесь ни одной панели скриншотов 0_o?

Рейтинг:
1

Member 14665388

1014:SUB-AUA code is invalid" to type 'Integer' is not valid.Служба Aadhaar


Richard Deeming

Ваше сообщение об ошибке не является "решением" для чьей-то ошибки!

Если вы хотите задать вопрос, то ЗАДАВАТЬ ВОПРОС[^]. Но вам нужно будет предоставить много дополнительная информация, что сообщение об ошибке, если вы хотите, чтобы кто-то мог вам помочь.