WedX - журнал о программировании и компьютерных науках

Соедините ComboBox Visual Basic с таблицами Access

Я работаю над Visual Basic Express 2010 и Microsoft Access. Я сделал базу данных и отношения с Access, подключил их к VB просто отлично. Моя проблема в том, что у меня есть таблица с именем Address_Table, она содержит только одно поле с именем Address_Name. Таблица Address_Table связана с таблицей The_Student с полем Student_Address с параметром «Принудительно ссылочная целостность».

Я не могу загрузить изображения, мне очень жаль, я действительно пытался.

Проблема № 1: в Visual Basic я хочу создать поле со списком, в котором пользователь выбирает один из вариантов, импортированных из Address_Name, а затем после того, как он нажимает кнопку добавления, выбор будет добавлен в базу данных в поле Student_Address. Я имею в виду, что Address_Name будет содержать такие значения, как A, B, C. Я хочу, чтобы эти значения отображались в поле со списком, и после того, как он выберет одно из них, он нажмет «Добавить», и выбор будет вставлен в базу данных.

Проблема № 2: Ах, извините, это также о выпадающем списке. речь идет о двух выпадающих списках, где, когда вы выбираете из первого, например, из таблицы страны, вы выбираете Америку, тогда в другом выпадающем списке появятся только штаты Америки. Или когда вы выберете Англию, появятся только города Англии и так далее.

* В таблице Country есть одно поле с именем: Country_Name. *Таблица Scholarship содержит поля: Scholarship_To, Country_Name, City_Name *Таблица City содержит поля: City_Name, Country

*Таблица Scholarship и Country связаны с таблицей Student_Info, Country связана с полем ABC, а Scholarship с новым полем. *Таблица Country связана с таблицами Scholarship и City со следующими полями: Country_Name в таблице Scholarship и Country в таблице City. *Таблица стипендий связана с таблицей City: City_Name с полями Country. Все, у которых есть «Обеспечить ссылочную целостность».

О Боже, я надеюсь, что кто-то меня понимает, я старался предоставить все, пожалуйста, помогите мне.

Public Class frmStudent
Dim cnn As New OleDb.OleDbConnection
 Private Sub RefreshData()
    If Not cnn.State = ConnectionState.Open Then
        'open connection
        cnn.Open()
    End If

    Dim da As New OleDb.OleDbDataAdapter("SELECT Student_ID as [ID], " & _
                                         "Student_Name as [Name], Student_Gender, Student_Phone, Student_Address " & _
                                         " FROM The_Student ORDER BY Student_ID", cnn)
    Dim dt As New DataTable
    'fill data to datatable
    da.Fill(dt)

    'offer data in data table into datagridview
    Me.dgvData.DataSource = dt

    'close connection
    cnn.Close()
End Sub

 Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
    Dim cmd As New OleDb.OleDbCommand
    If Not cnn.State = ConnectionState.Open Then
        'open connection if it is not yet open
        cnn.Open()
    End If

    cmd.Connection = cnn
    'check whether add new or update
    If Me.txtstdID.Tag & "" = "" Then
        'add new 
        'add data to table
        cmd.CommandText = "INSERT INTO The_Student(Student_ID, Student_Name, Student_Gender, Student_Phone)" & _
                        " VALUES(" & Me.txtstdID.Text & ",'" & Me.txtStdName.Text & "','" & _
                        Me.cboGender.Text & "','" & Me.txtPhone.Text & "')"
        cmd.ExecuteNonQuery()
    Else
        'update data in table
        cmd.CommandText = "UPDATE The_Student " & _
                    " SET Student_ID=" & Me.txtstdID.Text & _
                    ", Student_Name='" & Me.txtStdName.Text & "'" & _
                    ", Student_Gender='" & Me.cboGender.Text & "'" & _
                    ", Student_Phone='" & Me.txtPhone.Text & "'" & _
                    ", Student_Address='" & Me.txtAddress.Text & "'" & _
                    " WHERE Student_ID=" & Me.txtstdID.Tag
        cmd.ExecuteNonQuery()

    End If
    'refresh data in list
    RefreshData()
    'clear form
    Me.btnClear.PerformClick()

    'close connection
    cnn.Close()
End Sub

Private Sub frmStudent_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    cnn = New OleDb.OleDbConnection
    cnn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; Data Source=" & Application.StartupPath & "\data.mdb"
    '
    'get data into list
    Me.RefreshData()
End Sub

Ответы:


1

Здесь есть именно то, что вы ищете. Их обычно называют поисковыми списками. https://msdn.microsoft.com/en-US/vstudio/bb466226.aspx#formsoverdata

Так что, в частности, видео № 5 должно быть тем, что вы ищете. Поскольку вы используете VB + Access, я бы порекомендовал вам отказаться от команд OleDb и использовать строго типизированные наборы данных и адаптеры и т. д., если у вас нет веских причин не делать этого. Даже если вы это сделаете, построение поиска так, как она делает в этих видео, сгенерирует инструкции Insert/Update/Delete для вас, чтобы удовлетворить ограничения (они являются свойствами адаптеров).

24.06.2014
  • Большое спасибо за ссылку, это было очень полезно, но я все еще не мог найти прямого ответа на то, что я ищу. Приведенный выше код с командами OleDb и т. д. взят из учебника. Я все еще очень рано знакомлюсь с Visual Basic, поэтому мне трудно полностью понять ваш комментарий о том, что я должен выбрать или что я должен изменить. Можете ли вы направить меня? Спасибо 01.07.2014
  • Пространство имен OleDb имеет набор общих компонентов доступа к данным. Этот подход использует команды и адаптеры данных для выполнения операций с данными. И наоборот, вы можете инициировать строго типизированные объекты ADO, добавляя набор данных в свой проект (точно так же, как вы добавляете форму). После того как вы настроите этот набор данных с помощью мастера, вы сможете использовать его автоматически сгенерированные адаптеры таблиц и источники привязки для подключения вашего пользовательского интерфейса. 01.07.2014
  • Серия видеороликов, которые формируются над данными, также содержит множество примеров того, как это работает. Стоит изучить оба подхода, но ваш случай звучит как действительно хороший вариант использования этих типизированных наборов данных, поскольку вам нужны расширенные привязки и поиски, а у вас пока нет большого опыта. 01.07.2014
  • Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: wedx@cp9.ru