小编Moh*_*oth的帖子

有没有更好的方法来处理强制转换异常?

考虑以下功能:

public enum Operator
{
    EQUAL = 1,
    GREATER_THAN = 2
}

public class checkString
{
    public static bool isValid(string inputString, string checkString, Operator operation)
    {
        switch (operation)
        {
            case Operator.EQUAL:
                if (inputString == checkString)
                    return true;

                break;

            case Operator.GREATER_THAN:

                // Numeric check for greater than
                try
                {
                    double inputDouble, checkDouble;

                    inputDouble = Convert.ToDouble(inputString);
                    checkDouble = Convert.ToDouble(checkString);

                    if (inputDouble > checkDouble)
                        return true;
                }
                catch (Exception) 
                { }

                // Date check for greater than
                try
                {
                    DateTime inputDate, checkDate;

                    inputDate …
Run Code Online (Sandbox Code Playgroud)

c# casting exception-handling

8
推荐指数
2
解决办法
1891
查看次数

C#LINQ to Objects:Group By/Sum帮助

在事务对象列表中,我尝试按BatchNo进行分组,然后对Amounts进行求和.

public class Extract
{
    // Notable fields in TRANSACTION are: String mBatchNo, String mAmount
    private List<Transaction> Transactions;

    public void testTransactions()
    {

        // Sum of amounts grouped by batch number
        var sGroup = from t in Transactions
                     group t by t.mBatchNo into g
                     select new { batchNo = g.Key, 
                                  totalAmount = g.Max(a => (Int32.Parse(a.mAmount)))};
    }
}
Run Code Online (Sandbox Code Playgroud)

此时,我通过locals窗口进入代码查看,看看我的结果集是针对我导入到此对象的文件进行检查的.

文件中的最后一批有3条记录,每条记录100个,可以看到钻入到事务列表对象中.但是向下钻取到sGroup结果会发现同一批次总数为100(应为300).我在这个查询中搞砸了什么?

请注意,我已将其存储为字符串,因为我们在8字符字段的左侧填零.出于出口原因,我决定将其存储为字符串.虽然这可以(也可能会)改变,但它没有回答我的问题:如何使这个查询通过BatchNo将总和聚合成集合?

c# linq-to-objects

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

关键字不支持"提供商"错误

c#.Net 3.5带有SQL Server 2000后端,我的app.config文件中有一个连接字符串,如下所示

<add name="MFG_ConnectionString" 
  connectionString="Provider=SQLOLEDB;Data Source=MFG;Persist Security Info=True;Password=kb1234;User ID=kb;Initial Catalog=MFG" 
  providerName="System.Data.OleDb" /> 
Run Code Online (Sandbox Code Playgroud)

此连接字符串是使用数据源配置向导构建的.使用此方法创建数据集并拖动DataSource元素以创建DataGridView将填充并成功允许所有CRUD操作.

但是,我不打算通过数据绑定表单对其进行更改.我希望在代码的幕后做这件事.由于这是SQL Server的旧版本,我假设我必须使用OleDbConnection和其他OleDb对象来完成工作.当我尝试执行以下操作时:

OleDbConnection visualConnection = new OleDbConnection(ConfigurationManager.ConnectionStrings["MFG_ConnectionString"].ConnectionString);
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:"关键字不支持'提供者'.
但是如果我拿出提供者我被告知我必须提供一个.不知道为什么这可以通过表单上的数据集工作但我无法创建自己的连接对象.. . 有什么想法吗?

编辑应该注意的是,当我最初创建与此数据库的连接时,它告诉我,我尝试连接的数据库不支持SqlConnection,我必须选择另一个(我当时选择OleDb).我很奇怪这个连接在幕后工作,如连接字符串中没有提供者的SqlConnection,但数据集然后中断...

c# connection-string sql-server-2000 .net-3.5

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

自定义控件不会在Visual Studio Designer中更新

我正在创建一个自定义控件来设置单选按钮(不,它不一定是单选按钮.我只是想学习如何做到这一点,所以我可以制作一些更复杂的东西,可能包含多个通过Items属性添加的控件列表(类似于其他一些控件).

我可以构建项目,将其从组件面板拖到窗体上,并通过Items属性添加单选按钮.不幸的是,除非您要么:

  • 重建项目2-3次
  • 关闭并重新打开设计器中的表单

起初我有一个逻辑,在Initialize之后将它们放在构造函数中包含的表单上但是没有用,所以我转到了Form_Load.

我错过了什么?以上选项只是短期解决方法,而不是解决方案.

RBLTest.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WFCL_Library
{
    public partial class RBLTest : UserControl
    {
        private List<RadioButton> _items;

        private int leftSpacing = 100;
        private int topSpacing = 25;

        public RBLTest()
        {
            _items = new List<RadioButton>();
            InitializeComponent();
        }

        private void RadioButtonList_Load(object sender, EventArgs e)
        {
            int curLeftPos = 0;
            int curTopPos = 0;
            foreach (RadioButton rb in _items)
            {
                rb.Location = new Point(curLeftPos, …
Run Code Online (Sandbox Code Playgroud)

c# .net-3.5 visual-studio-2008 windows-forms-designer winforms

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

ADODB连接字符串:工作组信息文件丢失?

我在访问中有一些数据源,我需要以编程方式连接到幕后进行操作并远离用户.

所述数据源有一个密码'pass',因为我将在这里调用它.使用此连接方法我尝试使用open方法时出错

Dim conn as ADODB.Connection
Set ROBBERS.conn = New ADODB.Connection
conn.open "Provider=Microsoft.Jet.OLEDB.4.0;" _
        & "Data Source=\\pep-home\projects\billing\autobilling\DPBilling2.mdb;" _
    & "Jet OLEDB:Database Password=pass;", "admin", "pass"
Run Code Online (Sandbox Code Playgroud)

"无法启动您的应用程序.工作组信息文件丢失或由其他用户独占打开."

由于计划进入2007年,我们没有使用也没有通过访问使用工作组标识文件.数据源上的数据库密码是通过Set Databa Password设置的,该密码必须在独占打开时完成.

我花了很长时间改变我的连接选项,在哪里放置密码等,或者找不到正确的格式,或者(为什么我在这里问)我认为可能还有其他未知的我必须设置这样做.有人在那里得到一些有用的信息吗?

passwords ms-access connection-string adodb

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

在visual studio中,当您在托管语言中没有属性更改时,如何破坏调试器(如C#)

我有一个奇怪的情况,其中的东西是将主MDI表单的TopMost属性设置为true.经过多次试验和错误,我们非常肯定这必须来自第三方库,但它不在我们期望的任何地方.

如果我们可以在设置此属性时将应用程序设置为在调试器中中断,那么修复此问题非常容易.但是,这个属性是由WinForms库定义的,所以我们不能只在那里放置一个断点.

对于你正在使用库而你没有源代码的情况是非常宝贵的,但我担心这个问题没有解决办法,因为托管语言不支持数据断点(据我所知) .

那么,在C#中,当你无法在setter中设置断点时,你知道如何在属性发生变化时中断吗?这可以很容易地解决许多边缘案例问题,其中的事情因您无法预料的原因而发生变化.

c# debugging winforms .net-4.5

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

即使在docmd.close之后,表格仍然锁定了我的表格

对不起文本家伙的墙,但这个需要expliaining,太多的代码发布...

我在需要数据输入的方法中将固定宽度文件导入访问.我使用transferText将文件导入两个规范(一个是全局的,另一个是特殊情况).

我有一个函数,它使用DAO循环遍历TableDefs中的所有Field对象,以构建包含AutoIncrement PK的重复表,以便我能够编辑这些记录.我用INSERT INTO将数据推送到该表中.

效果很好.发现错误,用户进入数据输入以手动纠正它们,这些节拍通过筛选400个字符行并按照预期的方式重新组织所有内容.效果很好!

问题:当数据条目发生变化时,会按下一个提交按钮,该按钮调用表单外部模块内的函数.它关闭数据输入表单并将信息推回​​到原始表减去自动增量PK,并且被支持DROP复制表的ID,并生成一个新的再次搜索错误...

它推回原来很好,但它不会DROP ID表.总是返回给我一条消息,表明该表已被锁定.我注意到表被无限制地锁定,直到所有函数/子退出.在任何时候单步执行代码我都无法手动删除它,一旦执行完成,我就可以删除它.

我假设因为我通过表单中的命令调用它,所以在所有代码完成并且表单终止可以被调用并执行其操作之前不会释放锁.有什么想法吗?是的,这是非常野蛮但它运作良好,我只需要能够撕掉地球上的另一张桌子,这样我就可以重新制作更新的副本......

在最糟糕的情况下,我可以让用户关闭窗体并点击主窗体中的另一个按钮,但这在设计时考虑到了用户的合规性.然而,这现在我全神贯注,并希望至少找到一个解决方案,即使它不是最佳解决方案.

-编辑-

在这个问题中使用了两种形式

FormA (Role: Load in and search for problems)

Examine button is pressed that:

 - Uses TextTransfer based on predefined specs into tempExtract to
       import the file

 - DAO fires off on the Fields collection in tableDefs for
   tempExtract, creates new table tempExtractID

 - Performs searches through the file to find errors.  Errors are saved to
   a table Problem_t.  Table contains Problem_ID (Set from the ID field …
Run Code Online (Sandbox Code Playgroud)

ms-access locking create-table drop-table

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

SQL Server 2008 Mgmt Studio:使用子查询的任何内容附近都有错误的语法

我运行以下查询

SELECT * FROM
(
    SELECT * FROM Client
);
Run Code Online (Sandbox Code Playgroud)

我应该得到客户端中所有字段的列表,而不是我得到的

Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near ';'.
Run Code Online (Sandbox Code Playgroud)

我遇到这个问题的唯一原因是使用WITH子句编写视图,它给了我相同的错误.在此之前,已卸载SQL Server Management Studio 2005,并在其位置安装了2008 Management Studio Express.

知道为什么我不能做任何类型的子查询吗?通过New Query和Client表中的SELECT TOP 1000 ROWS尝试了这一点.

syntax subquery sql-server-2008

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

两个日期时间字段之间的SQL Server,无法正常工作

SQL Server 2005:

以下观点

  SELECT CONVERT(VARCHAR(20), keyedtimestamp, 101) as KeyedDate
    FROM TMSSTATFILE_STATS a                                                                
   WHERE (CONVERT(VARCHAR(20), a.KeyedTimestamp, 101) BETWEEN '03/01/2011' And '03/31/2011')  
ORDER BY KeyedDate
Run Code Online (Sandbox Code Playgroud)

截止日期为2011年3月2日至2011年3月31日.

如果我将第一个日期更改为03/00/2011

  SELECT CONVERT(VARCHAR(20), keyedtimestamp, 101) as KeyedDate
    FROM TMSSTATFILE_STATS a                                                                
   WHERE (CONVERT(VARCHAR(20), a.KeyedTimestamp, 101) BETWEEN '03/00/2011' And '03/31/2011')  
ORDER BY KeyedDate
Run Code Online (Sandbox Code Playgroud)

它现在提供2011年3月1日至2011年3月31日的数据

KeyedTimestamp字段是DateTime,并且有时间与这些记录相关联.2011年3月31日的所有记录都已计算在内.我知道我可以通过在第二个日期之间提供最大时间来实现这一点,所以我不是在寻找替代where子句,而是要理解为什么它忽略了第一个的记录,即使它合并了从31日开始.

它几乎就像它在3月1日23:59:59检查,我希望我可以消除这种检查,我只关心日期,而不是时间

sql-server between

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

运行时能否将Crystal Report中的字段移动到另一个位置?

我正在为各种客户生成发票。一些客户有销售津贴。对于这些客户,我想显示一个额外的销售津贴单位和总费用列。

如果任何最大销售成本总计为= 0,我想将字段移到左侧并在右侧显示销售津贴

当客户有销售津贴时

------------------Headings extend all the way across the report-----------------------------

Description   Qty    UOW      Client Unit Cost   Client Cost    Sales Unit Cost   Sales Cost
============================================================================================
Something       5   Each                $11.00        $55.00              $5.00       $25.00
More Stuff      2   Each                $20.00        $40.00              $5.00       $10.00
============================================================================================
Totals                                                $55.00                          $35.00
Run Code Online (Sandbox Code Playgroud)

当客户没有销售津贴时

------------------Headings extend all the way across the report-----------------------------

Description                                   Qty    UOW      Client Unit Cost   Client Cost
============================================================================================
Something                                       5   Each                $11.00        $55.00
More Stuff                                      2   Each                $20.00        $40.00
============================================================================================
Totals                                                                                $95.00
Run Code Online (Sandbox Code Playgroud)

我们的目标是将该功能放到一个报表中,而不必知道在何时以及何时获得销售津贴的情况下为哪个客户运行哪个报表。

我知道我们可以禁止使用字段,当我尝试合并时,根据放置字段的位置,中间的右边会出现空格,结果是不可接受的。当满足条件时,是否可以将字段移动到另一个LEFT位置?这将是整个报告,而不是在每个详细记录上都进行评估。

crystal-reports

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