Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
SQL中3个表,TRole,TDepart,TDepart_Roles,三个表中各有一个字段“ID”作为主键,同时TRole,TDepart表的“ID”又作为TDepart_Roles表的外键,在对TDepart_Roles表进行insert into操作时报错:
先插入TRole TDepart 这两个表的数据
然后插入 TDepart_Roles表的数据。
你这里出错是因为 插入部门_角色这个中间表数据的时候, 引用的角色根本不存在。
我就是这样做的啊,今天也检查了在TRole表中是存在我要引用的角色的,但是还是出错,我把代码放上来,大侠帮我看看,谢谢
'===============================取得机构ID===========================
Dim DID As Integer '机构ID
Dim cmd As new sqlcommand
Dim dt As DataTable
Dim txt As winform.textbox=e.Form.controls("textbox1")
cmd.c
cmd.commandtext="select * from {TDepart}"
dt=cmd.executereader()
Dim dr As DataRow=dt.find("[FullName]='"& txt.value &"'")
DID=dr("ID")
'=============================添加机构角色=================================
Dim RID As Integer '角色ID
Dim STR As String '机构角色
Dim cmd1 As new sqlcommand '连接角色表
Dim cmd2 As new sqlcommand '连接机构_角色表
Dim cmd3 As new sqlcommand '连接机构_角色表
Dim dt1 As DataTable
Dim lstR As winform.Listbox=e.Form.controls("listbox1") '已选角色列表
Dim lstDR As winform.Listbox=e.Form.controls("listbox2") '预览
cmd1.c
cmd2.c
cmd1.commandtext="select * from {TRole}"
cmd2.commandtext="insert {TDepart_Roles} ([DepartID],[RoleID],[Remark],[CreaterID],[CreateTime]) Values('"& DID &"','"& RID &"','"& STR &"','"& CurrentUserID &"','"& date.today() &"')"
dt1=cmd1.executereader()
cmd3.c
cmd3.commandtext="select * from {TDepart_Roles} where [Remark]='"& STR &"'"
For i As Integer =0 To lstR.items.count-1
Dim dr1 As DataRow=dt1.find("[name]='"& lstR.items(i).trim() &"'")
RID=dr1("ID")
STR=TXT.value.trim() & "\" & lstR.items(i)
lstDR.items.add(STR)
If cmd3.executenonquery()=1 Then
Messagebox.show(""& STR &"已存在!","提示")
Exit For
ElseIf cmd2.executenonquery()=0 Then
messagebox.show("添加失败!","提示")
goto h
End If
Next
If messagebox.show("添加成功!","提示") Then
txt.value=""
lstR.items.clear
End If
h:
DID 、RID、CurrentUserID都是整型,不加引号行吗?我试试看
不过我在其它地方的代码中都加了的,也没有提示错误,而且也得到了我想要的结果,这是怎么回事呢?
哪位大侠指点一下嘛,解决不了,郁闷死了
执行前打开命令窗口。
代码中output.show(cmd2.commandtext)
看看生成的Insert语句是什么。
将这个语句复制到SQL执行窗口执行,看看能否通过。