当我尝试从 VB Net 中的 DevExpress GridView 更新我的数据库时出现此错误
Getting this error when I try to update my databse from a DevExpress GridView in VB Net
错误指出:[dbo].[PrescriptionPamflet_modified] 触发器出错。触发器执行期间出现错误。批处理已中止,用户事务(如果有)已回滚。
我有以下 DevExpress 网格:
当我按下“打印”按钮时,它应该会更新数据库值并打印一份报告。
当没有更改更新时一切正常。
注意:我使用 LINQ 来设置网格的数据源,inPatientID
是我用来确定与哪个患者一起工作的主键变量。 myDB
是我的 DataContext
注:网格的数据源来自BindingSourcePrescriptionItems
这是我用来加载数据的代码:
Dim patientPrescriptions = From prescription In myDB.PrescriptionPamflets
Where prescription.PatientID = inPatientID
Select prescription
BindingSourcePrescriptionItems.DataSource = patientPrescriptions
这是打印按钮的代码:
BindingSourcePrescriptionItems.EndEdit()
GridViewPerscriptionPamflet.PostEditor()
Try
myDB.SubmitChanges()
Catch ex As Exception
DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Dim rpt As New XtraReportPrescriptionPamflet(inPatientID)
rpt.ShowPreview()
rpt.BringToFront()
- 注意:只有
PackSize
和 Quantity
列是可编辑的,因为您不能t/shouldn更新主键值和外键值。
此外,PackSize
的数据类型为 decimal
,Quantity
的数据类型在网格以及 SQL 服务器数据库本身上为 integer
。
如有任何帮助,我们将不胜感激。我在网上找到的少数结果表明它是数据类型不匹配,但我的数据类型完全匹配。我不想使用 SQL 更新数据库,因为我们公司正在转向对所有内容使用 LINQ。
创建了双触发器。我把它们都删除了。删除 table 并重新创建它。解决了我的问题,此后就没有了。
错误指出:[dbo].[PrescriptionPamflet_modified] 触发器出错。触发器执行期间出现错误。批处理已中止,用户事务(如果有)已回滚。
我有以下 DevExpress 网格:
当我按下“打印”按钮时,它应该会更新数据库值并打印一份报告。 当没有更改更新时一切正常。
注意:我使用 LINQ 来设置网格的数据源,
inPatientID
是我用来确定与哪个患者一起工作的主键变量。myDB
是我的 DataContext注:网格的数据源来自
BindingSourcePrescriptionItems
这是我用来加载数据的代码:
Dim patientPrescriptions = From prescription In myDB.PrescriptionPamflets
Where prescription.PatientID = inPatientID
Select prescription
BindingSourcePrescriptionItems.DataSource = patientPrescriptions
这是打印按钮的代码:
BindingSourcePrescriptionItems.EndEdit()
GridViewPerscriptionPamflet.PostEditor()
Try
myDB.SubmitChanges()
Catch ex As Exception
DevExpress.XtraEditors.XtraMessageBox.Show(ex.Message.ToString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Dim rpt As New XtraReportPrescriptionPamflet(inPatientID)
rpt.ShowPreview()
rpt.BringToFront()
- 注意:只有
PackSize
和Quantity
列是可编辑的,因为您不能t/shouldn更新主键值和外键值。 此外,PackSize
的数据类型为decimal
,Quantity
的数据类型在网格以及 SQL 服务器数据库本身上为integer
。
如有任何帮助,我们将不胜感激。我在网上找到的少数结果表明它是数据类型不匹配,但我的数据类型完全匹配。我不想使用 SQL 更新数据库,因为我们公司正在转向对所有内容使用 LINQ。
创建了双触发器。我把它们都删除了。删除 table 并重新创建它。解决了我的问题,此后就没有了。