更新交叉表的数据
有三个表:
表: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中更新和删除?
表: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中更新和删除?
...全文
相关推荐
Cognos_交叉表部分行的折叠与展开
**动态更新**:在Cognos中,折叠和展开操作通常是实时的,即改变视图后,其他与之关联的数据也会相应更新。例如,折叠某一区域的行,可能会影响到相关的汇总数据展示。5.
abc.rar_ABC_交叉表
实时更新:当用户更改选择时,程序应能即时更新交叉表,显示新的结果。5. 输出和可视化:结果可以以表格、图表或其他形式呈现,便于用户理解和解读。
Access数据库技术与应用课件第5章创建交叉表查询与操作查询.ppt
追加查询则是在已有数据的基础上添加新记录,例如将新产生的销售数据追加到已有的销售记录中。更新查询适用于批量修改数据,例如调整商品的销售价格。
Access数据库技术及应用实训查询Ⅱ——交叉表查询和操作查询PPT教学课件.pptx
在“Access数据库技术及应用实训查询Ⅱ——交叉表查询和操作查询”这个实训中,主要涵盖了两种重要的查询类型:交叉表查询和操作查询,这些都是进行高效数据处理的关键技能。
Access数据库技术及应用实训查询Ⅱ——交叉表查询和操作查询PPT学习教案.pptx
创建交叉表查询通常包括以下步骤:选择数据源,定义行标题(如年份),定义列标题(如图书名称),并指定汇总方式(如求和)。操作查询则是对数据库进行实际修改的一类查询,包括插入、更新、删除等操作。


