2017-09-22 16 views
2

Sqlite에서 Firedac으로 날짜 필드를 읽을 때 변환 오류가 발생합니다. 필드는 날짜라고하지만 문자열 항목이 있습니다 (yyyy-mm-dd). Datetime Format = string에 대한 옵션을 설정했지만 null 값이 처리되는 동안 빈 값 (= '')이 처리 방법을 파악할 수없는 오류를 생성한다는 것을 발견했습니다.Delphi/Firedac에서 Sqlite로부터 날짜 읽기

+0

몇 가지 코드를 게시 할 수 있습니까? Sqllite는 날짜를 문자열 또는 정수로 저장하므로 변환을해야 할 수도 있습니다. 우리가 어떤 코드를 볼 수 있다면 아마 우리가 도울 수 있습니다 .. –

+0

음, 빈 문자열은 유효한 날짜 문자열이 아닙니다. 그들에게 무슨 일이 일어나야합니까? –

답변

2

StrsEmpty2Null 옵션을 사용하면 모든 빈 문자열을 자동으로 NULL 상태로 변환 할 수 있습니다. 그러나 이는 데이터 구성 요소가 처리하는 모든 값과 매개 변수에 적용됩니다. 그래서 치료법이 아닙니다.

당신이 무엇을하고 있는지 잘 모르겠지만, 일반적으로 NULL은 상태이고 값을 나타내지 않는 상태이기 때문에 NULL 상태를 값으로 변환 할 수 없습니다. 그래서 당신은 빈 문자열을 날짜로 변환 할 수 없습니다.

그래서 문자열 변환에 대한 가치에 대해 더 자세히 설명하려고합니다. 따라서 적절한 방법을 제안 할 수 있습니다. SQLite의 경우 DATE 의사 데이터 형식을 사용하고 내장 된 서식 지정 식을 통해 값을 변환하는 것이 좋습니다.

+0

감사합니다. StrsEmpty2Null 옵션으로 문제가 해결되었습니다. 나는 모든 Sqlite 데이터베이스에서 테이블과 필드를 나열하고 쿼리를 실행할 수있는 응용 프로그램을 만들고 있습니다. Firedac이 날짜 필드에서 빈 문자열을 처리 할 수 ​​없었기 때문에 나를 교수형에 처하게했습니다. 확실히, 목표로 삼은 DB 응용을 위해, DB는 널과 빈 문자열의 혼합을 가져서는 안된다. –

+0

여러분을 환영합니다! 그러나 글쎄, 당신이 설명하는 도구는'StrsEmpty2Null' 옵션을 사용하는 것이 좋지 않습니다. (왜냐하면 모든 빈 문자열 값과 매개 변수 값을 NULL로 지정하기 때문입니다). 그런 응용 프로그램의 사용자가 어떤 값이 비어 있고 어떤 것이 NULL인지보고 싶다면 어떻게해야합니까? 더 나은 방법을 찾아 보겠습니다. 데이터 집합 구성 요소를 어떻게 사용하는지 자세히 설명해 주시겠습니까? 영구 필드를 구축합니까? 아니면 무엇이 언제 예외를 발생 시키거나 어떤 문제를 일으키는가? – Victoria

+0

StrsEmpty2Null은 빈을 표시하고 null도 같지만 여전히 빈 (x = '') 또는 null (x = null)을 별도로 쿼리 할 수 ​​있습니다. 그러나 date = '2009-02-29'와 같은 진절머리 나는 데이터는 도움이되지 않습니다. –