Member 14127874 Ответов: 1

Как сохранить флажок в SQL server?


Вывод этого кода выглядит следующим образом

10 20 30. Это неправильно!!!!

Я хочу выйти вот так

10
20
30

Вот мой код!

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

Попробуй
Dim con As New SqlClient.SqlConnection("источник данных=DESKTOP-9NE9FIF\SQLEXPRESS;начальный каталог=Sample1;Интегрированная безопасность=True")
Dim cmd как новая команда SqlCommand()


УМК.Подключение = кон

против.Открыть()

Dim str, str1 как строка
ул = ""
str1 выглядит следующим образом = ""

Если CheckBox1.Checked = True, То
str &= Label1.Текст + vbCrLf
str &= " "

Конец, Если

Если CheckBox2.Checked = True, То
str &= Label2.Text + vbCrLf
str &= " "


Конец, Если
Если Отображения Checkbox3.Проверено = Истина Тогда
str &= Label3.Текст + vbCrLf
str &= " "

Конец, Если
Если CheckBox4.Checked = True, То
str &= Label4.Текст + vbCrLf
str &= " "


Конец, Если

Если str <> ничего тогда
MsgBox("запись успешно сохранена!", MsgBoxStyle.Информация, "Успех")
Конец, Если
Dim chcboxes() As CheckBox = {CheckBox1, CheckBox2, CheckBox3, CheckBox4}
Для i как целое число = 0 для chcboxes.Длина - 1
If (chcboxes(i).Состояния Checkstate = Состояния Checkstate.Проверен) Затем
УМК.CommandText = "вставить в array_tbl(array_id) значения ( @arrayid)"
cmd.параметры.AddWithValue("@arrayid", str)
УМК.Метод executenonquery()

Конец, Если

Следующий

Поймать ex как исключение
'(напр.сообщение)
Конец Попытки

ErrorMadness

Какие типы данных вы используете для сохранения данных?

Member 14127874

Тип данных, который я использовал, - varchar, но я изменю его на integer, потому что на флажках есть соответствующее число. Например, checkbox1 =21 и так далее.

ErrorMadness

Если вы хотите сохранить свои данные вот так :
10
20
30
Затем попробуйте использовать текст в качестве типа данных.
Потому что когда вы используете Integer или любой числовой тип данных вывод будет выглядеть следующим образом:
10 20 30 или 102030

1 Ответов

Рейтинг:
6

ErrorMadness

Попробуй вот это:

Я использую "текст" в качестве типа данных в своей базе данных, чтобы гарантировать, что числа будут сохранены с новыми строками, как то, что вы хотите сделать.
10
20
30
...
Надеюсь, это поможет.

Dim str As String
        str = _
        IIf(CheckBox1.Checked = True, Label1.Text & " ", "") & _
        IIf(CheckBox2.Checked = True, Label2.Text & " ", "") & _
        IIf(CheckBox3.Checked = True, Label3.Text & " ", "") & _
        IIf(CheckBox4.Checked = True, Label4.Text, "")
        str = Replace(str, " ", vbCrLf)

        con.Open()
        cmd.Connection = con
        cmd.CommandText = "INSERT INTO YourTableName(YourColumnName) Values(RTRIM(@str))"
        cmd.Parameters.AddWithValue("@str", str)
        cmd.ExecuteNonQuery()
        con.Close()


Я использую оператор IIF, чтобы определить, находятся ли флажки в состоянии CHECKED. Я использовал RTRIM в запросе, чтобы удалить ненужные пробелы. И я не использовал никакого цикла для сохранения строки в базе данных, потому что я уже объединил выбранные строки в коде IIF, прежде чем продолжить сохранение данных.


Member 14127874

Мне нужно решение для цикла и массива. Потому что по исходным данным у меня есть одиннадцать флажков.

ErrorMadness

Попробуйте использовать этот код для циклирования :
https://www.codeproject.com/Questions/1275368/How-to-save-the-checkboxes-that-is-beeing-checked

В решении 1