2013-01-11 6 views
3

날짜가 dd.MM.yyyy와 같은 페이지에 표시되기를 원합니다. 나는 문화와 무관 한 이쪽을 좋아한다."dd.MM.yyyy"로 SqlDbType.Date에 TextBox 구문 분석

나는 그것을 올바르게 만드는 방법을 모르겠다.

cmd.Parameters.Add("@eventdate", SqlDbType.Date).Value = dateAddTxtBox.Text; 

형식의 예외 :

문자열이 나는 DateTime.ParseExact(dateAddTxtBox.Text, "dd.MM.yyyy", null) 나뿐만 아니라 System.Globalization.CultureInfo.InvariantCulture를 사용하여 같은 많은 조각을 시도 유효한 날짜 시간

로 인식되지 않았습니다. 아무것도 도와 줬어!

아니면 SQL 프로 시저 쪽에서 더 잘 수행 할 것인가?

<asp:TextBox id="dateAddTxtBox" runat="server" ReadOnly="True" /> 
<asp:CalendarExtender ID="AddTxtBoxCalendarExtender" runat="server" Enabled="True" TargetControlID="dateAddTxtBox" Format="dd.MM.yyyy" ... /> 

UPD :

약간의 언급 >>이 읽기 전용 텍스트 상자에 속성되었다 나는 패턴 내 텍스트 상자를 포맷하지 않은 상태

CREATE PROCEDURE add_history 
@user  VARCHAR(20), 
@eventdate DATE, 
... 
INSERT INTO History(userid, eventdate, ...) 
VALUES ((SELECT userid FROM Users.SUsers WHERE [email protected]), @eventdate, ...) 

모든

꽤 잘했다. 그것이 작동하지 않는 이유입니다!

이제는 ReadOnly="True"을 건너 뛰는 것이 맞습니까? 사용자가 상자에서 바로 날짜를 편집하는 것을 원하지 않습니다.

ReadOnly="True"

이 전혀 이해가되지 않습니다 : UPD2

. 그것은 정상적으로 작동합니다! 나는 이유를 모른다.

+2

나는이 DateTime.ParseExact ("1983년 12월 31일", "DD.MM.YYYY"널)을하려 할 때, 나를 위해 일했다. 중단 점을 넣고 텍스트 상자가 실제로 반환하는지 확인하십시오. 또한 같은 장소에서 똑같은 방식으로 시도해보십시오 (몇 가지 고정 날짜가 있음). 그래야 텍스트 상자 항목이나 모든 날짜에 문제가 있는지 알 수 있습니다. 그냥 시도하십시오 –

+0

하지만 TextBox와 함께하지 않습니다! 좋아, 그 이유를 찾았 어! – 84RR1573R

답변

2

SqlDbType.Date을 지정하지 마십시오. 대신 자동 감지에 의존, 그것은 작동합니다

System.DateTime dateValue = DateTime.ParseExact(...); 
command.Parameters.AddWithValue("@name", dateValue); 
+0

마지막으로 'ReadOnly'가 이유였습니다! 읽기 전용이 없으면 변환이나 구문 분석없이 작동합니다. 그대로. – 84RR1573R

+0

@sublay : 이상한. SQL 실행이 아닌 무대 또는 데이터 바인딩 단계를 파싱 할 때 문제가 있습니다. – abatishchev

+0

예, 이제는 정상적으로 작동합니다! 어쨌든 고마워! – 84RR1573R