小编Tom*_*ter的帖子

Excel 启用宏的工作簿 (.xlsm) 宏被禁用,并且没有明显的方法来重新启用

我在启用宏的工作簿中禁用 Excel 宏时遇到问题。我有一个包含宏的 Excel 2003 模板文件 (.xlt)。然后我执行以下操作:

\n\n
    \n
  1. 在 Excel 2007/2010 中打开启用 Excel 2003 宏的模板工作簿 (.xlt)
  2. \n
  3. 将工作簿另存为 Excel 2007 启用宏的工作簿 (.xlsm)
  4. \n
  5. 在 Excel 2007/2010 中关闭并打开工作簿
  6. \n
\n\n

然后宏被禁用,并且没有明显的方法来启用它们。

\n\n

这里似乎描述了同样的问题:http://www.sqldrill.com/excel/miscellaneous-excel-subjects/872432-excel-2007-macros.html

\n\n

我\xe2\x80\x99ve 尝试保存到\xe2\x80\x98受信任位置\xe2\x80\x99 以及该线程中的其他建议,但出现了相同的问题。

\n\n

还有其他人遇到过这个问题吗?

\n\n

谢谢,\n汤姆

\n

excel

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

TSQL性能与@@错误并且可以替换吗?

我继承了看起来像这样的代码:

存储过程UpdateSomeStuff

Update Table1 Set Col1=Para@1

IF @@Error > 0 Goto ERR

Update Table2 Set Col1=Para@2

IF @@Error > 0 Goto ERR

RETURN 0

ERR:

return  -1;
Run Code Online (Sandbox Code Playgroud)

这个sp由ADO.NET在c#中调用,就像这样

try
{
    myCommand.ExecuteNonQuery();
}
catch (System.Exception ex)
{
    _log.Error(ex);
    throw();
}
finally
{
    if(myConnection!=null)
    {
            myConnection.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

我只是问自己:部分是IF @@错误> 0转到ERR有什么好处?如果发生错误,则无论如何都会返回sp,并且会在调用方法中捕获异常.

调用代码不处理返回值0和-1.我的计划是删除存储过程中的所有错误处理,并获得相同的结果.我是对的还是我错过了什么?

c# t-sql ado.net sql-server-2008

5
推荐指数
2
解决办法
96
查看次数

SQL Server Compact Edition 4 - AccessViolationException

我正在使用Entity Framework代码和SQL Server Compact 4.0构建.NET 4 WPF应用程序.我正在尝试调用DbContext.SaveChanges()后台线程以避免阻止UI,但我偶尔会遇到以下异常:

System.AccessViolationException occurred
  Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
  Source=System.Data.SqlServerCe
  StackTrace:
       at System.Data.SqlServerCe.NativeMethodsHelper.OpenStore(IntPtr pOpenInfo, IntPtr pfnOnFlushFailure, IntPtr& pStoreService, IntPtr& pStoreServer, IntPtr& pQpServices, IntPtr& pSeStore, IntPtr& pTx, IntPtr& pQpDatabase, IntPtr& pQpSession, IntPtr& pStoreEvents, IntPtr& pError)
       at System.Data.SqlServerCe.NativeMethods.OpenStore(IntPtr pOpenInfo, IntPtr pfnOnFlushFailure, IntPtr& pStoreService, IntPtr& pStoreServer, IntPtr& pQpServices, IntPtr& pSeStore, IntPtr& pTx, IntPtr& pQpDatabase, IntPtr& pQpSession, IntPtr& pStoreEvents, IntPtr& pError)
       at System.Data.SqlServerCe.SqlCeConnection.Open(Boolean silent)
       at …
Run Code Online (Sandbox Code Playgroud)

c# multithreading entity-framework sql-server-ce sql-server-ce-4

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

SqlDataSource和存储过程调用问题

我偶然发现了一个问题,无法自己弄明白.希望有人能帮我解决它.

所以,我在SQL Server 2005数据库中有一个简单的存储过程

CREATE PROCEDURE spTest
  @pin varchar(128)
AS
BEGIN
  SELECT @Pin as Param
END
Run Code Online (Sandbox Code Playgroud)

和一个带有SqlDataSourceGridView应用程序中的控件的asp.net页面(VS2008)

<asp:SqlDataSource 
  ID="sds2" 
  runat="server" 
  ConnectionString="..."
  SelectCommand="spTest"      
  SelectCommandType="StoredProcedure"
  >
  <SelectParameters>
    <asp:QueryStringParameter Name="pin" QueryStringField="pin" DbType="String"/>
  </SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="gv" runat="server" DataSourceID="sds2"></asp:GridView>
Run Code Online (Sandbox Code Playgroud)

如您所见,代码很简单.不过,如果我不打扰在url上指定pin(.../Default.aspx而不是.../Default.aspx?pin=somevalue)或指定一个空行(.../Default.aspx?pin=),则不会对存储过程进行任何调用(我使用SQL Server Profiler进行检查).

而且,如果我用QueryStringParameter简单的替换

<asp:Parameter Name="pin" DbType="String" />
Run Code Online (Sandbox Code Playgroud)

并且不指出DefaultValue值,重复该情况并且不对存储过程进行任何调用.这种行为的原因是什么?

我是asp.net的新手,可能会忽略一些东西,但我甚至尝试以编程方式而不是声明性地在代码隐藏文件中执行相同操作,结果是相同的.我唯一能发现的是,在这种情况下,一个Selecting事件SqlDataSource被触发,但事实Selected并非如此.也许会出现某种错误?

无论如何,任何形式的帮助将不胜感激.

sql asp.net stored-procedures

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

删除除了TOP 1

有没有办法删除表中除一个(随机)行之外的所有行,而不在DELETE语句中指定任何列名?

我正在尝试做这样的事情:

CREATE TABLE [dbo].[DeleteExceptTop1]([Id] INT)
INSERT [dbo].[DeleteExceptTop1] SELECT 1
INSERT [dbo].[DeleteExceptTop1] SELECT 2
INSERT [dbo].[DeleteExceptTop1] SELECT 3

SELECT * FROM [dbo].[DeleteExceptTop1]

DELETE
FROM [dbo].[DeleteExceptTop1]
EXCEPT
SELECT TOP 1 * FROM [dbo].[DeleteExceptTop1]

SELECT * FROM [dbo].[DeleteExceptTop1]
Run Code Online (Sandbox Code Playgroud)

决赛SELECT应该产生一行(可以是三行中的任何一行).

sql t-sql sql-server sql-server-2005

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

SQL FOR XML PATH列表和COUNT

我有一张桌子如:

|Date         |Name|
--------------------
|'20-May-2011'|Bob |
|'20-May-2011'|Fred|
|'20-May-2011'|Jim |
|'21-May-2011'|Bob |
|'21-May-2011'|Ed  |
|'22-May-2011'|Bill|
Run Code Online (Sandbox Code Playgroud)

我需要一个查询来返回:

|Date         |Count|Names           |
--------------------------------------
|'20-May-2011'|    3|'Bob, Fred, Jim'|
|'21-May-2011'|    2|'Bob, Ed'       |
|'22-May-2011'|    1|'Bill'          |
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要一个列表和按日期的名称计数.我能想到的最好的是:

SELECT list.[Date], [Count], [Names]
FROM (
    SELECT  [Date], 
            STUFF((
                SELECT ', ' + [Name]
                FROM #table t2
                WHERE t2.[Date] = t.[Date]
                ORDER BY [Name]
                FOR XML PATH('')
            ), 1, 2, '') AS [Names]
    FROM #table t
    GROUP BY [Date]
) [list]
INNER JOIN (
    SELECT  [Date], 
            COUNT(*) AS [Count] …
Run Code Online (Sandbox Code Playgroud)

sql-server for-xml-path

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

检查Dispatcher.CurrentDispatcher.Thread.ManagedThreadId后的CollectionView NotSupportedException

我正在尝试用来Task.Factory.StartNew()运行后台操作.部分后台操作更新ObservableCollection中保存的对象.我正在使用从ObservableCollection派生的自定义类,以便OnCollectionChanged()在更改集合中某个对象上的属性时触发(请参阅/sf/answers/367977921/).如果CollectionView绑定了ObservableCollection,那么我得到一个异常:

System.NotSupportedException:这种类型的CollectionView不支持从与Dispatcher线程不同的线程更改其SourceCollection.

我试图避免这个异常,所以我添加了一些代码,只有OnCollectionChanged()在UI线程上运行才会触发.但不知怎的,我仍然得到例外..

这是我的ItemPropertyChanged()方法:

void ItemPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    var a = new NotifyCollectionChangedEventArgs(
        NotifyCollectionChangedAction.Reset);

    if (Thread.CurrentThread.ManagedThreadId
         == Dispatcher.CurrentDispatcher.Thread.ManagedThreadId)
    {
        OnCollectionChanged(a);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是完整的例外:

System.AggregateException was unhandled
  Message=A Task's exception(s) were not observed either by Waiting on the Task or accessing its Exception property. As a result, the unobserved exception was rethrown by the finalizer thread.
  Source=mscorlib
  StackTrace:
       at System.Threading.Tasks.TaskExceptionHolder.Finalize()
       Message=This type of CollectionView does not support …
Run Code Online (Sandbox Code Playgroud)

c# wpf multithreading .net-4.0 task-parallel-library

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