Member 12879517 Ответов: 1

Invalidcasrexception было необработанным. Преобразование из типа 'dbnull' в тип 'string' недопустимо


Что не так с кодировкой, когда я пытаюсь запустить ее, она говорит invalidcastexception : преобразование из типа 'DBNull' в тип 'String' недопустимо. что я должен сделать

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

Публичный класс frm_invoice_a155960

Тусклый я как струна

Private Sub frm_invoice_a155960_Load(ByVal sender As System.Объект, бывал е как система.EventArgs) Обрабатывает MyBase. Load
refresh_grid()
refresh_grid2()

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

Частная суб refresh_grid()

Дим last_id как String = run_sql_query(" выберите максимум(FLD_ORDER_ID) как LAST_ID от TBL_ORDER_LIST_A155960").Строк(0).Пункт("LAST_ID")
Дим last_customer как String = run_sql_query(" выберите максимум(FLD_CUSTOMER_ID), а фамилия от TBL_ORDER_A155960").Строк(0).Пункт("фамилия")
Дим last_date как String = run_sql_query(" выберите мин(FLD_ORDER_DATE) как LAST_DATE от TBL_ORDER_A155960").Строк(0).Пункт("LAST_DATE")
lbl_order.Текст = "" &амп; last_id
имя_экземпляра.Текст = "" &амп; last_customer
lbl_date.Текст = "" &амп; last_date

Dim mysql As String = "SELECT * FROM TBL_ORDER_LIST_A155960 WHERE FLD_ORDER_ID LIKE "" % " & lbl_order.Текст и усилитель; "%"""
Dim mydatatable как новый DataTable
Dim myreader как новый OleDb. OleDbDataAdapter(mysql, myconnection)
мой читатель.Заполнение (mydatatable)

grd_invoice.DataSource = mydatatable

grd_invoice.Столбцы (0).HeaderText = " ID продукта"
grd_invoice.Столбцы (1).HeaderText = " ID ORDER"
grd_invoice.Столбцы (2). HeaderText = " количество"
grd_invoice.Столбцы(3). HeaderText = " цена (RM)"
grd_invoice.Столбцы (4).HeaderText = " промежуточный итог (RM)"


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

Частная суб refresh_grid2()

Dim total As String = 0
Для I As Integer = 0 To grd_invoice.Количество строк - 1
итого += grd_invoice.Строки (I).Ячейки (4). Значение

Следующий

lbl_total.Text = " RM " & amp; total

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

1 Ответов

Рейтинг:
12

OriginalGriff

Во-первых, не делай этого так.
Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Во-вторых, чтобы избавиться от вашей проблемы, исправьте свою базу данных. Один или несколько столбцов в вашей таблице имеют по крайней мере одну запись, которая является нулевой и которая возвращается. Это возвращается из SQL как DBNull.Значение, и оно не может быть изменено в строку. Лучшее решение - это выяснить, где находится null - а он может быть в любом из нескольких мест-с помощью отладчика и выяснить, почему ваша БД содержит значения, которые являются NULL, и исправить их.
Мы не можем сделать это для вас: у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы сможете узнать!