Insert 문에서 형식화 된 데이터 집합을 사용하고 있습니다. NULL 값을 허용하도록 정의 된 smalldatetime 필드가있는 테이블이 있습니다. .NET 2.0 FormView에서 삽입 할 때 "SqlDateTime 오버플로가 발생합니다. 1/1/1753 12:00:00 AM과 12/31/9999 11:59:59 PM 사이 여야합니다."형식화 된 데이터 집합에서 SqlDateTime 오버플로가 발생했습니다. 삽입
지금, 나는 this post을 읽었습니다, 그것이 null 허용 OBJ를 받아 들여야처럼
global::System.Nullable<global::System.DateTime> DoB
그래서, 그것은 보이는 클래스 생성자에 전송으로 매개 변수가 정의된다. 또한 생성 된 코드는 전송 된 값을 테스트합니다.
try {
returnValue = command.ExecuteScalar();
}
그래서, 내 질문은 생각 : 나는 형식화 된 데이터 집합 빈을 설정하는 데 사용할 어떻게 생성 SqlClient.SqlCommand.ExecuteScalar()가 실행될 때 특히
if ((DoB.HasValue == true)) {
command.Parameters[6].Value = ((System.DateTime)(DoB.Value));
}
else {
command.Parameters[6].Value = global::System.DBNull.Value;
}
는 오류가 발생 값 (FormName에서 CommandName = 삽입)을 데이터베이스의 null로 전달합니까?
추가 추가 조사 : 문제의 일부는 여기에서 디버깅 할 수 없습니다. 해결 방법으로 객체를 복사하고 내 객체를 만들었습니다. 형식화 된 데이터 집합은 테이블 어댑터에 대한 부분 클래스를 만들기 때문에이 테이블을 탭하여 Insert 개체의 복제본을 추가했습니다. 이를 통해 중단 점을 설정하고 값이 무엇인지 확인할 수있었습니다. 파트 II : FormViewInsertEventArgs를 보면 날짜가 null로 전송됩니다. 그러나 Insert 메소드와 비교하면 {1/1/0001 12:00:00 AM}으로 바뀌 었습니다 ... 더 많은 작업이 필요합니다 ... –
좋아, 버그가있을 것입니다. MS가 반사 루틴을 구현 한 방식. 내 메소드의 매개 변수 유형을 string으로 변경하면, 공백으로 처리됩니다. Nullable을 평가하는 경우 nix = ""; 나는 * null *을 얻는다. 메서드를 호출하는 매개 변수 목록을 만들기 때문에 ObjectDataSourceMethod GetResolvedMethodData() 호출에 잘못된 것이 있어야합니다. 어딘가에, 나는 새로운 Nullable이 아닌 새로운 DateTime()을 수행하고 있다고 생각한다. (). 나는 그것을 찾을 시간이 없다. –