VB DBNull решение с оператором for и без оператора if
В таблице много пробелов, и я хотел бы, чтобы эти пробелы (DBNull) в значениях меток игнорировались и представлялись как пустые значения. Также с добавлением и изменением таблицы через веб-форму было бы трудно контролировать каждый отдельный вход (23 столбца данных).
Можно ли сделать это с помощью утверждения FOR? Я пытался, но не имел никакого успеха. Я мог бы сделать это с помощью оператора IF, но мне пришлось бы сделать это для каждого из 23 ярлыков.
Вот код, который у меня есть до сих пор (спасибо людям на этом сайте).
Protected Sub TextBox1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.Load
Using sqlconn = New SqlConnection("Data Source=.sqlexpress;Initial Catalog=KLIJENTI;Integrated Security=True")
Using sqlcmd = New SqlCommand("Select NAZIV,PUN_NAZIV, ADRESA, GRAD, OPSTINA, PRAVNA_FORMA,DAT_REG, TRAJANJE, MATICNI, PIB, SIFRA_DELATNOSTI, NAZIV_DELATNOSTI, VELICINA, TEKUCI, RZZO, PIO From Baza Where SIFRE = @SIFRE", sqlconn)
sqlcmd.Parameters.AddWithValue("@SIFRE", TextBox1.Text)
sqlconn.Open()
Dim result = sqlcmd.ExecuteReader()
While (result.Read())
If result IsNot Nothing Then
Label1.Text = result("NAZIV")
Label2.Text = result("PUN_NAZIV")
Label3.Text = result("ADRESA")
Label4.Text = result("GRAD")
Label5.Text = result("OPSTINA")
Label6.Text = result("PRAVNA_FORMA")
Label7.Text = result("DAT_REG")
Label8.Text = result("TRAJANJE")
Label9.Text = result("MATICNI")
Label10.Text = result("PIB")
Label11.Text = result("SIFRA_DELATNOSTI")
Label12.Text = result("NAZIV_DELATNOSTI")
Label13.Text = result("VELICINA")
Label14.Text = result("TEKUCI")
Label15.Text = result("RZZO") ' PROBLEM DBNull.Value
Label16.Text = result("PIO") ' PROBLEM DBNull.Value There are more labels below but I am stuck here
Else
TextBox1.Focus()
End If
End While
End Using
End Using
TextBox1.Text = ""
End Sub
Также есть пробелы повсюду, только в этом случае они находятся в 15-й и 16-й метке.
Спасибо.
3 ответа:
Просто добавьте эту функцию в свой класс:
Private Shared Function GetTextOrEmpty(reader As IDataReader, fieldName As String) Dim ordinal = reader.GetOrdinal(fieldName) Return If(reader.IsDbNull(ordinal), String.Empty, reader.GetString(ordinal)) End Function
А затем, в вашем
For
цикле:'Other labels (...) Label14.Text = GetTextOrEmpty(result, "TEKUCI") Label15.Text = GetTextOrEmpty(result, "RZZO") 'Other labels (...)
У SqlDataReader есть свой собственный метод для работы со значениями DbNull
Label15.Text = If(result.IsDbNull(result.GetOrdinal("RZZO")), "", result("RZZO"))