Нужна помощь по 3 табличным отношениям Ms access и Vb.Net

Я создал 3 таблицы в ms доступе, в которых таблица Person является единственной, которая содержит первичный ключ TABLE PERSON(ID,FNAME,MNAME,LNAME) и я подключаю его к 2 TABLES AMOUNT(ID,amount,Term ), TABLE TIME(ID,start,due),

Табличные отношения

Таблицы времени и таблицы идентификаторов не имеют PK, а форматы идентификаторов - это числа.

Когда я пытаюсь добавить данные в свою базу данных, используя Vb.Net, это показывает эту ошибку You cannot add or change a record because a related record is required in table 'P'.

Вот весь код:

 Public Function insert_person(ByVal fname As String, ByVal mname As String, ByVal lname As String)
        Dim connect As OleDbConnection = con()
        Dim cmd As OleDbCommand = connect.CreateCommand()
        cmd.CommandText = "insert into P(fname,mname,lname)values(fname,mname,lname)"
        cmd.Parameters.Add("@fname", OleDbType.VarChar).Value = fname
        cmd.Parameters.Add("@mname", OleDbType.VarChar).Value = mname
        cmd.Parameters.Add("@lname", OleDbType.VarChar).Value = lname
        cmd.ExecuteNonQuery()
        connect.Close()
        Return 0
    End Function

    Public Function insert_amount(ByVal empid As Integer, ByVal amount As Double, ByVal term As Integer)
        Dim connect As OleDbConnection = con()
        Dim cmd As OleDbCommand = connect.CreateCommand()
        cmd.CommandText = "insert into A(empid,amount,term) values(@empid,@amount,@term)"
        cmd.Parameters.Add("@empid", OleDbType.Integer).Value = empid
        cmd.Parameters.Add("@amount", OleDbType.Double).Value = amount
        cmd.Parameters.Add("@term", OleDbType.Integer).Value = term
        cmd.ExecuteNonQuery()
        connect.Close()
        Return 0
    End Function

Когда я проверяю свою БД, чтобы увидеть, были ли записи сохранены, единственная сохраненная запись TABLE PTABLE amountTABLE time ничего не добавляй

1 ответ

  1. У вас есть синтаксическая ошибка в insert_amount:
cmd.Parameters.Add(New OleDbParameter(CType("[empid]"
  1. time является зарезервированным словом в Access, вы должны назвать эту таблицу по-другому.

  2. Каждая таблица должна иметь первичный ключ. Вы получите все виды проблем без.

  3. Полученное сообщение об ошибке означает, что у вас есть отношения с Referential Integrity между P и другие таблицы. Вам нужно пройти и вставить empid что существует в P,

Другие вопросы по тегам