2011-10-20 37 views
1

ここで問題を解決しています。私はデータをiにアップロードしているC#.NETアプリケーションを持っています。 1つのアプリケーションでは、DDS(古い習慣は死なない)として定義されたファイルを時間フィールドと共に持っています。この新しいアプリケーションでは、DDLを使用してファイルを作成していますが、時間フィールドもあります。私は基本的に、作業アプリケーションから新しいアプリケーションにラインをコピーして貼り付けたが、まだ動作しません。私が見ることのできる唯一の違いはDDS対DDLです。だれかが何らかの違いがあることを確かめることができますか?DDS時間とDDL時間

DDL:

CREATE TABLE EGOVLOG.TRANYYMMDD ( 
    ... 
    PAYMENTDATE FOR COLUMN PAYDATE DATE NOT NULL DEFAULT CURRENT_DATE , 
    PAYMENTTIME FOR COLUMN PAYTIME TIME NOT NULL DEFAULT CURRENT_TIME , 
    ...  
     PRIMARY KEY(ID)) 
     RCDFMT TRANYYMMDD; 

DDS:

A   RSSIGNDATE  L   ALIAS(SUPERVISOR_SIGNED_DATE) 
A          COLHDG('SUPERVISOR' 'SIGNED DATE') 
A          TEXT('SUPERVISOR SIGNED DATE') 
A   RSSIGNTIME  T   ALIAS(SUPERVISOR_SIGNED_TIME) 
A          COLHDG('SUPERVISOR' 'SIGNED TIME') 
A          TEXT('SUPERVISOR SIGNED TIME') 

ワーキングライン:

// Outputs "15.21.47" 
cmd.Parameters.Add("@SUPERVISOR_SIGNED_TIME", iDB2DbType.iDB2Time).Value = 
    leaveRequest.SupervisorSignedDateTime.ToString("HH.mm.ss"); 

非作業ライン:

// Outputs "15.21.47" 
cmd.Parameters.Add("@PAYMENTTIME", iDB2DbType.iDB2Time).Value = 
    transactions.Transaction.TransactionTimestamp.ToString("HH.mm.ss"); 

leaveRequest.SupervisorSignedDateTimetransactions.Transaction.TransactionTimestampは、同じC#タイプ(DateTime)です。

エラーがある:

IBM.Data.DB2.iSeries.iDB2ConversionExceptionが

メッセージ未処理であった=変換エラーが発生しました。

ソース= IBM.Data.DB2.iSeries

MessageCode = 111

MessageDetails =パラメータ:13

更新:は謎に追加するには、私が走ったのインサート手動で、これは動作します。

INSERT INTO TABLE VALUES(...'10/19/2011', '15:21:47', ...) 
+0

'TransactionTimestamp'が本当に' DateTime'またはそれが 'TIMESTAMP'フィールド(すなわち、行ベースのバージョン識別子)ですか? – Yuck

+0

呼び出しているストアドプロシージャでは、SUPERVISOR_SIGNED_TIMEとPAYMENTTIMEの両方がまったく同じデータ型ですか? – NotMe

+0

@Yuckそれは私のために悪い名前の選択だった... 'TransactionTimestamp'は' DateTime'です。 –

答えて

3

問題は、パラメータの順序および/または日付の形式でした。

Iはまた、コードは、上述の変更:

cmd.Parameters.Add("@PAYMENTDATE", iDB2DbType.iDB2Date).Value = transactions.Transaction.TransactionTimestamp.ToString("yyyy-MM-dd"); 
cmd.Parameters.Add("@PAYMENTTIME", iDB2DbType.iDB2Time).Value = transactions.Transaction.TransactionTimestamp.ToString("HH.mm.ss"); 
+3

あなたの答えを編集して、 'date'パラメータを最初に指定し、次に' time'を指定する必要があることをより明確にしてください。可能であれば(そしてそれが存在する)、これは、この問題のマニュアルを参照することができれば、より良い答えとなります。おそらく、これはC#_library_の問題であり、DB2の問題ではないようです。 –