国产探花免费观看_亚洲丰满少妇自慰呻吟_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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 波密县| 上蔡县| 资中县| 伽师县| 峨边| 宿松县| 太康县| 南郑县| 长海县| 通化县| 望江县| 遵化市| 瓮安县| 女性| 高阳县| 丁青县| 新安县| 屏东市| 沐川县| 萍乡市| 宁明县| 繁峙县| 灵宝市| 原平市| 汝阳县| 泽库县| 灯塔市| 天水市| 和平区| 兴仁县| 黔西县| 华容县| 井冈山市| 沛县| 陕西省| 迁西县| 芮城县| 锦州市| 洞头县| 舒兰市| 尼勒克县|