내 응용 프로그램은 데이터 소스로 QuantumGrid (v6.56)와 TSimpleDataSet을 사용합니다.TDataSet.UpdateRecord에서 어떻게 오류를 잡을 수 있습니까?
문제점 : 사용자가 숫자 필드에 숫자가 아닌 값을 입력하면 예외가 발생합니다. 이 코드는 OnBeforePost 핸들러에 도달하지 않습니다.
예외가 발생하는 경우 응용 프로그램에서 오류를 catch하고 표시 할 수있는 방법 전에 OnBeforePost?
스택 추적 : 당신은 사용자는 또한 설정 한 후, 숫자를 입력 할 수 있도록, 거기에 당신이 CurrencyEdit을 할당 할 수 있습니다 "등록 정보"를 cxGrid에 열의 속성을 설정해야합니다
exception class : EDatabaseError
exception message : '...' is not valid Integer value for Field <somefieldname>
main thread ($504):
00526c7e +082 EditBooking.exe DB DatabaseError
00526d0f +04b EditBooking.exe DB DatabaseErrorFmt
0052c428 +07c EditBooking.exe DB TIntegerField.SetAsString
0052af30 +00c EditBooking.exe DB TField.SetText
0052abf9 +021 EditBooking.exe DB TField.SetEditText
007c3a3f +053 EditBooking.exe cxDBData
007e14a8 +018 EditBooking.exe cxGridDBDataDefinitions TcxGridDBDataController.UpdateData
006f8159 +039 EditBooking.exe cxCustomData TcxCustomDataProvider.DoUpdateData
007c1c18 +008 EditBooking.exe cxDBData TcxDBDataLink.UpdateData
0053325d +021 EditBooking.exe DB TDataLink.UpdateRecord
005333f8 +0d8 EditBooking.exe DB TDataLink.DataEvent
007c1683 +00f EditBooking.exe cxDBData TcxDBDataLink.DataEvent
00533973 +03f EditBooking.exe DB TDataSource.NotifyLinkTypes
005339a2 +01e EditBooking.exe DB TDataSource.NotifyDataLinks
005339cf +023 EditBooking.exe DB TDataSource.DataEvent
005392ad +131 EditBooking.exe DB TDataSet.DataEvent
00553d7c +058 EditBooking.exe DBClient TCustomClientDataSet.DataEvent
00539396 +042 EditBooking.exe DB TDataSet.UpdateRecord
0053a356 +006 EditBooking.exe DB TDataSet.Post
0055677c +054 EditBooking.exe DBClient TCustomClientDataSet.Post
데이터 세트와 그리드 사이에있는 데이터 소스의 OnUpdateData 이벤트? –
-1 - 당신이 무엇을 요구하고 있는지 또는 시도하려고하는지 분명하지 않습니다. 이것이 사용자에게 잘못된 입력에 대한 메시지를 작성하는 경우,이를 수행하는 방법을 보여주는 대답에 대해 설명하거나 목표에 대한 설명을 요청한 의견에 대해 의견을 말할 수 있습니다. 예외를 포착하는 경우 'post'호출을 try-except로 묶으십시오. 그렇지 않으면이 질문은 무엇입니까? –
필드의 'OnSetText' 이벤트에서 (내 삭제 된 응답에서와 같이) 값을 확인하는 것은 게시 메소드와 관계가 없습니다. 그리드가 때때로 자체적으로 게시하기로 결정한 경우에도 작동합니다. 어쨌든, TDBNavigator의 경우, BeforeAction 이벤트에 대한 핸들러를 쉽게 넣을 수 있으며 ('Button'이 'nbPost'인 경우) 그 값을 검사하여 필요할 경우 중단 할 수 있습니다. –