Asp.net 通过从另一个表中提取数据插入到表中
我从其他人那里继承了这个项目,需要清理它以满足新的需求-他们就是这样设计的 我的Access数据库中有2个表(我已将字段的数据类型包括在花括号中): 事件: EventID{AutoNumber}EventTitle{Short Text}EventDescription{Long Text}EventDate{Date/Time}EventCategory{使用类别/类别的行源查找} 类别: CategoryID{AutoNumber}| CategoryTitle{Short Text}| CategoryImage{Short Text}| CategoryColor{Short Text} “Categories”(类别)表保存有关特定类别的所有“Master”(主)信息,例如其名称、图标(例如勾号、叉号等) 我有一个查询(在Access内部)将这两个表中的数据拉到一起,下面的字段按顺序排列: EventID | EventTitle | EventDescription | EventDate | CategoryTitle | CategoryImage 查询的SQL为:Asp.net 通过从另一个表中提取数据插入到表中,asp.net,sql,vb.net,ms-access,relational-database,Asp.net,Sql,Vb.net,Ms Access,Relational Database,我从其他人那里继承了这个项目,需要清理它以满足新的需求-他们就是这样设计的 我的Access数据库中有2个表(我已将字段的数据类型包括在花括号中): 事件: EventID{AutoNumber}EventTitle{Short Text}EventDescription{Long Text}EventDate{Date/Time}EventCategory{使用类别/类别的行源查找} 类别: CategoryID{AutoNumber}| CategoryTitle{Short Text}|
SELECT Events.EventID, Events.EventTitle, Events.EventDescription,
Events.EventDate, Categories.CategoryTitle, Categories.CategoryImage,
Categories.CategoryColor FROM Events INNER JOIN Categories ON
Events.EventCategory = Categories.CategoryID ORDER BY
Events.EventDate;
网站的其他区域依靠查询来检索信息
在Visual Studio中,我尝试将asp文本框和下拉控件中的值从我的数据库插入以下字段:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("INSERT INTO Events (EventTitle, EventDescription, EventDate, EventCategory) VALUES (@f1,@f2,@f3,@f4)",
conn)
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", DateTime.ParseExact(tb_eventdate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture))
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.SelectedValue)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("INSERT INTO Events (EventTitle, EventDescription, EventDate, EventCategory) VALUES (@f1,@f2,@f3,@f4)",
conn)
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", DateTime.ParseExact(tb_eventdate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture))
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.SelectedValue)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
网站上其他地方还有其他ASP.NET数据索引控件,这些控件依赖于“Categories”表的内容保持不变,因此如何将我上面列出的字段插入到“Events”表中(特别是EventCategory)
编辑:
这是我完成的分包:
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles
Button1.Click
Dim conn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
conn.Open()
Dim cmd As New OleDbCommand("INSERT INTO Events (EventTitle, EventDescription, EventDate, EventCategory) VALUES (@f1,@f2,@f3,@f4)",
conn)
cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
cmd.Parameters.AddWithValue("@f3", DateTime.ParseExact(tb_eventdate.Text, "dd/MM/yyyy",
CultureInfo.InvariantCulture))
cmd.Parameters.AddWithValue("@f4", dd_eventcategory.SelectedIndex + 1)
cmd.ExecuteNonQuery()
conn.Close()
End Sub
查找字段可能具有欺骗性。假设您有[Categories]表
CategoryID CategoryTitle
1 Pub Crawl
2 Booze Up
3 Big Drunk
当您在数据表视图中打开[Events]表时,它看起来是这样的
EventID EventTitle EventCategory
1 Thursday Pub Crawl
如果你想增加一个新的“星期五”活动,你会认为它会像
INSERT INTO Events (EventTitle, EventCategory) VALUES ("Friday", "Big Drunk")
但如果“由于类型转换失败,Microsoft Access将1个字段设置为空…”,则该操作将失败。相反,你必须这样做
INSERT INTO Events (EventTitle, EventCategory) VALUES ("Friday", 3)
其中3
是数字类别ID,而不是您在数据表视图中看到的
因此,您需要做的是确保从组合框(而不是CategoryTitle)中检索(数字)CategoryID并将其插入事件表中
顺便说一句,这就是为什么经验更丰富的Access开发人员会避免使用查找字段:它们隐藏了数据库的实际工作,并导致混乱、沮丧,是的,还会让一些用户喝酒……)
EventCategory
lookup字段是否允许多选?@Gord Thompson:不,只允许单选,即“Public”、“Private”或“Group Only”@dasblinkenlight:对不起,是的,这是一个错误,我将重新发布我的工作代码(我只是在玩从多个表中选择的游戏,但我意识到解决我的问题需要比简单执行选择查询多得多的腿部工作)哈哈,非常感谢!我只是无法理解查找字段的事情,特别是在VB中将其与SQL查询相结合时。我已经让它工作起来了。(我已经在编辑中发布了上面的工作代码)