数据库关键字出错!请大家帮忙看一下。在线等待

z000001 2003-10-15 09:38:20
我的窗口中有个DateGird控件。我需要双击事件从另一个窗口获取一个产品编码
Private Sub DGDetail_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGDetail.DoubleClick
'结束当前编辑
BmPurchaseDetail.EndCurrentEdit()
Dim fmSelectProductID As New fmSelectProductID()
If fmSelectProductID.ShowDialog = DialogResult.OK Then
Me.DGDetail(Me.DGDetail.CurrentRowIndex, 0) = fmSelectProductID.ProductID
End If
报错在BmPurchaseDetail.EndCurrentEdit(),“PurchaseID”不能为空
"PurchaseID"是个BmPurchaseDetail绑定表中的一个主关键字。在这里要求结束编辑,为什么仍然出现"PurchaseID不能为空"错误。怎样处理请高手帮忙!急!谢谢
我的窗口代码如下:
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
GinusAtCSDN 2003-10-16
  • 打赏
  • 举报
回复
似乎fmSelectProductID.ProductID调用
的声明Dim fmSelectProductID As New fmSelectProductID()
在BmPurchaseDetail.EndCurrentEdit()的调用之后造成
rgbcn 2003-10-15
  • 打赏
  • 举报
回复
gz
z000001 2003-10-15
  • 打赏
  • 举报
回复
Public Class fmPR110
Inherits Kings.fmSingle
Dim BMPurchaseMaster As BindingManagerBase
Dim BmPurchaseDetail As BindingManagerBase
'创建dtPurchaseDetails对象,移用他的ColumnChange事件计算金额
Dim WithEvents dtPurchasedetail As New DataTable()
'是否要计算金额的标志
Dim PurchaseDetailHasChange As Boolean
Public Overrides Sub SetMyData()
MyDataSet = dsPurchase
MyDataItem = "PurchaseMaster"
MyConnection = cnKS
End Sub
Public Overrides Sub UploadAddData()
daPurchaseMaster.Update(dsPurchase, "PurchaseMaster")
daPurchaseDetail.Update(dsPurchase, "PurchaseDetail")
End Sub
Public Overrides Sub UploadDeleteData()
daPurchaseDetail.Update(dsPurchase, "PurchaseDetail")
daPurchaseMaster.Update(dsPurchase, "PurchaseMaster")
End Sub
Public Overrides Sub UploadModifyData()
daPurchaseDetail.Update(dsPurchase, "PurchaseDetail")
daPurchaseMaster.Update(dsPurchase, "PurchaseMaster")
End Sub

Public Overrides Sub FillData()
daSupplier.Fill(dsPurchase)
daPurchaseMaster.Fill(dsPurchase)
daPurchaseDetail.Fill(dsPurchase)
End Sub

Private Sub fmPR110_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
BMPurchaseMaster = Me.BindingContext(dsPurchase, "PurchaseMaster")
BmPurchaseDetail = Me.BindingContext(dsPurchase, "PurchaseMaster.PurchaseMasterPurchaseDetail")
dtPurchasedetail = dsPurchase.Tables("PurchaseDetail")
With dsPurchase.Tables("PurchaseMaster")
.Columns("PurchaseProperty").DefaultValue = "1"
.Columns("SubTotal").DefaultValue = 0
.Columns("valueAddTax").DefaultValue = 0
.Columns("Amount").DefaultValue = 0
.Columns("AccountPayable").DefaultValue = 0
.Columns("Paid").DefaultValue = 0
End With
With dsPurchase.Tables("PurchaseDetail")
.Columns("ProductID").DefaultValue = "NULL"
.Columns("PurchaseQuantity").DefaultValue = 0
.Columns("PurchaseUnitPrice").DefaultValue = 0
.Columns("PurchaseAmount").DefaultValue = 0

End With
'预设ColumnChanged事件力的计算程序代码是要执行的
PurchaseDetailHasChange = True
End Sub

Private Sub dtPurchasedetail_ColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles dtPurchasedetail.ColumnChanged
Dim drPurchaseMaster As DataRow
Dim drPurchaseDetail As DataRow
Dim iSubTotal As Integer
Try
'如果为False,就不执行,避免造成无限回路
If PurchaseDetailHasChange Then
'进入循环变为False
PurchaseDetailHasChange = False
e.Row("PurchaseAmount") = e.Row("PurchaseQuantity") * e.Row("PurchaseUnitPrice")
'找出当前的PurchaseMaster所在的记录
drPurchaseMaster = Me.dsPurchase.Tables("PurchaseMaster").Rows(BMPurchaseMaster.Position)
iSubTotal = 0
'遍历每笔明细
For Each drPurchaseDetail In drPurchaseMaster.GetChildRows("PurchaseMasterPurchaseDetail")
'金额累加
iSubTotal = iSubTotal + drPurchaseDetail("purchaseAmount")
Next
drPurchaseMaster.BeginEdit()
'明细的总计金额=主表的小计
drPurchaseMaster("SubTotal") = iSubTotal
'计算税额
drPurchaseMaster("ValueAddTax") = drPurchaseMaster("SubTotal") * 0.05
drPurchaseMaster("Amount") = drPurchaseMaster("SubTotal") + drPurchaseMaster("ValueAddTax")
drPurchaseMaster.EndEdit()
End If
Finally
PurchaseDetailHasChange = True
End Try
End Sub

Private Sub DGDetail_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGDetail.DoubleClick
BmPurchaseDetail.EndCurrentEdit()
Dim fmSelectProductID As New fmSelectProductID()
If fmSelectProductID.ShowDialog = DialogResult.OK Then
Me.DGDetail(Me.DGDetail.CurrentRowIndex, 0) = fmSelectProductID.ProductID
End If
End Sub
End Class

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧