使用外键插入查询

时间:2015-06-29 00:57:09

标签: sql excel vba excel-vba ms-access-2010

我在数据库中有三个表,它们使用外键相互链接。我想做一个INSERT查询,以便我可以输入数据。我可以单独向每个表插入数据但是当使用外键约束时我得到错误。这是表关系和VBA表单,我试图通过它输入数据 VBA FormRelationships & Data Types

我现在使用这两个查询,但第二个是抛出错误。

sql = "insert into T1(ID,FName,Email)values('" & TextBox1.Text & "', '" & TextBox2.Text & "','" & TextBox3.Text & "')"
sql = "insert into T2(ID,PhoneNumber,City) Values (Select(ID FROM T1 WHERE FName=" & TextBox2.Text & "),'" & TextBox4.Text & "','" & TextBox5.Text & "')"

请注意ID是我表格中的主要字段,我将使用该字段进行搜索,更新和删除

3 个答案:

答案 0 :(得分:0)

您在第二个查询中使用的synatx无效,您必须使用INSERT INTO .... SELECT ....进行编写并删除VALUES关键字,如下所示:

INSERT INTO T2(ID,PhoneNumber,City) 
SELECT ID,'" & TextBox4.Text & "','" & TextBox5.Text & "'
FROM T1 
WHERE FName=" & TextBox2.Text & "

来自'" & TextBox4.Text & "','" & TextBox5.Text & "'的值将被选为字符串文字,其值来自ID列,这是您如何将查询中选择的值与字符串文字混合并将其插入另一张桌子。

答案 1 :(得分:0)

Mahmoud Gamal是对的,但您必须确保列表中的字段具有相同的类型,例如,当字段为数字时,您不能使用单冒号('),数据库承认但不正确。并且您不能将字母数字字符串发送到数字字段。最后,您必须确保查询顺序正确,因为外键会级联验证引用。对不起我的英文。

答案 2 :(得分:0)

对于你的第二个查询,我正在使用VB.NET,因为我之前没有做过VBA编程:

    Dim sql As String = String.Empty
    sql = "insert into T2(ID,PhoneNumber,City) Values ("

    '// T2.ID(Number)
    sql += "Select(ID FROM T1 WHERE FName=" & TextBox2.Text & "),"

    '// T2.PhoneNumber(Number)
    '// instead of "'" & TextBox4.Text & "'," remove the single quotes
    sql += TextBox4.Text & ","

    '// T2.City(Text) only text need to be enclosed in 'single quotes'
    sql += "'" & TextBox5.Text & "'"

    sql += ")"

您的第二个查询是抛出错误,因为您试图将文本插入数据库中的数字列(T2.PhoneNumber)。

包括您的图片:

enter image description here