国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

一對多關聯的數據庫在VB.NET中如何新增記錄

2024-07-10 13:01:34
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,

有兩個表order(orderid,ordername,totalprice), orderdetail(orderid,productid,productname,price) 已經建立一對多
關聯(orderid). 用vb.net建立一個窗體, 用于主表和明細表的數據錄入及更新.
在窗體上增加兩個sqldataadapter,分別選擇order和orderdetail表, 并生成數據集,在dataset中建立關聯(orderid)

主表中:orderid,ordername 綁定在兩個textbox文本框中,用于接受用戶的輸入,totalprice接受明細表中price
的匯總值.
明細表綁定到一個datagrid控件, datasource:dsorder; datamember:order.orderorderdetail建立的關聯名稱

問題:

在主表中新增一個記錄,用戶錄入orderid和ordername后,進入明細表的錄入,用戶錄入productid, productname, price后,提示
“明細orderid列不允許空值,要更正該值嗎?” 是什么原因?
用于連接主表的明細orderid如果輸入跟主表一樣的orderid時提示“foreignkeyconstraint 要求在交叉表中存在子鍵值。要更正該值嗎?”

只有錄入主表中的orderid和ordername后, 先更新主表數據源,才可以編輯更新明細表,這是為什么?

請問,有沒有其他更好的方法, 實現主表和明細表的新增記錄同時更新呢?

謝謝關照!
網友:方宇

回復:http://[email protected]
http://[email protected]

附部分源代碼:
public class fmorders
inherits system.windows.forms.form
dim withevents dtorderdetails as new datatable()
dim bmorders as bindingmanagerbase
dim bmorderdetails as bindingmanagerbase
dim orderdetailshaschange as boolean
dim orderid as datacolumn
dim ordername as datacolumn
dim subtotal as datacolumn

private sub bnfirst_click(byval sender as system.object, byval e as system.eventargs) handles bnfirst.click
bmorders.position = 0
end sub
private sub bnprior_click(byval sender as system.object, byval e as system.eventargs) handles bnprior.click
bmorders.position -= 1
end sub
private sub bnnext_click(byval sender as system.object, byval e as system.eventargs) handles bnnext.click
bmorders.position += 1
end sub
private sub bnlast_click(byval sender as system.object, byval e as system.eventargs) handles bnlast.click
bmorders.position = bmorders.count - 1
end sub

private sub bnadd_click(byval sender as system.object, byval e as system.eventargs) handles bnadd.click
try
bmorders.endcurrentedit()
bmorders.addnew()

catch err as system.systemexception
messagebox.show(err.tostring)
end try
end sub
private sub bnload_click(byval sender as system.object, byval e as system.eventargs) handles bnload.click
filldata()
end sub

private sub bnupdate_click(byval sender as system.object, byval e as system.eventargs) handles bnupdate.click
dim dstestorderschange as dataset

bmorderdetails.endcurrentedit()
bmorders.endcurrentedit()
if not dstestorders.haschanges(datarowstate.deleted) then
try
daorders.update(dstestorders, "orders")
daorderdetails.update(dstestorders, "orderdetails")
dstestorders.acceptchanges()
catch err as system.systemexception
dstestorders.rejectchanges()
messagebox.show(err.tostring)
throw
end try
else
try
daorderdetails.update(dstestorders, "orderdetails")
daorders.update(dstestorders, "orders")
dstestorders.acceptchanges()
catch err as system.systemexception
dstestorders.rejectchanges()
messagebox.show(err.tostring)
throw
end try
end if
end sub

private sub fmorders_load(byval sender as system.object, byval e as system.eventargs) handles mybase.load
filldata()
dtorderdetails = dstestorders.tables("orderdetails")
bmorders = me.bindingcontext(dstestorders, "orders")
bmorderdetails = me.bindingcontext(dstestorders, "orders.ordersorderdetails")
orderdetailshaschange = true
subtotal = dstestorders.tables("orders").columns("subtotal")
subtotal.defaultvalue = 0
price = dstestorders.tables("orderdetails").columns("price")
price.defaultvalue = 0
end sub

private sub filldata()
dstestorders.enforceconstraints = false
daorders.fill(dstestorders)
daorderdetails.fill(dstestorders)
dstestorders.enforceconstraints = true
end sub
private sub dtorderdetails_columnchanged(byval sender as object, byval e as system.data.datacolumnchangeeventargs) _
handles dtorderdetails.columnchanged

dim drorders as datarow
dim drorderdetails as datarow
dim isubtotal as integer
try
if orderdetailshaschange then
orderdetailshaschange = false
drorders = dstestorders.tables("orders").rows(bmorders.position)
isubtotal = 0
for each drorderdetails in drorders.getchildrows("ordersorderdetails")


isubtotal = isubtotal + drorderdetails("price")
next
drorders.beginedit()
drorders("subtotal") = isubtotal
drorders.endedit()
end if
finally
orderdetailshaschange = true
end try
end sub







private sub bndelete_click(byval sender as system.object, byval e as system.eventargs) handles bndelete.click
if bmorders.count > 0 then
bmorders.removeat(bmorders.position)
end if


end sub

private sub bncancel_click(byval sender as system.object, byval e as system.eventargs) handles bncancel.click
bmorders.cancelcurrentedit()

end sub
end class
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五台县| 景洪市| 锡林郭勒盟| 南乐县| 海门市| 义乌市| 葫芦岛市| 波密县| 桐乡市| 白银市| 堆龙德庆县| 故城县| 弋阳县| 天等县| 甘孜县| 竹北市| 施秉县| 卢湾区| 越西县| 浮梁县| 镇康县| 中阳县| 南溪县| 密山市| 南靖县| 株洲市| 资源县| 安顺市| 太仓市| 浙江省| 大厂| 噶尔县| 万州区| 赣榆县| 怀宁县| 通城县| 新沂市| 德安县| 北辰区| 休宁县| 孟州市|