2012-04-27 103 views
1

我有这样的代码应该更新我的访问数据库,但我不断收到一个错误说:的Visual Basic 2010错误访问数据库更新查询

这是不可能如此更改或删除,因为该表的regists 'MembrosCompasso'有相关记录。

这是我的代码:

Dim query1 As String = "UPDATE MembrosCompasso SET [email protected]_bi WHERE MembrosCompasso.BI=Membros.BI" ' [email protected], Membros.Mae=mae WHERE [email protected]" 
Dim query As String = "UPDATE Membros SET [email protected]_bi, [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected], [email protected] WHERE [email protected]" 

con.Close() 
con.Open() 
Dim command As New OleDbCommand(query, con) 
Dim command1 As New OleDbCommand(query1, con) 
' Indicação dos parâmetros que serão actualizados 

command1.Parameters.Add("@compass_bi", OleDbType.VarChar).Value = BI.Text 
command.Parameters.Add("@num_bi", OleDbType.VarChar).Value = BI.Text 
command.Parameters.Add("@nome", OleDbType.VarChar).Value = Nome.Text 
command.Parameters.Add("@hablitacoes", OleDbType.VarChar).Value = hablitacoes.Text 
command.Parameters.Add("@contribuinte", OleDbType.VarChar).Value = ncront.Text 
command.Parameters.Add("@telemov", OleDbType.VarChar).Value = telmov.Text 
command.Parameters.Add("@natnasc", OleDbType.VarChar).Value = datnasc.Text 
command.Parameters.Add("@localnasc", OleDbType.VarChar).Value = NascLocal.Text 
command.Parameters.Add("@databapt", OleDbType.VarChar).Value = DataBapt.Text 
command.Parameters.Add("@localbapt", OleDbType.VarChar).Value = LocalBapt.Text 
command.Parameters.Add("@sexo", OleDbType.VarChar).Value = sexo.Text 
command.Parameters.Add("@natu", OleDbType.VarChar).Value = natu.Text 
command.Parameters.Add("@prof", OleDbType.VarChar).Value = profi.Text 
command.Parameters.Add("@estadciv", OleDbType.VarChar).Value = estciv.Text 
command.Parameters.Add("@datacas", OleDbType.VarChar).Value = datcas.Text 
command.Parameters.Add("@localcas", OleDbType.VarChar).Value = localcas.Text 
command.Parameters.Add("@notas", OleDbType.VarChar).Value = notas.Text 
command.Parameters.Add("@email", OleDbType.VarChar).Value = email.Text 
command.Parameters.Add("@BI", OleDbType.VarChar).Value = numero_BI 

还有就是我的Access数据库模式here的屏幕截图。

回答

1

看起来您正在尝试更新表MembrosCompasso,然后再在表Membros中进行更改。
由于您将MembrosCompasso.BI设置为与Membros.BI相关,因此它必须首先存在于该表中。

如果您将Access中的关系设置为自动更新,则不必执行任何手动更新至MembrosCompasso,它们将在您更新源字段时自动更新。

例如,说我有一个PO表,有很多POItem
我可以将它们设置为以下之间的一个一对多的关系:

enter image description here

在这种情况下,如果我更新PO.ID,所有POItem.POID字段将被更新。
同样,如果我删除给定的PO记录,则所有相关的POItem记录也将被删除。

看看MS Access documentation about table relationships

+0

thanx那是问题 – user1341926 2012-05-01 20:02:30