Доброго времени суток Создал форму с быстрым поиском товара. База данных подключена через источник данных(Access) все работает. Как добавить новый товар в БД Access и обновить данные в листбоксе при помощи формы?
Доброго времени суток Создал форму с быстрым поиском товара. База данных подключена через источник данных(Access) все работает. Как добавить новый товар в БД Access и обновить данные в листбоксе при помощи формы?parovoznik
Здравствуйте.Я бы все сделал не так,но приведу только код. [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
Добрый день. Спасибо за ответ . Выдает ошибку на Form2: Таблица_товараTableAdapter1 Надо объявить ее: Public Таблица_товараTableAdapter1 As New ... а дальше что дописать ?
Добрый день. Спасибо за ответ . Выдает ошибку на Form2: Таблица_товараTableAdapter1 Надо объявить ее: Public Таблица_товараTableAdapter1 As New ... а дальше что дописать ?parovoznik
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
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
Сообщение отредактировал doober - Вторник, 08.03.2016, 12:19
Данные добавляются в базу данных. А для обновления данных в листбоксе нужно выходить с проекта ? А одновременное добавление возможно и в бд и ListBox?
Данные добавляются в базу данных. А для обновления данных в листбоксе нужно выходить с проекта ? А одновременное добавление возможно и в бд и ListBox?parovoznik
Dim f As New Form2 If f.ShowDialog = Windows.Forms.DialogResult.OK Then Me.База_данных9DataSet.таблица_товара.Clear() Me.Таблица_товараTableAdapter.Fill(Me.База_данных9DataSet.таблица_товара)
End If
[/vba] Во вложении мой вариант.
Здесь идет обновление в форме 1 [vba]
Код
Dim f As New Form2 If f.ShowDialog = Windows.Forms.DialogResult.OK Then Me.База_данных9DataSet.таблица_товара.Clear() Me.Таблица_товараTableAdapter.Fill(Me.База_данных9DataSet.таблица_товара)
Посмотрел Ваш вариант , у меня возник вопрос ,а где посмотреть бд access? Data Source=" & Application.StartupPath & "\База данных9.accdb" ????
Посмотрел Ваш вариант , у меня возник вопрос ,а где посмотреть бд access? Data Source=" & Application.StartupPath & "\База данных9.accdb" ????parovoznik
Doober, спасибо я разобрался. А можно добавить фокус на TextBox( если вводить слово его в базе нет и в TextBox2, где вводится новый товар отображались начальные буквы). Спасибо Вам.
Doober, спасибо я разобрался. А можно добавить фокус на TextBox( если вводить слово его в базе нет и в TextBox2, где вводится новый товар отображались начальные буквы). Спасибо Вам.parovoznik
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