2010-01-19 6 views
0

TDataSourse로 그리드에 링크 된 TdxMemData에 데이터를 삽입하는 데 어려움을 겪고 있습니다. MemData -called PurchaseData-에는 날짜 (날짜), 장소 (문자열) 및 값 (통화)의 세 열이 있습니다. ,볼랜드 빌더의 TdxMemData에 데이터를 삽입하는 방법

PurchaseData->Insert(); 
PurchaseData->FieldByName("Date")->Value = TDateTime::CurrentDate().DateString(); 
PurchaseData->FieldByName("Place")->Value = ""; 
PurchaseData->FieldByName("Value")->Value = 0.0f; 
PurchaseData->Post(); 

한 번 클릭했습니다 정상적으로 행을 삽입하고 데이터 그리드의 새로운 행에 표시하지만, 다시 버튼을 클릭하면 내가 삽입에 팝업을 얻을 : 나는 다음과 같은 수행하는 버튼이 있습니다() "유형 (Null)의 변형을 type (String)"으로 변환 할 수 없습니다.

열의 "KeyFields"속성에 다른 필드 3 개 외에 "RecId"필드가 콤보로 표시된다는 점에 대해 걱정됩니다. RecId라는 열을 만드는 것을 기억하지 못합니다. 그렇게했다면 제거했습니다. 나는 그것이 무엇인지 알아 내지 못하고 도움도 찾을 수 없었다.

답변

0

그리드의 이벤트 OnSelectionChanged를 매핑하고 새로 선택한 행의 데이터를 읽었습니다. 불행히도 PurchaseData-> Insert()가 호출되면 SelectionChanged 이벤트가 즉시 실행됩니다. 새로운 행의 데이터가 다음 행에 의해 설정되기 전에. 나는 데이터에서 Null을 읽었고 나쁜 일을 편집 -> Text, 즉 팝업으로 설정하는 것과 같았습니다.

0

메신저 지금이 권리를 테스트 만하는 곳이로 변경이 작동 할 수 없습니다

PurPurchaseData-> FieldByName ("장소") -> 값 = 문자열 ("");

그것이 작동하지 않는다면 열을 설정하는 방식에 영향을 미칩니다.

+0

String 또는 AnsiString이 작동하지 않습니다./: 사용해 주셔서 감사합니다! – Gabriel

관련 문제