Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/35: Рейтинг темы: голосов - 35, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182

Записать данные из textbox в базу данных

07.11.2019, 06:32. Показов 8531. Ответов 121
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пытаюсь записать данные из textbox, в базу данных :
VB.NET
1
2
c.CommandText = " insert into фио (фамилия,имя,отчество) values(Form2.TextBox1,Form2.TextBox2,Form2.TextBox3) "
        c.ExecuteNonQuery()
и выдает ошибку см.скрин.
в чем ошибка?
Миниатюры
Записать данные из textbox в базу данных  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.11.2019, 06:32
Ответы с готовыми решениями:

Записать данные из БД в TextBox
Подскажите как с базы данных вставить информацию в textbox. Допустим у меня есть столбец имя, номер, телефон. И чтоб каждый столбец был в...

Запись данных из TextBox в базу данных
Делаю регистрацию в базе данных, нужно что бы данные введенные пользователем в TextBox сохранялись в базу данных.(База данных Sql Server...

Как добавить данные из textbox-ов в базу данных?
Подскажите где ошибка пытаюсь добавить из textbox-ов данные в базу данных string connetionString = null; SqlCommand cmd; ...

121
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
14.11.2019, 06:24  [ТС]
Студворк — интернет-сервис помощи студентам
еще обнаружилась такая проблема

VB.NET
1
2
3
4
5
6
7
8
9
10
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
 
        Dim k As Integer
        Dim c As New OleDbCommand
        c.Connection = conn
        k = Grid1.CurrentRow.Cells("Код").Value
        c.CommandText = " delete from фио where Код = " & k
        c.ExecuteNonQuery()
        refreshgrid()
    End Sub
по кнопке 3 удаляется выбранная строка из базы данных по полю Код
но если база пустая и нажать кнопку 3, то возникает ошибка см.скрин.
Миниатюры
Записать данные из textbox в базу данных  
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
14.11.2019, 08:55
VB.NET
1
2
3
4
5
Try
 
        Catch ex As Exception
 
        End Try
Либо проверяй до того как считываешь значение.
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
14.11.2019, 09:29  [ТС]
спасибо.

а есть возможность вводить дату в texbox? , а то в datetimepicker не удобно

дата в формате dd.MM.yyyy

Добавлено через 2 минуты
чтобы дни вводились не больше 31, а месяцы не больше 12
и можно было вводить только числа
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
14.11.2019, 09:47
Да можно, только нужно написать свою проверку для каждого символа, ну или проще сделать
VB.NET
1
2
3
4
5
6
      Try
            Dim d As Date = CDate(TextBox1.Text)
        Catch ex As Exception
            MsgBox("Введите дату")
            TextBox1.Text = ""
        End Try
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
14.11.2019, 09:56  [ТС]
нужно чтобы прям на форме вводилась дата а не после обработки
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
14.11.2019, 10:02
Используй событие на потерю фокуса с текст бокса
VB.NET
1
2
3
4
5
6
7
8
Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
        Try
            Dim d As Date = CDate(TextBox1.Text)
        Catch ex As Exception
            MsgBox("Введите дату")
            TextBox1.Text = ""
        End Try
    End Sub
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
14.11.2019, 10:11  [ТС]
такой способ тоже не подходит пока разберутся в каком формате дату вводить весь текстбокс истыкают
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
14.11.2019, 10:33
VB.NET
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
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = ChrW(Keys.Back) Or e.KeyChar = ChrW(Keys.Left) Or e.KeyChar = ChrW(Keys.Right) Then
            e.KeyChar = e.KeyChar
            Return
        End If
        If Not "1234567890.".Contains(e.KeyChar) Then
            e.KeyChar = Nothing
            Return
        End If
 
        Select Case Len(TextBox1.Text) + 1
            Case 1
                If Not "0123".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
 
 
                End If
            Case 2
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 3
                If e.KeyChar <> "." Then
                    e.KeyChar = Nothing
                End If
        End Select
 
    End Sub
Можно так, но мне думается есть вариант получше. Например использовать датапикер.
0
2684 / 1865 / 177
Регистрация: 25.07.2015
Сообщений: 3,023
14.11.2019, 10:55
Цитата Сообщение от sergg45 Посмотреть сообщение
такой способ тоже не подходит пока разберутся в каком формате дату вводить весь текстбокс истыкают
Используйте MaskedTextBox вместо обычного TextBox , чтобы задать формат вводимых данных.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
14.11.2019, 11:02
Цитата Сообщение от Kulma Посмотреть сообщение
Используйте MaskedTextBox вместо обычного TextBox , чтобы задать формат вводимых данных.
Там можно ввести 99.99.9999, а sergg45, почему то этого не хочет.
VB.NET
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
   
  Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = ChrW(Keys.Back) Or e.KeyChar = ChrW(Keys.Left) Or e.KeyChar = ChrW(Keys.Right) Then
            e.KeyChar = e.KeyChar
            Return
        End If
        If Not "1234567890.".Contains(e.KeyChar) Then
            e.KeyChar = Nothing
            Return
        End If
        Select Case Len(TextBox1.Text) + 1
            Case 1
                If Not "0123".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 2
                If "1234567890".Contains(e.KeyChar) And "012".Contains(TextBox1.Text(0)) Then
                    e.KeyChar = e.KeyChar
                ElseIf "10".Contains(e.KeyChar) And TextBox1.Text(0) = "3" Then
                    e.KeyChar = e.KeyChar
                Else
                    e.KeyChar = Nothing
                End If
            Case 3
                If e.KeyChar <> "." Then
                    e.KeyChar = Nothing
                End If
            Case 4
                If Not "01".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 5
                If "012".Contains(e.KeyChar) And TextBox1.Text(3) = "1" Then
                    e.KeyChar = e.KeyChar
 
                ElseIf "1234567890".Contains(e.KeyChar) And TextBox1.Text(3) = "0" Then
                    e.KeyChar = e.KeyChar
                Else
                    e.KeyChar = Nothing
                End If
            Case 6
                If e.KeyChar <> "." Then
                    e.KeyChar = Nothing
                End If
            Case 7
                If Not "012".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 8
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 9
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 10
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case Else
                e.KeyChar = Nothing
        End Select
 
    End Sub
 
    Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
        If Len(TextBox1.Text) = 8 Then
            Dim arr() As String = TextBox1.Text.Split(".")
            arr(2) = "20" + arr(2)
            TextBox1.Text = [String].Join(".", arr)
        End If
    End Sub
вот так вроде работает.
0
14.11.2019, 12:26

Не по теме:

Вольному воля конечно , но для меня всегда было загадкой - зачем писать листинги кода
типа вышеприведённого, когда всё уже давно придумано за нас и решается одной -двумя строками.
В частности ,в MaskedTextBox поставленная задача решается одной строкой с возвращаемым
типом DateTime . Нужно в String , добавляется ToString в той же строке

VB.NET
1
MaskedTextBox.Text.ToString
Для ленивых это вообще делается в два клика в конструкторе.
Может лучше сосредоточиться на основной задаче , не распыляясь и не теряя время на мелкие ,
уже заведомо решённые вопросы ?

0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
14.11.2019, 14:43
для меня всегда было загадкой - зачем писать листинги кода
типа вышеприведённого, когда всё уже давно придумано за нас
Но это можно оформить в свой класс и использовать постоянно в разных проектах. А макседтекстбоксе я не видел контроля корректности даты, да и времени затрачено минут 15 с перекуром. Если бы я делал в своем проекте я бы поискал готовый вариант, он точно должен быть.
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
14.11.2019, 15:37  [ТС]
VB.NET
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
        If e.KeyChar = ChrW(Keys.Back) Or e.KeyChar = ChrW(Keys.Left) Or e.KeyChar = ChrW(Keys.Right) Then
            e.KeyChar = e.KeyChar
            Return
        End If
        If Not "1234567890.".Contains(e.KeyChar) Then
            e.KeyChar = Nothing
            Return
        End If
        Select Case Len(TextBox1.Text) + 1
            Case 1
                If Not "0123".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 2
                If "1234567890".Contains(e.KeyChar) And "012".Contains(TextBox1.Text(0)) Then
                    e.KeyChar = e.KeyChar
                ElseIf "10".Contains(e.KeyChar) And TextBox1.Text(0) = "3" Then
                    e.KeyChar = e.KeyChar
                Else
                    e.KeyChar = Nothing
                End If
            Case 3
                If e.KeyChar <> "." Then
                    e.KeyChar = Nothing
                End If
            Case 4
                If Not "01".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 5
                If "012".Contains(e.KeyChar) And TextBox1.Text(3) = "1" Then
                    e.KeyChar = e.KeyChar
 
                ElseIf "1234567890".Contains(e.KeyChar) And TextBox1.Text(3) = "0" Then
                    e.KeyChar = e.KeyChar
                Else
                    e.KeyChar = Nothing
                End If
            Case 6
                If e.KeyChar <> "." Then
                    e.KeyChar = Nothing
                End If
            Case 7
                If Not "012".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 8
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 9
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case 10
                If Not "1234567890".Contains(e.KeyChar) Then
                    e.KeyChar = Nothing
                End If
            Case Else
                e.KeyChar = Nothing
        End Select
 
    End Sub
 
    Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
        If Len(TextBox1.Text) = 8 Then
            Dim arr() As String = TextBox1.Text.Split(".")
            arr(2) = "20" + arr(2)
            TextBox1.Text = [String].Join(".", arr)
        End If
    End Sub
так работает, но 3000 год уже не ставится

Добавлено через 3 минуты
я с маскедбоксом пробовал , но там тоже не удобно
если на форме после ввода текстбокса нажимаешь на таб , то перепрыгивает на следующий текстбокс , а маскед бокс пропускает
0
1550 / 1527 / 325
Регистрация: 03.10.2012
Сообщений: 1,558
14.11.2019, 16:37
Цитата Сообщение от Бормалей Посмотреть сообщение
вот так вроде работает.
Бормалей, это не работает, вернее работает некорректно. Дело в том , что в разных месяцах разное количество дней. Т.е. если ввести в ваш текстбокс значение, например, 31.11.2019 (или в не високосный год 29 февраля) и перевести его в тип DateTime, то будет ошибка, потому что такой даты не существует.
Цитата Сообщение от Kulma Посмотреть сообщение
,в MaskedTextBox поставленная задача решается одной строкой с возвращаемым
типом DateTime
Kulma, согласен с вами, в особенности, если использовать MaskedTextBox совместно с компонентом ErrorProvider (компромиссный вариант). Примерно так. (Свойство ValidatingType установить как короткая дата).
VB.NET
1
2
3
4
5
6
7
Private Sub MaskedTextBox1_TypeValidationCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs) Handles MaskedTextBox1.TypeValidationCompleted
        If Not e.IsValidInput Then
            ErrorProvider1.SetError(sender, e.Message)
        Else
            ErrorProvider1.SetError(sender, "")
        End If
    End Sub
Если ну очень хочется, чтобы ошибка определялась на этапе ввода каждого символа, можно попробовать помудрить с объектом MaskedTextProvider и написать свой класс, унаследованный от MaskedTextBox

Добавлено через 1 минуту
Цитата Сообщение от sergg45 Посмотреть сообщение
то перепрыгивает на следующий текстбокс , а маскед бокс пропускает
sergg45, свойство TabIndex
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
14.11.2019, 17:02  [ТС]
а зачем переводить в тип datetime можно дату в формате текста записывать
0
1550 / 1527 / 325
Регистрация: 03.10.2012
Сообщений: 1,558
14.11.2019, 17:44
Цитата Сообщение от sergg45 Посмотреть сообщение
можно дату в формате текста записывать
Можно, но какой смысл в некорректной дате? Ведь вы не сможете её использовать в дальнейшем.
1
2684 / 1865 / 177
Регистрация: 25.07.2015
Сообщений: 3,023
14.11.2019, 22:43
Цитата Сообщение от sergg45 Посмотреть сообщение
а зачем переводить в тип datetime можно дату в формате текста записывать
Ну , например, вам потребуется выбрать данные в диапазоне дат или вычислить разницу между датами.
Если даты будут в строковом формате ,опять куча лишних строк кода с конвертацией и прочими костылями.
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
15.11.2019, 02:02
Цитата Сообщение от MrCrown Посмотреть сообщение
Бормалей, это не работает, вернее работает некорректно. Дело в том , что в разных месяцах разное количество дней. Т.е. если ввести в ваш текстбокс значение, например, 31.11.2019 (или в не високосный год 29 февраля) и перевести его в тип DateTime, то будет ошибка, потому что такой даты не существует.
Скажем так, у меня не было задачи сделать это, а просто показать человеку, как это может сделать он сам. И я сразу написал что лучше использовать другие элементы, датапикер или маскедбокс.
Цитата Сообщение от sergg45 Посмотреть сообщение
так работает, но 3000 год уже не ставится
посмотри в коде и доделай как тебе надо
Цитата Сообщение от sergg45 Посмотреть сообщение
а зачем переводить в тип datetime можно дату в формате текста записывать
Данные лучше хранить в том типе к которому они принадлежат.
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
15.11.2019, 08:19  [ТС]
а как задать условие - если text.box1.text содержит хотя бы один пробел то - ?
0
104 / 55 / 7
Регистрация: 02.07.2013
Сообщений: 314
15.11.2019, 08:41
Цитата Сообщение от sergg45 Посмотреть сообщение
а как задать условие - если text.box1.text содержит хотя бы один пробел то - ?
то что? и на каком этапе проверка должна быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.11.2019, 08:41

Как в базу данных MS ACCESS занести данные из TextBox'ov
Делаю проектную работу, что то типо Messenger'a.Мне необходимо чтобы при регистрации данные введённые в TextBox'э заносились в БД MS...

Python3 записать данные базу данных
данные с базы я получать умею. Теперь нужно научиться сохранять. Структура таблицы и &quot;как это сделатЬ&quot; описано в справке ...

Как записать данные в базу данных?
Доброе время суток, а подскажите пожалуйста, как записать в таблицу список:( 1 строка 2 строка 3 строка) данных?

Можно ли записать данные из сервера в базу данных 1С?
Доброго времени суток. Встал вопрос на счет добавления данных из сервера в бд 1С. В 1С пока что не разбираюсь, на данный момент нужно чтобы...

Как через TextBox добавить данные в базу данных с помощью LINQ to SQL?
Доброго времени суток! а можно с помощью Linq to Sql Добавлять данные в базу данных? и каким образом можно сделать объясните на пальцах кто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru