更新交叉表的数据

昨今明2017 2004-10-14 11:25:09
有三个表:
表:TT_Roles
字段iRoleID sRoleName
表:TT_Users
字段iUserID sLoginName sPassword
表: TT_User_Role
字段iUserID iRoleID bHave

一个交叉查询的存储过程:
CREATE PROCEDURE dbo.GetUserRole
AS
BEGIN
--声明变量
DECLARE @SqlString nvarchar (4000) --放SQL语句
DECLARE @TempRoleID int --放RoleID
DECLARE @TempRoleName varchar(50) --放RoleName

SET @SqlString = N'select TT_Users.sLoginName 用户名,' --赋值

DECLARE Cursor_UserRole CURSOR FOR --声明游标
SELECT DISTINCT TT_User_Role.iRoleID,sRoleName
FROM TT_User_Role,TT_Roles
WHERE TT_User_Role.iRoleID = TT_Roles.iRoleID
OPEN Cursor_UserRole --打开游标

FETCH NEXT FROM Cursor_UserRole INTO @TempRoleID,@TempRoleName --赋值
WHILE @@FETCH_STATUS = 0 --如果下确执行,则循环下去
BEGIN
SET @SqlString = @SqlString + N'SUM(CASE iRoleID WHEN ' +
CAST(@TempRoleID AS varchar) + N'THEN bHave END) AS " '+
@TempRoleName + '",'
FETCH NEXT FROM Cursor_UserRole INTO @TempRoleID,@TempRoleName
END

CLOSE Cursor_UserRole

SET @SqlString = LEFT(@SqlString,LEN(@SqlString)-1)
SET @SqlString = @SqlString + N'FROM TT_User_Role,TT_Users WHERE TT_User_Role.iUserID = TT_Users.iUserID GROUP BY TT_Users.sLoginName'

EXEC sp_executesql @SqlString
END

在一个DataGrid中显示
问题是可以显示,但是怎么在DataGrid中更新和删除?
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
昨今明2017 2004-10-18
  • 打赏
  • 举报
回复
显示用交叉表,更新就不用了,问题解决.
Andy__Huang 2004-10-14
  • 打赏
  • 举报
回复
既然你用了存儲過程﹐你先把表更新﹐然后再把它變成交叉查詢

先交叉查詢再更新很難
laker_tmj 2004-10-14
  • 打赏
  • 举报
回复
up learn
交叉表也能更新?
yjzhg 2004-10-14
  • 打赏
  • 举报
回复
先搜一下论坛上的贴子吧
昨今明2017 2004-10-14
  • 打赏
  • 举报
回复
是不是先取得用户更改的数据,在更新相关的表,然后再用交叉表显示出来?

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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