小编Pau*_*ith的帖子

为什么我的.NET应用程序在从网络驱动器运行时崩溃?

从网络驱动器运行时我的.NET应用程序失败,即使同一个可执行文件从本地硬盘运行完全正常运行?

我尝试检查"完全信任",如下所示:

try
{
    // Demand full trust permissions
    PermissionSet fullTrust = new PermissionSet( PermissionState.Unrestricted );
    fullTrust.Demand();

    // Perform normal application logic

}
catch( SecurityException )
{
    // Report that permissions were not full trust
    MessageBox.Show( "This application requires full-trust security permissions to execute." );
}
Run Code Online (Sandbox Code Playgroud)

但是,这没有帮助,我的意思是应用程序启动并且永远不会输入catch块.但是,调试版本显示抛出的异常是由InheritanceDemand引起的SecurityException.有任何想法吗?

.net c# networking securityexception permissionset

31
推荐指数
3
解决办法
2万
查看次数

MS Access中的SQL更新困难 - 操作必须使用可更新的查询

我有一个选择查询,它执行一些文本操作,基本上重新格式化一个字段,以便我可以在另一个表中查找它:

如果我有第一个表,如果我有一个像"J1/2"这样的字段,它会在相应字段中查找J1和J2的不同表中记录的ID.

这一切都运作良好.

现在我想更新原始表,所以我不必再使用这个字符串操作进行查找,但是我对更新查询的尝试以"操作必须使用可更新的查询"结束

有任何想法吗?

我的SELECT语句:

SELECT DISTINCT
t1.DD,
t1.TN,
t1.DD & " J" & MID(t1.TN,2,1) AS CalculatedStart,
t1.DD & " J" & MID(t1.TN,4,1) AS CalculatedEnd,
t2.ID
FROM t1 INNER JOIN t2
ON (t1.DD & " J" & MID(t1.TN,2,1)=t2.StartLink)
AND (t1.DD & " J" & MID(t1.TN,4,1)=t2.EndLink)
WHERE t1.TN Like "J?/?"
AND t1.DD Like "M*";
Run Code Online (Sandbox Code Playgroud)

回想一下 - 这很好,我从另一端得到了必要的t2.ID.

所以我想做一些事情:

UPDATE t1 SET t2ID = (
    SELECT Query1.ID
    FROM Query1
    WHERE t1.DD=Query1.DD
    AND t1.TN=Query1.TN
    )
WHERE t1.TN Like "J?/?"
AND t1.DD Like …
Run Code Online (Sandbox Code Playgroud)

sql ms-access sql-update

15
推荐指数
4
解决办法
7万
查看次数

使用INSTEAD OF INSERT触发器中的默认值

我们正在执行到SQL Server的数据库迁移,并且为了支持遗留应用程序,我们在SQL Server表上定义了视图,这些视图以遗留应用程序所期望的方式呈现数据.

但是,当字段可能具有默认值时,我们现在遇到在这些视图上定义的INSTEAD OF INSERT触发器的问题.

我试着举个例子.

数据库中的表有3个字段,a,b和c.c是全新的,遗留应用程序不知道它,所以我们也有一个视图有2个字段,a和b.

当遗留应用程序尝试在其视图中插入值时,我们使用INSTEAD OF INSERT触发器来查找应该在字段c中的值,如下所示:

INSERT INTO realTable(a, b, c) SELECT Inserted.a, Inserted.b, Calculated.C FROM...
Run Code Online (Sandbox Code Playgroud)

(查找的详细信息无关紧要.)

除非字段b具有默认值,否则此触发器效果很好.这是因为如果查询

INSERT INTO legacyView(a) VALUES (123)
Run Code Online (Sandbox Code Playgroud)

执行,然后在触发器中,Inserted.b为NULL,而不是b的默认值.现在我有一个问题,因为我无法区分上面的查询,它将默认值放入b,并且:

INSERT INTO legacyView(a,b) VALUES (123, NULL)
Run Code Online (Sandbox Code Playgroud)

即使b是非NULLABLE,我也不知道如何在触发器中编写INSERT查询,这样如果为b提供了值,则在触发器中使用它,但如果不是,则使用默认值.

编辑:补充说,我宁愿不复制触发器中的默认值.默认值已经在数据库模式中,我希望我可以直接使用它们.

sql sql-server legacy triggers default-value

6
推荐指数
1
解决办法
3855
查看次数

无法在WinForms ComboBox中更改DisplayMember

我正在尝试使用以下代码更改组合框的显示方式:

    private void UpdateMapRoadPointList(List<GeographicAddress> plstMapRoadPointList)
    {
        cboFind.DataSource = plstMapRoadPointList;
        cboFind.DisplayMember = "ShortCode";
        cboFind.ValueMember = "";
    }
Run Code Online (Sandbox Code Playgroud)

GeographicAddress是一个具有ShortCode属性的类,该属性返回一个字符串:

    internal string ShortCode
    {
        get { return Distance + Carriageway; }
    }
Run Code Online (Sandbox Code Playgroud)

但是,在使用应用程序时,disaplyed值仍然来自GeographicAddress.ToString().在调试时,似乎cboFind.DisplayMember ="ShortCode"没有效果!DisplayMember在执行该行之前和之后都是""!

我错过了什么?

.net c# combobox winforms

1
推荐指数
1
解决办法
2123
查看次数