Member 14588284 Ответов: 1

Вставить нулевое значение доступа


Привет , как я могу вставить нулевые ячейки в datagridview при вставке access.mdb


я пробовал эти коды, но получаю ошибку "ничего"

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

Dim D_TBRM = .Rows(ROW).Cells(C_TBRM).Value
                     If D_TBRM = "" Then D_TBRM = DBNull.Value.ToString
                     Dim D_BARKOD As String = .Rows(ROW).Cells(C_BARKOD).Value.ToString
                     If D_BARKOD = "" Then D_BARKOD = DBNull.Value.ToString



Comm.Parameters.AddWithValue("@10", D_TBRM)
                       Comm.Parameters.AddWithValue("@11", .Rows(ROW).Cells(C_MIKTAR).Value * 1)
                       Comm.Parameters.AddWithValue("@12", D_BARKOD)

Richard MacCutchan

Исключение NullReferenceException означает .Rows(строка).Ячейки(C_BARKOD) не содержат никаких данных.

Member 14588284

да это правда
когда в ячейку DataGrid пустой Я посылаю этот доступ.МБР функции nullvalue

Richard MacCutchan

Если ячейка пуста, вы не можете ссылаться на ее значение, так как оно не существует. Сначала проверьте ячейку, прежде чем пытаться использовать ее значение.

Member 14588284

Но я знаю, что камера пуста.

Richard MacCutchan

Тогда не пытайтесь получить доступ к его значению. Сколько раз это нужно повторять?

Member 14588284

не постоянно но иногда это случается

Richard MacCutchan

If .Rows(ROW).Cells(C_BARKOD).Value == null
    D_BARKOD = DBNull.Value.ToString
Else
    D_BARKOD = .Rows(ROW).Cells(C_BARKOD).Value.ToString
End If

Member 14588284

== нулевой

здесь ошибка "null не объявлен"



я так изменился
я пробую других я вернусь

 If .Rows(ROW).Cells(C_BARKOD).Value = "" Then
                            D_BARKOD = DBNull.Value.ToString
                        Else
                            D_BARKOD = .Rows(ROW).Cells(C_BARKOD).Value.ToString
                        End If

Richard MacCutchan

Используйте VB.NET значение IsNothing.

1 Ответов

Рейтинг:
2

OriginalGriff

Вам действительно нужно быть более ясным, когда вы описываете проблему - копирование и вставка сообщения об ошибке-это лучший способ, "получить" ошибку" ничего " не очень помогает, особенно когда вы не говорите нам, где вы ее получаете или когда.

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

На первый взгляд, то же самое Value от .Rows(ROW).Cells(C_BARKOD) возвращает нулевое значение ("Nothing"в VB), поэтому призыв к ToString правильно ли выбрасывать исключение, потому что вы пытаетесь вызвать метод - Tostring - на несуществующем экземпляре объекта - null.
Если да, то проверьте его, прежде чем пытаться что-либо вызвать!

Мы не можем проверить вас - мы не можем запустить ваш код, и у нас нет никаких ваших данных - так что это будет зависеть от вас.
К счастью, у вас есть инструмент, который поможет вам выяснить, что происходит: отладчик. Если вы не знаете, как его использовать, то быстрый Google для "Visual Studio debugger" должен дать вам необходимую информацию.

Поместите точку останова в первую строку функции и запустите код через отладчик. Затем посмотрите на свой код и на свои данные и определите, что должно произойти вручную. Затем по одному шагу в каждой строке проверяйте, что то, что вы ожидали, произойдет именно так, как и произошло. Когда это не так, тогда у вас есть проблема, и вы можете вернуться назад (или запустить ее снова и посмотреть более внимательно), чтобы выяснить, почему.

Извините, но мы не можем сделать это за вас - пришло время вам освоить новый (и очень, очень полезный) навык: отладку!


Member 14588284

https://yadi.sk/i/_yV7a1UNSBnDwg
сообщение об ошибке


мои все коды такие.
Вскоре somtimes мои ячейки datagridview могут быть равны нулю

Dim STNNAME = "SNO,CARKOD,TARIH,BELGETIP,BELGENO,BA,ACIKLAMA,MUH_ACIKLAMA,STKKOD,TBRM,MIKTAR,BARKOD,USTBRM,MIKTAR2,BRMFIYAT,TUTAR,KDV,KDVTUTAR,ISK,ISKTUTAR,NETTUTAR,KDVDAHIL,KAYITNO,STOKLU,ISLTARIH,GIDKALEM,GIDYER,BIRIM,MUHKOD"        Dim STR1 = "INSERT INTO CARTH002(" & STNNAME & ") VALUES(@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19,@20,@21,@22,@23,@24,@25,@26,@27,@28,@29) "        Dim GUN As DateTime        ' MsgBox(.Cells(0).Value)        With FAT_TABLO            For ROW = 0 To .Rows.Count - 1                If IsDBNull(.Rows(ROW).Cells(1).Value) = False Then                    If .Rows(ROW).Cells(1).Value.ToString <> "" Then                        ' SNO,CARKOD,TARIH,BELGETIP,BELGENO,BA,ACIKLAMA,MUH_ACIKLAMA,STKKOD,                        ' TBRM,MIKTAR,BARKOD,USTBRM,MIKTAR2,BRMFIYAT,TUTAR,KDV,KDVTUTAR,ISK,ISKTUTAR,                        ' NETTUTAR, KDVDAHIL, KAYITNO, STOKLU, ISLTARIH, GIDKALEM, GIDYER                        Dim D_ACIKLAMA = .Rows(ROW).Cells(C_ACIKLAMA).Value                        If D_ACIKLAMA = "" Then D_ACIKLAMA = DBNull.Value.ToString                        Dim D_STKKOD As String = .Rows(ROW).Cells(C_STKKOD).Value.ToString                        If D_STKKOD = "" Then D_STKKOD = DBNull.Value.ToString                        Dim D_TBRM As String = .Rows(ROW).Cells(C_TBRM).Value                        If D_TBRM = "" Then D_TBRM = DBNull.Value.ToString                        Dim D_BARKOD As String = .Rows(ROW).Cells(C_BARKOD).Value.ToString                        If D_BARKOD = "" Then D_BARKOD = DBNull.Value.ToString                        Dim D_USTBRM As String = .Rows(ROW).Cells(C_USTBRM).Value.ToString                        If D_USTBRM = "" Then D_USTBRM = DBNull.Value.ToString                        Dim D_MIKTAR2 As String = .Rows(ROW).Cells(C_MIKTAR2).Value.ToString                        If D_MIKTAR2 = "" Then D_MIKTAR2 = 0                        Dim D_GIDKALEM As String = .Rows(ROW).Cells(C_GIDKALEM).Value.ToString                        If D_GIDKALEM = "" Then D_GIDKALEM = DBNull.Value.ToString                        Dim D_GIDYER As String = .Rows(ROW).Cells(C_GIDYER).Value.ToString                        If D_GIDYER = "" Then D_GIDYER = DBNull.Value.ToString                        Dim D_MUHKOD = .Rows(ROW).Cells(C_MUHKOD).Value                        If D_MUHKOD = "" Then D_MUHKOD = DBNull.Value                        '  MsgBox(.Rows(ROW).Cells(C_TARIH).Value)                        GUN = .Rows(ROW).Cells(C_TARIH).Value                        Dim Comm As New OleDbCommand(STR1, cn)                        Comm.Parameters.AddWithValue("@1", ROW + 1)                        Comm.Parameters.AddWithValue("@2", CARKOD.Text)                        Comm.Parameters.AddWithValue("@3", GUN)                        Comm.Parameters.AddWithValue("@4", MODUL.Text)                        Comm.Parameters.AddWithValue("@5", BELGENO.Text)                        Comm.Parameters.AddWithValue("@6", BA.Text)                        Comm.Parameters.AddWithValue("@7", D_ACIKLAMA)                        Comm.Parameters.AddWithValue("@8", "")                        Comm.Parameters.AddWithValue("@9", D_STKKOD)                        If D_TBRM <> "" Then                            Comm.Parameters.AddWithValue("@10", D_TBRM)                        End If                        Comm.Parameters.AddWithValue("@11", .Rows(ROW).Cells(C_MIKTAR).Value * 1)                        Comm.Parameters.AddWithValue("@12", D_BARKOD)                        Comm.Parameters.AddWithValue("@13", D_USTBRM)                        Comm.Parameters.AddWithValue("@14", D_MIKTAR2)                        Comm.Parameters.AddWithValue("@15", .Rows(ROW).Cells(C_BRMFIYAT).Value * 1)

OriginalGriff

Так что проверяйте на нули ...

Member 14588284

Я думаю, что не смог бы объяснить.
я знаю ячейку DataGrid имеет значение null (пусто)
но когда он равен нулю, я должен отправить его в access.mdb нулевое значение