让存储过程只影响当前聚焦的行
Having a stored procedure affect only the currently focused row
我将 Visual Studio DevExpress Winforms 与 Microsoft SQL 服务器管理器结合使用,我目前正在尝试编写一个存储过程,该过程将在单击按钮时激活,复制将焦点行转移到不同的 table.
我已经调查过了,但未能找到满足我需要的解决方案。如果可能的话,我宁愿不使用复选框,但我对此持开放态度。
存储过程中我当前的代码是:
CREATE PROCEDURE [dbo].[procedurename]
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT * FROM tbl_b)
INSERT INTO tbl_b (column names here)
SELECT DISTINCT (column names here)
FROM tbl_a
END
在使用按钮测试程序时,我已经能够成功调用此过程,并且它主要按预期运行,将数据从一个 table 移动到另一个没有重复,但是它移动当我只想移动焦点行时,整个 table。
我正在为此使用 gridView,我已经尝试过使用 DataGridView 的解决方案,但似乎不起作用。
这是一个基于桌面的程序。
您的存储过程中需要一个参数来保存您要复制的行的标识
CREATE PROCEDURE [dbo].[procedurename] (@ID int)
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT * FROM tbl_b)
INSERT INTO tbl_b (column names here)
SELECT DISTINCT (column names here)
FROM tbl_a
where tbl_A.PrimaryKeyColumn = @ID
END
在按钮的 Click 事件中,您可以执行类似这样的操作
var id = myGridView.GetRowCellValue(myGridView.FocusedRowHandle, "YourPrimaryKeyName");
现在您可以使用这个 id
变量传递给您的存储过程
但是,您的存储过程确实存在另一个问题
IF NOT EXISTS (SELECT * FROM tbl_b)
一旦其中有 1 行或多行,此检查将永远不允许您进行插入 table。
我想你需要这样的东西
IF NOT EXISTS (SELECT 1 FROM tbl_b where tbl_b.PrimaryKey = @ID)
我将 Visual Studio DevExpress Winforms 与 Microsoft SQL 服务器管理器结合使用,我目前正在尝试编写一个存储过程,该过程将在单击按钮时激活,复制将焦点行转移到不同的 table.
我已经调查过了,但未能找到满足我需要的解决方案。如果可能的话,我宁愿不使用复选框,但我对此持开放态度。
存储过程中我当前的代码是:
CREATE PROCEDURE [dbo].[procedurename]
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT * FROM tbl_b)
INSERT INTO tbl_b (column names here)
SELECT DISTINCT (column names here)
FROM tbl_a
END
在使用按钮测试程序时,我已经能够成功调用此过程,并且它主要按预期运行,将数据从一个 table 移动到另一个没有重复,但是它移动当我只想移动焦点行时,整个 table。
我正在为此使用 gridView,我已经尝试过使用 DataGridView 的解决方案,但似乎不起作用。
这是一个基于桌面的程序。
您的存储过程中需要一个参数来保存您要复制的行的标识
CREATE PROCEDURE [dbo].[procedurename] (@ID int)
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT * FROM tbl_b)
INSERT INTO tbl_b (column names here)
SELECT DISTINCT (column names here)
FROM tbl_a
where tbl_A.PrimaryKeyColumn = @ID
END
在按钮的 Click 事件中,您可以执行类似这样的操作
var id = myGridView.GetRowCellValue(myGridView.FocusedRowHandle, "YourPrimaryKeyName");
现在您可以使用这个 id
变量传递给您的存储过程
但是,您的存储过程确实存在另一个问题
IF NOT EXISTS (SELECT * FROM tbl_b)
一旦其中有 1 行或多行,此检查将永远不允许您进行插入 table。
我想你需要这样的东西
IF NOT EXISTS (SELECT 1 FROM tbl_b where tbl_b.PrimaryKey = @ID)