Как вставить реляционные данные в базу данных Access с помощью ASP.NET

#asp.net #vb.net #visual-studio #ms-access

#asp.net #vb.net #visual-studio #ms-access

Вопрос:

У меня есть две реляционные таблицы: Profiles таблица, которая содержит 3 вида пользовательских ролей (менеджер, разработчик, обычный пользователь) и Users таблица, которая содержит информацию о пользователе и его идентификаторе ролей (поле Profile_ID) в Access 2010 базе данных.

Я создал веб-форму, в ASP.NET которой следует просто регистрировать пользователей, запрашивая их имена, выбирая их роли в выпадающем списке и вставляя все это в базу данных Access. Как в следующем коде:

 Dim cs As String = ConfigurationManager.ConnectionStrings("Access 2010").ConnectionString
    Dim cn As New OleDbConnection(cs)
    Dim cmd As New OleDbCommand
    With cmd
        .CommandText = "INSERT INTO Users (nome, Profile_ID) VALUES ('" amp; Me.txtNome.Text amp; "', " amp; Me.ddRoles.SelectedIndex amp; ")"
        .Connection = cn
        .Connection.Open()
        .ExecuteNonQuery()
        .Connection.Close()
        .Dispose()
    End With
    cn.Dispose()
  

Бывает, что я не могу вставить в базу данных, потому что они связаны друг с другом, это выдает ошибку. На самом деле, мне просто нужно вставить данные в Users таблицу, потому что роли фиксированы. Как я могу это сделать?

Редактировать

Ошибка, которую я получаю, You can not add or change records, it is necessary that they have a related record in table 'Profiles'.

Комментарии:

1. Вы не можете добавлять или изменять записи, необходимо, чтобы они имели связанную запись в таблице «Профили».

Ответ №1:

Измените текст вашей команды, чтобы использовать SelectedValue выпадающего списка вместо выбранного индекса.

 .CommandText = "INSERT INTO Users (nome, Profile_ID) VALUES ('" amp; Me.txtNome.Text amp; "', " amp; Me.ddRoles.SelectedValue amp; ")"
  

Если это не сработает, вам нужно убедиться, что выпадающий список правильно привязан к имени / идентификатору роли.

Комментарии:

1. Теперь это сработало .. но он создает только записи с одним профилем (общий профиль пользователя, который имеет идентификационный номер 5, если быть точным). Хотя HTML кажется правильным: обычному пользователю присваивается значение 5, разработчику присваивается значение 6, а менеджеру присваивается значение 7

2. вот мой код, который заполняет выпадающий список и пытается вставить в базу данных: pastebin.com/a2XbqaAY

3. вы каждый раз привязываете выпадающий список при загрузке страницы? Если это так, вы потеряете выбранное значение каждый раз, когда будете повторно привязывать его к данным.

Ответ №2:

вставить в tablename (papercode, paper type, semster, dato) значения (‘» amp; textbox1.text amp; «‘, ‘» amp; dropdownlist1.text amp;»‘)