자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Firemonkey listview Data 뿌려주거나 클릭 시 EvalError 발생.
2018.09.27 10:20
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요 간단한 안드로이드 앱 개발을 하고 있는데 에러가 발생하여 문의 드립니다.
웹호스팅서버의 MySQL 데이터베이스를 읽어와서 ListView에 뿌려주고 있는데 아래와 같은 에러가 발생을 하며 클릭시에도 동일한 에러가 발생하여 해결 방법을 알고 싶습니다.
LiveBinding은 아래와 같이 연결 되어 있으며
ListView1.Item.Detail에 연결된 데이터베이스의 'Date' 필드의 데이터 타입은 Date로 되어 있습니다.
윈도우즈 플랫폼에서는 에러가 발생 안하는데 안드로이드 플랫폼에서만 에러가 발생을 하고 있네요.
아 그리고 한가지 더 질문이 있습니다.
안드로이드환경에서 Formshow 이벤트에서 RestRequest1.Execute; 를 하면 앱을 로딩하다가 팅겨버리는데
초기 화면을 보여주면서 RestRequest1.Execute; 를 하여 결과값을 먼저 보여주고 싶을 때는 어떻게 해야 되는지
문의 드립니다.
댓글 4
-
험프리
2018.10.02 09:38
-
엔달
2018.10.02 14:11
문제 원인 파악은 되었습니다. DateEdit -> Edit 변경하니 에러 발생은 안하네요 말씀 하신 날짜 타입 포맷 인식 오류가 맞습니다.
RESTRequest1.Execute; 하여 읽어 온 데이터를 뿌리기전에 날짜 포멧 변경 후 뿌려야 되는데 Live Binding으로 연결이 되어 있어서
소스적으로 접근을 어떻게 해야될지 난감하네요. ㅠㅠ
BindSourceDB1 -> DatasSet -> FDMemTable1 -> 이벤트가 생성이 안되어서 어느 구문에 날짜 포맷 변경을 해야 되는지 알려 주심 감사
드립니다.
-
험프리
2018.10.11 09:47
날짜 포맷을 전체적으로 설정하는 기능은 다음과 같습니다.
FormatSettings.DateSeperator := '-';
FormatSettings는 날짜, 시간 등의 포맷을 설정하는 전역변수 구조체입니다. 다른 필드들도 확인해보시기 바랍니다.
-
험프리
2018.10.31 11:20
LiveBinding의 CustomFormat을 이용하는 것도 가능합니다.
위 이슈가 발생하는 원인은 다음과 같습니다.
1) 데이터셋(TFDMemTable)에 포함된 날짜 데이터의 포맷은 "YYYY-MM-DD"로 저장되어 있습니다.
2) TDateEdit의 기본 날짜 포맷은 "YYYY.MM.DD"로 지정되어 있습니다.
3) 라이브바인딩으로 데이터와 컨트롤 연결 시 포맷이 일치하지 않습니다.
이때 포맷을 일치하는 방법은
1) 위에서 설명드린 FormatSettings 전역변수를 활용하는 방법과
2) 라이브바인딩의 CustomFormat을 다음과 같이 지정하는 방법입니다.
- 데이터셋과 TDateEdit를 연결한 Binding Link를 선택
- CustomFormat 항목에 다음과 같이 날짜 포맷을 변경(FormatDateTime('YYYY.MM.DD', Owner.FieldByName("필드명").AsDateTime))
주의> 2번안의 경우 데이터셋의 날짜와 연결된 컨트롤마다 커스텀 포맷을 지정해 줘야 합니다. 그렇지 않다면 날짜 구분자가 "-", "."로 섞여서 나올 수 있습니다.
결론적으로 FormatSettings.DateSeperator를 사용하는 것이 일관된 날짜 구분자 표현과 편의성 면에서 좋을 것 같습니다.
라이브바인딩 커스텀포맷 관련한 정보가 보여 추가학습차 답변드렸습니다.
라이브바인딩 커스텀포맷에 대한 추가 정보는 아래 링크들을 참고해 학습하시기 바랍니다.
- 라이브바인딩에서 커스텀포맷 사용 : http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_Custom_Format_and_Parse_Expressions_in_LiveBindings
- 기본 라이브바인딩 메소드 : http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Default_LiveBindings_Methods
- 사용자정의 라이브바인딩 메소드 작성 : http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_Custom_LiveBindings_Methods
- 유투브 영상(XE3) : https://www.youtube.com/watch?v=86PPmORQ7kY
Firemonkey listview Data 뿌려주거나 클릭 시 EvalError 발생.
2018.09.27 10:20
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
안녕하세요 간단한 안드로이드 앱 개발을 하고 있는데 에러가 발생하여 문의 드립니다.
웹호스팅서버의 MySQL 데이터베이스를 읽어와서 ListView에 뿌려주고 있는데 아래와 같은 에러가 발생을 하며 클릭시에도 동일한 에러가 발생하여 해결 방법을 알고 싶습니다.
LiveBinding은 아래와 같이 연결 되어 있으며
ListView1.Item.Detail에 연결된 데이터베이스의 'Date' 필드의 데이터 타입은 Date로 되어 있습니다.
윈도우즈 플랫폼에서는 에러가 발생 안하는데 안드로이드 플랫폼에서만 에러가 발생을 하고 있네요.
아 그리고 한가지 더 질문이 있습니다.
안드로이드환경에서 Formshow 이벤트에서 RestRequest1.Execute; 를 하면 앱을 로딩하다가 팅겨버리는데
초기 화면을 보여주면서 RestRequest1.Execute; 를 하여 결과값을 먼저 보여주고 싶을 때는 어떻게 해야 되는지
문의 드립니다.
댓글 4
-
험프리
2018.10.02 09:38
-
엔달
2018.10.02 14:11
문제 원인 파악은 되었습니다. DateEdit -> Edit 변경하니 에러 발생은 안하네요 말씀 하신 날짜 타입 포맷 인식 오류가 맞습니다.
RESTRequest1.Execute; 하여 읽어 온 데이터를 뿌리기전에 날짜 포멧 변경 후 뿌려야 되는데 Live Binding으로 연결이 되어 있어서
소스적으로 접근을 어떻게 해야될지 난감하네요. ㅠㅠ
BindSourceDB1 -> DatasSet -> FDMemTable1 -> 이벤트가 생성이 안되어서 어느 구문에 날짜 포맷 변경을 해야 되는지 알려 주심 감사
드립니다.
-
험프리
2018.10.11 09:47
날짜 포맷을 전체적으로 설정하는 기능은 다음과 같습니다.
FormatSettings.DateSeperator := '-';
FormatSettings는 날짜, 시간 등의 포맷을 설정하는 전역변수 구조체입니다. 다른 필드들도 확인해보시기 바랍니다.
-
험프리
2018.10.31 11:20
LiveBinding의 CustomFormat을 이용하는 것도 가능합니다.
위 이슈가 발생하는 원인은 다음과 같습니다.
1) 데이터셋(TFDMemTable)에 포함된 날짜 데이터의 포맷은 "YYYY-MM-DD"로 저장되어 있습니다.
2) TDateEdit의 기본 날짜 포맷은 "YYYY.MM.DD"로 지정되어 있습니다.
3) 라이브바인딩으로 데이터와 컨트롤 연결 시 포맷이 일치하지 않습니다.
이때 포맷을 일치하는 방법은
1) 위에서 설명드린 FormatSettings 전역변수를 활용하는 방법과
2) 라이브바인딩의 CustomFormat을 다음과 같이 지정하는 방법입니다.
- 데이터셋과 TDateEdit를 연결한 Binding Link를 선택
- CustomFormat 항목에 다음과 같이 날짜 포맷을 변경(FormatDateTime('YYYY.MM.DD', Owner.FieldByName("필드명").AsDateTime))
주의> 2번안의 경우 데이터셋의 날짜와 연결된 컨트롤마다 커스텀 포맷을 지정해 줘야 합니다. 그렇지 않다면 날짜 구분자가 "-", "."로 섞여서 나올 수 있습니다.
결론적으로 FormatSettings.DateSeperator를 사용하는 것이 일관된 날짜 구분자 표현과 편의성 면에서 좋을 것 같습니다.
라이브바인딩 커스텀포맷 관련한 정보가 보여 추가학습차 답변드렸습니다.
라이브바인딩 커스텀포맷에 대한 추가 정보는 아래 링크들을 참고해 학습하시기 바랍니다.
- 라이브바인딩에서 커스텀포맷 사용 : http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Using_Custom_Format_and_Parse_Expressions_in_LiveBindings
- 기본 라이브바인딩 메소드 : http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Default_LiveBindings_Methods
- 사용자정의 라이브바인딩 메소드 작성 : http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_Custom_LiveBindings_Methods
- 유투브 영상(XE3) : https://www.youtube.com/watch?v=86PPmORQ7kY
날짜 타입의 포맷을 인식하지 못하는 것으로 보입니다.
해당 작업 진행 전 날짜포맷을 아래와 같이 설정해 보시기 바랍니다.
FormatSettings.ShortDateFormat := 'yyyy-mm-dd';
자세한 내용은 다음 링크를 참고해 보시기 바랍니다.
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.SysUtils.TFormatSettings
——————
답글이 도움이 되셨는지 다른 분들도 참고할 수 있도록 결과 댓글 부탁드립니다.
(결과 댓글이 없는 경우 다른 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)