小编Pie*_*ens的帖子

为什么VBA TypeOf运算符会失败

我已经和Excel 2007问题争吵好几天了.以下列出了我能想到的所有可能相关的事实:

  1. IDetailSheet是在VBA项目中声明的具有多个方法的类,它在其类初始化程序中引发错误,因此无法实例化(使其成为抽象).

  2. Option Explicit在所有模块中设置.

  3. VBA项目中的十个工作表实现 IDetailSheet并干净地编译(整个项目也是如此).

  4. CDetailSheets是在VBA项目中声明的类,它包装Collection对象并将Collection对象公开为IDetailSheet的Collection .它还公开了一些额外的方法来在所有集合中执行IDetailSheet的某些方法.

  5. 在其类初始值设定项(从Workbook _ Open事件处理程序调用并分配给全局变量)中,CDetailSheet执行以下代码以填充专用集合DetailSheets:

    Dim sht as EXCEL.WorkSheet
    For Each sht in ActiveWorkbook.Worksheets
      If TypeOf sht is IDetailSheet Then
        Dim DetailSheet as IDetailSheet
        Set DetailSheet = sht
        DetailSheets.Add DetailSheet, DetailSheet.Name
      End If
    Next sht
    
    Run Code Online (Sandbox Code Playgroud)
  6. 在某些功能区回调中,运行以下代码:

       If TypeOf ActiveWorkbook.ActiveSheet is IDetailSheet Then
          Dim DetailSheet as IDetailSheet
          Set DetailSheet = ActiveWorkbook.ActiveSheet
          DetailSheet.Refresh  *[correction]*
       End If
    
    Run Code Online (Sandbox Code Playgroud)
  7. 在识别出其他稳定性问题之后,所有ActiveX控件都已从工作簿中删除(最初有几十个).已创建Fluent Interface功能区以替换最初与ActiveX控件关联的功能.

  8. 公司模板中有一个Hyperion加载项,但未在此工作簿中使用.

完成所有操作后,运行工作簿时会出现以下症状: …

excel vba excel-2007 excel-vba

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

为什么EXCEL XLSM格式不再是有效的ZIP格式?

作为XLSM文件保存在Excel中的文件不再是有效的ZIP文件,因此无法编辑功能区.

在2014年5月23日或之前保存的XLSM文件可以重命名为.ZIP并进行编辑.

2014年5月23日之后保存的XLSM文件无法重命名.ZIP并进行编辑,而是生成该文件已损坏的存档的错误消息.Windows资源管理器和WinZip都会生成相同的错误情况,但错误消息会略有不同.

是的,文件中有宏; 但即使打开一个禁用宏(和VBA)的旧文件,立即保存为新名称会生成一个损坏的文件.

我还在我们公司组的其他2台机器上进行了测试,结果相同,因此我的工作站上没有损坏.

Office Diagnostics报告EXCEL没有问题.

对原因或解决方案的任何想法?

更新

让我们清楚我的测试过程:

  1. 我将5月23日保存的XLSM文件重命名为.ZIP; 这将创建一个压缩存档,WinZip和Windows资源管理器都可以成功打开.然后我撤消重命名以使文件再次成为XLSM.
  2. 我在EXCEL-2007中打开上面的文件,不启用宏或VBA.我用新的文件名保存为XLSM文件.
  3. 我将步骤(2)中保存的文件重命名为.ZIP文件.此文件不再在WinZip或Windows资源管理器中打开,但会生成上面的错误消息.
  4. 我在上面的两个同事的工作站上重复上面的步骤1到3 - 完全相同的结果.

更新#2
问题似乎在某种程度上与文件相关,因为保存空工作簿仍然可以正常工作.我会调查更多.

excel vba excel-2007 ms-office excel-vba

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

日期格式返回为mm/dd/yyyy hh:mm:ss AM/PM

我是一个全新的sql我的公司只是有点把我扔进去,并说这样做.所以任何帮助都非常感谢.我试图以mm/dd/yyyy hh:mm:ss AM/PM的格式得出日期,例如日期为09/26/2014 11:04:54 AM.我尝试过使用代码:

Select Convert(nvarchar,EntryDate,101)
From DB1
Run Code Online (Sandbox Code Playgroud)

然而,这将返回2014年9月26日.我也试过了

Select Convert(nvarchar,EntryDate,100)
From DB1
Run Code Online (Sandbox Code Playgroud)

但这将于2014年9月26日上午11:04返回

不知道从哪里开始.再一次感谢你的帮助.顺便说一下,我正在使用SQL Server 2012.

sql datetime date sql-server-2012

9
推荐指数
2
解决办法
6万
查看次数

clr的原因!JIT_New在PerfView CPU堆栈中

我使用PerfView调整应用程序,第二个最昂贵的项目目前标记为:

其他<< clr!JIT_New >>

占CPU的10%以上.即使对于后续运行的测试用例,这仍然存在.

任何人都可以确定哪些活动或代码实践可能导致动态生成需要JIT-ting的新代码?

.net c# performance perfview

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

int和null之间没有隐式转换

我有一个类,它具有如下的可空属性;

public class Sample
{
   public int? ID { get; set; }
   public string SampleName { get; set; }
   public bool? Active { get; set; }
   public DateTime? Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试做类似下面的事情;

foreach (DataRow tableItem in table.Rows)
{
        Sample sample = new Sample()
        {
            ID = tableItem["ID"] != DBNull.Value ? Convert.ToInt32(tableItem["ID"].ToString()) : null,
            SampleName = tableItem["SampleName"] != DBNull.Value ? tableItem["SampleName"].ToString() : null,
            Active = tableItem["Active"] != DBNull.Value ? Convert.ToBoolean(tableItem["Active"].ToString()) : null,
            Date = tableItem["Date"] != DBNull.Value ? …
Run Code Online (Sandbox Code Playgroud)

c# nullable implicit-conversion

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

是否有理由更喜欢这些实现中的一个而不是另一个

在他的PluralSight课程异步C#5中,Jon Skeet为名为InCOmpletionOrder的便利扩展方法提供了这种实现:

public static IEnumerable<Task<T>> InCompletionOrder<T>(this IEnumerable<Task<T>> source)
{
    var inputs = source.ToList();
    var boxes  = inputs.Select(x => new TaskCompletionSource<T>()).ToList();
    int currentIndex = -1;

    foreach (var task in inputs)
    {
        task.ContinueWith(completed =>
        {
            var nextBox = boxes[Interlocked.Increment(ref currentIndex)];
            PropagateResult(completed, nextBox);
        }, TaskContinuationOptions.ExecuteSynchronously);
    }

    return boxes.Select(box => box.Task);
}

private static void PropagateResult<T>(Task<T> completedTask,
      TaskCompletionSource<T> completionSource)
{
    switch(completedTask.Status)
    {
      case TaskStatus.Canceled:
          completionSource.TrySetCanceled();
          break;
      case TaskStatus.Faulted:
          completionSource.TrySetException(completedTask.Exception.InnerExceptions);
          break;
      case TaskStatus.RanToCompletion:
          completionSource.TrySetResult(completedTask.Result);
          break;
      default:
          throw new ArgumentException ("Task was not completed."); …
Run Code Online (Sandbox Code Playgroud)

c# asynchronous task-parallel-library

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

邮政编码产品查询| Haversine算法| 性能

我有一个应用程序,根据邮政编码搜索项目.

在搜索邮政编码时,我会返回来自该城市/邻居的所有产品(通过解析邮政/邮政编码完成).

我现在需要根据与原始邮政/邮政编码的距离对这些产品进行分类.

我在数据库中存储了Lat/Long,并计划使用Haversine公式计算与原始查询的apprx距离.

我的问题是,应该在哪里计算.在返回数据集之前,我应该在存储过程中执行此操作吗?

或者我应该使用我的Lat/Long返回我的数据集,并在返回用户之前计算它的服务器端.

可能需要执行最多1000次结果的计算.

c# sql sql-server haversine

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

String泛型参数是否被视为值类型或引用类型?

运行时文档中的MSDN Generics我注意到:

当首次使用值类型作为参数构造泛型类型时,运行时会创建一个专用泛型类型,其中提供的参数或参数将替换为MSIL中的相应位置.为每个用作参数的唯一值类型创建一次专用泛型类型.

泛型对参考类型的工作方式有所不同.第一次使用任何引用类型构造泛型类型时,运行时会创建一个专用泛型类型,其中对象引用将替换MSIL中的参数.然后,每次构造类型以引用类型作为其参数进行实例化时,无论它是什么类型,运行时都会重用先前创建的泛型类型的专用版本.这是可能的,因为所有引用都是相同的大小.

我是否正确地推断,尽管字符串数据类型在C#和CLR中都具有值类型语义,但使用字符串类型参数实例化的泛型类型将使用与其他引用类型相同的专用泛型类型,而不是比拥有自己的其他价值类型呢?无论哪种方式,这种行为都是相同的,因为V2引入了泛型?

c# generics

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

替代使用WHERE ... IN(...)进行慢速SQL查询

这实际上是更大的复杂查询的一部分.
根据查询计划,此语句上的排序支配较大查询的开销.
通过实现查询的这一部分,我确认它支配了成本.

    select [sID], ROW_NUMBER() over (partition by [sID] order by [wordPos]) [rn], [wordPos], [wordID]
      from [FTSindex] 
     where [wordID] in (428,2112)
  order by [sID], [rn] 
Run Code Online (Sandbox Code Playgroud)

从右到左:
- 索引寻求5%(IX_FTSindex_wordID_sID)
- 排序76%
- 平行度19%

CREATE TABLE [dbo].[FTSindex](
    [sID] [int] NOT NULL,
    [wordPos] [int] NOT NULL,
    [wordID] [int] NOT NULL,
    [charPos] [int] NOT NULL,
 CONSTRAINT [PK_FTSindex] PRIMARY KEY CLUSTERED 
(
    [sID] ASC,
    [wordPos] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = …
Run Code Online (Sandbox Code Playgroud)

t-sql sorting sql-server-2008

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

在显式接口实现的C#中实现==运算符

我已经定义了一个struct Coords,它显式地实现了三个接口,每个接口定义如下:

  public partial struct Coords
  {
    int           ICoordsUser.X          { get { return VectorUser.X; } }
    int           ICoordsUser.Y          { get { return VectorUser.Y; } }
    IntVector2D   ICoordsUser.Vector     { get { return VectorUser;   }
                                           set { VectorUser=value;    } }
    ICoordsCanon  ICoordsUser.Canon      { get { return this;         } } 
    ICoordsUser   ICoordsUser.Clone()    { return NewUserCoords(VectorUser);  }
    string        ICoordsUser.ToString() { return VectorUser.ToString(); }

    IEnumerable<NeighbourCoords> ICoordsUser.GetNeighbours(Hexside hexsides) { 
        return GetNeighbours(hexsides); 
    }
    int ICoordsUser.Range(ICoordsUser coords) { return Range(coords.Canon); }
  }
Run Code Online (Sandbox Code Playgroud)

与名字ICoordsCanon,ICoordsUser和 …

c# equality interface operator-overloading

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