2016-09-12 1 views
0

ある私が受け取る例外メッセージは単純です:SQLDATETIMEオーバーフローとすべてのDateTimeフィールドは有効な

SQLDATETIMEオーバーフローは、1753年1月1日午前12:00:00および12/31/9999 12:59の間でなければなりません:59 PM``

これは、LINQ to SQLのを使用してVB 2013のコードは次のとおりです。

Dim BQCust = (
    From c In FinDB.Customers 
    Where c.Customer_Account = 2000223).FirstOrDefault 
FinDB.SubmitChanges(ConflictMode.ContinueOnConflict) 

この例で行われた変更はありませんでした。私は、CustomerタイプのBQCustオブジェクト内の6つの日時フィールドをすべて手動でチェックし、エラー条件に一致するものはありません。それらのうち1つを除くすべてがNullを許可するようにフラグが立てられます。 1には#5/14/2016の9:20:03 AM#の値はありません。また、それらをすべて取得してSQL DBテーブルに含めることが有効である必要はありませんか?どのようなデータがこの例外を引き起こしていますか?

CREATE TABLE [dbo].[Customers](
    [RecIdent] [int] IDENTITY(1,1) NOT NULL, 
    [Customer Account] [decimal](18, 0) NOT NULL, 
    [Customer Name] [varchar](255) NULL, 
    [Company] [varchar](255) NULL, 
    [Customer Status] [varchar](255) NULL, 
    [Address 1] [varchar](255) NULL, 
    [Address 2] [varchar](255) NULL, 
    [City] [varchar](50) NULL, 
    [State] [varchar](50) NULL, 
    [Zip Code] [char](10) NULL, 
    [County] [varchar](50) NULL, 
    [Date Created] [datetime] NULL, 
    [Account Type] [varchar](255) NULL, 
    [Sales Representative] [varchar](50) NULL, 
    [Renewal Date] [datetime] NULL, 
    [Account Manager] [varchar](50) NULL, 
    [Acceptance Date] [datetime] NULL, 
    [Voided Date] [datetime] NULL, 
    [Expiration Date] [datetime] NULL, 
    [LastChanged] [datetime] NOT NULL CONSTRAINT [DF_Customers_LastChanged] DEFAULT (getdate()), 
CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED 
+0

dbからの検索、修正、およびdbへの転送から完全なコードを投稿する必要があるかもしれません。既定の.NET DateTime値がSqlServerのdatetimeの最小値に違反する0001/01/01であるため、datetime値が失われる可能性があります。 –

+0

文字通り、問題を特定するために、データを取得した直後にすぐに提出しようとしました。間に変更はありませんでした。私はデバッグを使用してCustomerオブジェクトを表示しました。 DateCreated:11/1/1996、RenewalDate:2015年12月7日、VoidedDate:NULL、ExpirationDate:2014年12月7日、LastChanged:2015年5月14日の値は次のとおりです。 – Ebassador

答えて

0

.NETで0001-01-01を意味し、デバッガでVoidedDate = NULL (Nothing)を持っている場合ことに注意してください。

あなたは、デバッグデータテーブルにデータを選択してみてください、その後、まったく同じデータテーブルで更新したい場合、.NET

でDateTimeオブジェクトにはnullではありません。

+0

私はそれが信じがたいことがわかります。テーブルはNULL値を許すように定義されており、このコードは何ヶ月も働いています。ほとんどのアカウントはVoidedDateフィールドにヌル値を持ちます。なぜ今これは問題になっているのですか? – Ebassador

+0

FinDBはLinqがSQLに使用するDataContextです。 IDEで、VoidedDateプロパティはNullable = Trueを示します。 – Ebassador

+0

システム/バージョンのアップグレードはありますか?カスタムオブジェクトクラスの変更?これはすべての記録に起こるのでしょうか、それとも単なる記録に起こりますか –

0

別のStackOverflowスレッドで鋭敏な観察が見つかりました。

SubmitChanges()は、最後に SubmitChanges()を呼び出したか、またはコンテキストを作成して以降のすべての変更を適用します。 の変更内容は、db.GetChangeSet()を参照することで判断できます。影響を受けるオブジェクトの 列が原因である可能性があります。たとえば、 のいずれかのdatetimeにDateTime.MinValueの既定値が設定されている場合、SQL Serverの範囲外の値は です。 - mellamokb Apr 17 '13 at 16:11

これは私の問題です!私はBQCustの新しい値を得る前に提出を試みましたが、まだエラーがありました。以前はGetChangeSetメソッドを使用していませんでしたが、今すぐ使用します。助けてくれてありがとう!

関連する問題