本人做的是商品管理系统,现后台 sql server 数据库中已有2个表,分别是
入库单主表(验收单号,入库日期,供应商号,员工编号)
入库单明细表(验收单号,商品编号,进货数量,货区号,货架号)
还有一个基于这2个表各列的视图。在前台,通过记录源可以查询这个视图(以表的形式显示出来)从而可以得到完整的
入库信息记录。
如果现在要添加一个新的入库信息记录(也就是向后台2个表中同时插入新的数据),或者修改原有的入库信息记录(即同时修改后台2个表的数据)
请问在前台VB中,如何用语言来实现?Private Sub CmdSave_Click()
Dim a As String
rs1.open "select * from 入库单明细表_xx044_19 where 验收单号='" & Text1(0).Text & "'order by 验收单号", Cnn, adOpenKeyset, adLockOptimistic
rs2.open "select * from 入库单主表_xx044_19 where 验收单号='" & Text1(0).Text & "'order by 验收单号", Cnn, adOpenKeyset, adLockOptimistic
If rs1.RecordCount > 0 Then
a = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If a = vbYes Then
For i = 0 To 4
if text1(0).text <> "" and text1(1).text <> ""
then rs1.Fields(i) = Trim(Text1(i).Text)
next i
rs1.update
if text1(0).text <> "" then rs2.Fields(0) = Trim(Text1(0).Text)
rs2.fields(1) = Trim(Text1(5).Text)
rs2.fields(2) = Trim(Text1(6).Text)
rs2.fields(3) = Trim(DataCombo1.Text)
rs2.update
main_rkxxbcx_rkxxbcx.Adodc1.Refresh
end if
else
if Text1(0).Text <> "" then
'添加销售人员信息
rs1.AddNew
rs1.Fields(0) = Trim(Text1(0).Text)
rs1.Fields(1) = Trim(Text1(1).Text)
rs1.Fields(2) = Trim(Text1(2).Text)
rs1.Fields(3) = Trim(Text1(3).Text)
rs1.Fields(4) = Trim(Text1(4).Text)
rs1.update rs2.addnew
rs2.Fields(0) = Trim(Text1(0).Text)
rs2.Fields(1) = Trim(Text1(5).Text)
rs2.Fields(2) = Trim(Text1(6).Text)
rs2.Fields(3) = Trim(DataCombo1.Text)
rs2.update
main_rkxxbcx_rkxxbcx.Adodc1.Refresh
End If
End If
rs1.close
rs2.close
Unload Me
End Sub这是我写的,其中Text1(0)是验收单号、Text1(1)是商品编号、Text1(2)是进货数量、Text1(3)是货区号、Text1(4)是货架号、Text1(5)是入库日期、Text1(6)是供应商号、DataCombo1是员工编号。
但每次运行的时候,添加新的记录就会出现如下错误:
实时错误'-2147467259 (80004005)'
[Microsoft][ODBC SQL Server Driver][SQL Server]子查询返
回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=、之后,
或子查询用作表达式时,这种情况是不允许的。请高手分析并指点下,谢谢!
入库单主表(验收单号,入库日期,供应商号,员工编号)
入库单明细表(验收单号,商品编号,进货数量,货区号,货架号)
还有一个基于这2个表各列的视图。在前台,通过记录源可以查询这个视图(以表的形式显示出来)从而可以得到完整的
入库信息记录。
如果现在要添加一个新的入库信息记录(也就是向后台2个表中同时插入新的数据),或者修改原有的入库信息记录(即同时修改后台2个表的数据)
请问在前台VB中,如何用语言来实现?Private Sub CmdSave_Click()
Dim a As String
rs1.open "select * from 入库单明细表_xx044_19 where 验收单号='" & Text1(0).Text & "'order by 验收单号", Cnn, adOpenKeyset, adLockOptimistic
rs2.open "select * from 入库单主表_xx044_19 where 验收单号='" & Text1(0).Text & "'order by 验收单号", Cnn, adOpenKeyset, adLockOptimistic
If rs1.RecordCount > 0 Then
a = MsgBox("您确实要修改这条数据吗?", vbYesNo)
If a = vbYes Then
For i = 0 To 4
if text1(0).text <> "" and text1(1).text <> ""
then rs1.Fields(i) = Trim(Text1(i).Text)
next i
rs1.update
if text1(0).text <> "" then rs2.Fields(0) = Trim(Text1(0).Text)
rs2.fields(1) = Trim(Text1(5).Text)
rs2.fields(2) = Trim(Text1(6).Text)
rs2.fields(3) = Trim(DataCombo1.Text)
rs2.update
main_rkxxbcx_rkxxbcx.Adodc1.Refresh
end if
else
if Text1(0).Text <> "" then
'添加销售人员信息
rs1.AddNew
rs1.Fields(0) = Trim(Text1(0).Text)
rs1.Fields(1) = Trim(Text1(1).Text)
rs1.Fields(2) = Trim(Text1(2).Text)
rs1.Fields(3) = Trim(Text1(3).Text)
rs1.Fields(4) = Trim(Text1(4).Text)
rs1.update rs2.addnew
rs2.Fields(0) = Trim(Text1(0).Text)
rs2.Fields(1) = Trim(Text1(5).Text)
rs2.Fields(2) = Trim(Text1(6).Text)
rs2.Fields(3) = Trim(DataCombo1.Text)
rs2.update
main_rkxxbcx_rkxxbcx.Adodc1.Refresh
End If
End If
rs1.close
rs2.close
Unload Me
End Sub这是我写的,其中Text1(0)是验收单号、Text1(1)是商品编号、Text1(2)是进货数量、Text1(3)是货区号、Text1(4)是货架号、Text1(5)是入库日期、Text1(6)是供应商号、DataCombo1是员工编号。
但每次运行的时候,添加新的记录就会出现如下错误:
实时错误'-2147467259 (80004005)'
[Microsoft][ODBC SQL Server Driver][SQL Server]子查询返
回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=、之后,
或子查询用作表达式时,这种情况是不允许的。请高手分析并指点下,谢谢!
'修改主表:cnn.execute "update 主表名 set ... where ..."
'新增子表:cnn.execute "insert into 子表名(...) values(...)"
'修改子表:cnn.execute "update 子表名 set ... where ..."