Нужна помощь по 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 P
TABLE amount
TABLE time
ничего не добавляй
1 ответ
- У вас есть синтаксическая ошибка в
insert_amount
:
cmd.Parameters.Add(New OleDbParameter(CType("[empid]"
time
является зарезервированным словом в Access, вы должны назвать эту таблицу по-другому.Каждая таблица должна иметь первичный ключ. Вы получите все виды проблем без.
Полученное сообщение об ошибке означает, что у вас есть отношения с Referential Integrity между
P
и другие таблицы. Вам нужно пройти и вставитьempid
что существует вP
,