Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Добавить новый товар в БД - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вопросы по VB, VBS, VB.net » Добавить новый товар в БД
Добавить новый товар в БД
parovoznik Дата: Воскресенье, 06.03.2016, 20:51 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток
Создал форму с быстрым поиском товара. База данных подключена через источник данных(Access) все работает.
Как добавить новый товар в БД Access и обновить данные в листбоксе при помощи формы?
К сообщению приложен файл: Add.7z (85.6 Kb)
 
Ответить
СообщениеДоброго времени суток
Создал форму с быстрым поиском товара. База данных подключена через источник данных(Access) все работает.
Как добавить новый товар в БД Access и обновить данные в листбоксе при помощи формы?

Автор - parovoznik
Дата добавления - 06.03.2016 в 20:51
doober Дата: Вторник, 08.03.2016, 02:59 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.Я бы все сделал не так,но приведу только код.
[spoiler]Форма 2, добавте компонент Таблица_товараTableAdapter1[vba]
Код
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '       Проверка  на заполнение полей
        If TextBox1.Text = "" Then MsgBox("Все  обязательные поля должны быть заполнены", 48, "Сообщение") : Exit Sub

        Таблица_товараTableAdapter1.Insert(TextBox1.Text)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.DialogResult = Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub
End Class
[/vba]

Форма 1[vba]
Код
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim searchString As String = TextBox1.Text 'получить строку для поиска
        If Not (searchString = String.Empty) Then
            Dim i As Integer = ListBox1.FindString(searchString)
            If Not (i = -1) Then
                ListBox1.SelectedIndex = i
            Else
                If MsgBox("Такого товара нет в списке!" & vbLf & "Добавить?", vbInformation + vbYesNo + vbDefaultButton2, "Сообщение") = vbYes Then
                    Dim f As New Form2
                    If f.ShowDialog = Windows.Forms.DialogResult.OK Then
                        Me.База_данных9DataSet.таблица_товара.Clear()
                        Me.Таблица_товараTableAdapter.Fill(Me.База_данных9DataSet.таблица_товара)

                    End If

                    'MessageBox.Show("Строка """ & searchString & """ не найдена", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            End If
        End If
    End Sub
[/vba]


 
Ответить
СообщениеЗдравствуйте.Я бы все сделал не так,но приведу только код.
[spoiler]Форма 2, добавте компонент Таблица_товараTableAdapter1[vba]
Код
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '       Проверка  на заполнение полей
        If TextBox1.Text = "" Then MsgBox("Все  обязательные поля должны быть заполнены", 48, "Сообщение") : Exit Sub

        Таблица_товараTableAdapter1.Insert(TextBox1.Text)

    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.DialogResult = Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub
End Class
[/vba]

Форма 1[vba]
Код
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        Dim searchString As String = TextBox1.Text 'получить строку для поиска
        If Not (searchString = String.Empty) Then
            Dim i As Integer = ListBox1.FindString(searchString)
            If Not (i = -1) Then
                ListBox1.SelectedIndex = i
            Else
                If MsgBox("Такого товара нет в списке!" & vbLf & "Добавить?", vbInformation + vbYesNo + vbDefaultButton2, "Сообщение") = vbYes Then
                    Dim f As New Form2
                    If f.ShowDialog = Windows.Forms.DialogResult.OK Then
                        Me.База_данных9DataSet.таблица_товара.Clear()
                        Me.Таблица_товараTableAdapter.Fill(Me.База_данных9DataSet.таблица_товара)

                    End If

                    'MessageBox.Show("Строка """ & searchString & """ не найдена", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            End If
        End If
    End Sub
[/vba]

Автор - doober
Дата добавления - 08.03.2016 в 02:59
parovoznik Дата: Вторник, 08.03.2016, 08:00 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Добрый день. Спасибо за ответ . Выдает ошибку на Form2: Таблица_товараTableAdapter1
Надо объявить ее: Public Таблица_товараTableAdapter1 As New ... а дальше что дописать ?
 
Ответить
СообщениеДобрый день. Спасибо за ответ . Выдает ошибку на Form2: Таблица_товараTableAdapter1
Надо объявить ее: Public Таблица_товараTableAdapter1 As New ... а дальше что дописать ?

Автор - parovoznik
Дата добавления - 08.03.2016 в 08:00
doober Дата: Вторник, 08.03.2016, 12:19 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
а дальше что дописать ?

Это,предварительно удалив старое[vba]
Код
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '       Проверка  на заполнение полей
        If TextBox1.Text = "" Then MsgBox("Все  обязательные поля должны быть заполнены", 48, "Сообщение") : Exit Sub
        Using con As New System.Data.OleDb.OleDbConnection
            con.ConnectionString = My.Settings.База_данных9ConnectionString
            con.Open()
            Using cmd As System.Data.OleDb.OleDbCommand = con.CreateCommand
                cmd.CommandText = "INSERT INTO `таблица товара` (`Наименование товара`) VALUES (@t)"
                cmd.Parameters.AddWithValue("@t", TextBox1.Text)
                cmd.ExecuteNonQuery()
            End Using
        End Using
    End Sub
[/vba]
Поищите примеры в папке Samples в студии.




Сообщение отредактировал doober - Вторник, 08.03.2016, 12:19
 
Ответить
Сообщение
а дальше что дописать ?

Это,предварительно удалив старое[vba]
Код
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        '       Проверка  на заполнение полей
        If TextBox1.Text = "" Then MsgBox("Все  обязательные поля должны быть заполнены", 48, "Сообщение") : Exit Sub
        Using con As New System.Data.OleDb.OleDbConnection
            con.ConnectionString = My.Settings.База_данных9ConnectionString
            con.Open()
            Using cmd As System.Data.OleDb.OleDbCommand = con.CreateCommand
                cmd.CommandText = "INSERT INTO `таблица товара` (`Наименование товара`) VALUES (@t)"
                cmd.Parameters.AddWithValue("@t", TextBox1.Text)
                cmd.ExecuteNonQuery()
            End Using
        End Using
    End Sub
[/vba]
Поищите примеры в папке Samples в студии.

Автор - doober
Дата добавления - 08.03.2016 в 12:19
parovoznik Дата: Вторник, 08.03.2016, 14:34 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Данные добавляются в базу данных.
А для обновления данных в листбоксе нужно выходить с проекта ?
А одновременное добавление возможно и в бд и ListBox?
 
Ответить
СообщениеДанные добавляются в базу данных.
А для обновления данных в листбоксе нужно выходить с проекта ?
А одновременное добавление возможно и в бд и ListBox?

Автор - parovoznik
Дата добавления - 08.03.2016 в 14:34
doober Дата: Вторник, 08.03.2016, 17:40 | Сообщение № 6
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Здесь идет обновление в форме 1
[vba]
Код
                  Dim f As New Form2
                    If f.ShowDialog = Windows.Forms.DialogResult.OK Then
                        Me.База_данных9DataSet.таблица_товара.Clear()
                        Me.Таблица_товараTableAdapter.Fill(Me.База_данных9DataSet.таблица_товара)

                    End If
[/vba]
Во вложении мой вариант.
К сообщению приложен файл: Search.rar (99.0 Kb)




Сообщение отредактировал doober - Среда, 09.03.2016, 03:08
 
Ответить
СообщениеЗдесь идет обновление в форме 1
[vba]
Код
                  Dim f As New Form2
                    If f.ShowDialog = Windows.Forms.DialogResult.OK Then
                        Me.База_данных9DataSet.таблица_товара.Clear()
                        Me.Таблица_товараTableAdapter.Fill(Me.База_данных9DataSet.таблица_товара)

                    End If
[/vba]
Во вложении мой вариант.

Автор - doober
Дата добавления - 08.03.2016 в 17:40
parovoznik Дата: Среда, 09.03.2016, 19:17 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Посмотрел Ваш вариант , у меня возник вопрос ,а где посмотреть бд access?
Data Source=" & Application.StartupPath & "\База данных9.accdb" ????
 
Ответить
СообщениеПосмотрел Ваш вариант , у меня возник вопрос ,а где посмотреть бд access?
Data Source=" & Application.StartupPath & "\База данных9.accdb" ????

Автор - parovoznik
Дата добавления - 09.03.2016 в 19:17
doober Дата: Среда, 09.03.2016, 22:41 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Application.StartupPath & "\База данных9.accdb"
Application.StartupPath="..\Debug"
В папке ,где будет ехе программы


 
Ответить
СообщениеApplication.StartupPath & "\База данных9.accdb"
Application.StartupPath="..\Debug"
В папке ,где будет ехе программы

Автор - doober
Дата добавления - 09.03.2016 в 22:41
parovoznik Дата: Среда, 09.03.2016, 23:24 | Сообщение № 9
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
Doober, спасибо я разобрался.
А можно добавить фокус на TextBox( если вводить слово его в базе нет и в TextBox2, где вводится новый товар отображались начальные буквы).
Спасибо Вам.
 
Ответить
СообщениеDoober, спасибо я разобрался.
А можно добавить фокус на TextBox( если вводить слово его в базе нет и в TextBox2, где вводится новый товар отображались начальные буквы).
Спасибо Вам.

Автор - parovoznik
Дата добавления - 09.03.2016 в 23:24
doober Дата: Четверг, 10.03.2016, 00:38 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Рановато вы за базы взялись.
[vba]
Код
    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        Dim sSt As String = TextBox1.Text 'получить строку для поиска
        Ds1.таблица_товара.Clear()
        If sSt.Length < 3 Then
            Return
        End If
        Using con As New System.Data.OleDb.OleDbConnection
            con.ConnectionString = conctring
            con.Open()
            Using cmd As System.Data.OleDb.OleDbCommand = con.CreateCommand
                cmd.CommandText = "SELECT *FROM `таблица товара` WHERE InStr(1,`Наименование товара`,@t)>0;"
                cmd.Parameters.AddWithValue("@t", TextBox1.Text)
                Ds1.таблица_товара.Load(cmd.ExecuteReader())
    If Ds1.таблица_товара.rows.count=0 then TextBox2.Text=TextBox1.Text   
            End Using

        End Using

    End Sub
[/vba]


 
Ответить
СообщениеРановато вы за базы взялись.
[vba]
Код
    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        Dim sSt As String = TextBox1.Text 'получить строку для поиска
        Ds1.таблица_товара.Clear()
        If sSt.Length < 3 Then
            Return
        End If
        Using con As New System.Data.OleDb.OleDbConnection
            con.ConnectionString = conctring
            con.Open()
            Using cmd As System.Data.OleDb.OleDbCommand = con.CreateCommand
                cmd.CommandText = "SELECT *FROM `таблица товара` WHERE InStr(1,`Наименование товара`,@t)>0;"
                cmd.Parameters.AddWithValue("@t", TextBox1.Text)
                Ds1.таблица_товара.Load(cmd.ExecuteReader())
    If Ds1.таблица_товара.rows.count=0 then TextBox2.Text=TextBox1.Text   
            End Using

        End Using

    End Sub
[/vba]

Автор - doober
Дата добавления - 10.03.2016 в 00:38
parovoznik Дата: Четверг, 10.03.2016, 23:02 | Сообщение № 11
Группа: Проверенные
Ранг: Обитатель
Сообщений: 442
Репутация: 26 ±
Замечаний: 0% ±

Excel 2013
doober, Спасибо за четкий и оперативный ответ hands
 
Ответить
Сообщениеdoober, Спасибо за четкий и оперативный ответ hands

Автор - parovoznik
Дата добавления - 10.03.2016 в 23:02
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вопросы по VB, VBS, VB.net » Добавить новый товар в БД
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!