2016-08-01 2 views
2

나는 날짜가있는 테이블과 해당 날짜에 대한 다양한 데이터가 있습니다.테이블 어댑터가 내 날짜 열의 문자열에 캐스트를 강제로 수행하는 이유

WKDWKDDATE8 WKDDAYNM WKDAGENO WKDDAYNO WKDDATE6 WEEKNO WEEKRANGE  AWEEK 
2019-05-15 WEDNESDAY 43580  3   AJ0515  384  05/12 - 05/18 NULL 
2019-05-16 THURSDAY 43581  4   AJ0516  384  05/12 - 05/18 NULL 

과를 heres 내 WKDDATE8 필드가 Date입니다 볼 수 있듯이 내 테이블

CREATE TABLE [dbo].[WKD](
[WKDDATE8] [date] NOT NULL, 
[WKDDAYNM] [varchar](10) NOT NULL, 
[WKDAGENO] [int] NULL, 
[WKDDAYNO] [int] NULL, 
[WKDDATE6] [varchar](6) NOT NULL, 
[WEEKNO] [int] NULL, 
[WEEKRANGE] [varchar](20) NULL, 
[AWEEK] [varchar](1) NULL, 

의 모습. 내 C# 응용 프로그램에서 SELECT * FROM WKD WHERE WKDDATE8 = @WKDDATE8을 사용하여 WKDDATE8에서이 테이블을 쿼리하려면 tableadaptors을 사용하고 있지만 어떤 이유로 인해 테이블에 http://imgur.com/a/cO5FA 문자열이 필요합니다.

이제는 이것이 실망하게됩니다. 나는 수동으로 문자열에서 datetime으로 디자이너를 변경하고 실행할 수 있습니다,하지만, 잘 작동하지만 다시 실행하고 쿼리가 문자열을 원하기 때문에 빌드 오류가 발생할 수 있습니다, 만약 내가 문자열로 가자면, 나는 명백한 cannot convert from 'System.DateTime' to 'string'.

나는 왜 내 프로그램이 문자열을 원하는지에 대해 완전히 바보 취급을 당하고 잃어버린다.

E : 이것은 문제를 일으키는 코드입니다. 나는이 코드를 작성하지 않았다. 그것은 다시 두 번째 빌드에 변경됩니다대로 무의미 변경, 난 정말

 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")] 
    [global::System.ComponentModel.Design.HelpKeywordAttribute("vs.data.TableAdapter")] 
    [global::System.ComponentModel.DataObjectMethodAttribute(global::System.ComponentModel.DataObjectMethodType.Select, false)] 
    public virtual CACTUSDataSet.WKDDataTable GetDataByWKD8(string WKDDATE8) { 
     this.Adapter.SelectCommand = this.CommandCollection[1]; 
     if ((WKDDATE8 == null)) { 
      throw new global::System.ArgumentNullException("WKDDATE8"); 
     } 
     else { 
      this.Adapter.SelectCommand.Parameters[0].Value = ((string)(WKDDATE8)); 
     } 
     CACTUSDataSet.WKDDataTable dataTable = new CACTUSDataSet.WKDDataTable(); 
     this.Adapter.Fill(dataTable); 
     return dataTable; 
    } 
+0

소스 코드는 어디에 있습니까? – Drew

+0

TableAdaptor의 열이 "DateTime"유형으로 설정되어 있는지 확인하십시오. 비주얼 편집기를 사용하는 경우 열 이름을 클릭하기 만하면 속성 창에 유형 옵션이 있어야합니다. –

+0

@BenAbraham – Multinerd

답변

3

데이터 집합 디자이너 날짜 매개 변수에 대한 문자열 인수를 생성 야해 때 문자열로 내 열 주조 볼 수 있습니다.

테이블 어댑터 및 GetDataByWKD8 명령의 경우 DataSet을보십시오. @WKDDATE8DbType은 다음 DbtypeDateTimeDate에와 ProviderType을 변경 AnsiString 같은 문자열 유형 인 경우 매개 변수에서 확인 후 채우기 명령 유형 DateTime의 입력을 받아들입니다.

Designer에서 쿼리를 강조 표시하고 속성 탭을 확인하십시오. Properties 컬렉션을 누르면 DbType이 AnsiString으로 설정된 대화 상자가 나타납니다. 필요한 경우 목록 하단에 DateTime2가 있습니다.

enter image description here

+0

이것은 디자이너 문제를 해결하지 못합니다. 최근의 변경 사항입니다. 기존의 XSD와 관련하여 문제가 발생했기 때문입니다. 이제 모든 DateTime2 열은 내가 할 수있는 수동에 관계없이 이러한 일이 발생합니다. 짜증나. –

+0

신경 쓰지 마라.이 대답은 그것을 분명히했다. - http : // stackoverflow.com/questions/33888920/select-parameters-types-for-select-queries-that-use-table-valued-functions –

+0

분명히 xml 또는 C# 코드를 변경하면 안됩니다. 디자이너를 사용하는 것입니다. –