2010-06-14 2 views
2

저는 Powerbuilder를 처음 접하고 데이터 윈도우를 사용하는 데 많은 어려움을 겪고 있습니다. 나는 그것의 삽입 메커니즘 주위에 머리를 얻을 수 없습니다. 누군가 나에게 그것을 설명하거나, 적어도 올바른 방향으로 나를 가리킬 수 있습니까 (기사, 팁 등 ...)?powerbuilder의 데이터 윈도우가 삽입 명령을 실행하는 방법

+4

4 시간 및 불만 사항? 많은 환자가 아닙니다! 북미에서 이른 아침. 어떤 삽입 메커니즘? 데이터 윈도우? Treeviews? Embedded SQL? ... Sybase 기술 문서 또는 PowerBuilder 개발자 저널을 보았습니까? – Terry

+1

또 다른 만족스러운 PB 개발자 :) ... 가치가있는 부분에 대해서는 PB IDE가 불안정한 경향이 있지만 시간이 지남에 따라 충돌을 방지하기 위해 피하는 방법을 배울 것입니다. 또한 데이터 윈도우는 PB의 핵심입니다 그래서 마스터하는 것이 가장 중요한 개념입니다. 또한 번들 된 API 문서를주의 깊게 읽고 PB 디버거를 사용하는 데 많은 시간을 할애 할 것을 권장합니다. 결국 PB를 즐길 수도 있습니다. –

답변

9

데이터 윈도우에 의해 생성 된 SQL은 업데이트 속성 (메뉴 항목 행/업데이트 속성 ...)에 의해 제어됩니다. 여기에서 단일 테이블을 선택하고 SQL을 생성하는 데 사용할 등록 정보를 설정할 수 있습니다. Where 절은 UPDATE 및 DELETE에 대해 WHERE 절에서 사용되는 열과 원래 값을 결정합니다. 키 수정은 키로 정의한 열을 변경 (또는 사용자가 변경하도록 허용) 할 때만 작용합니다. Updatable Columns은 SQL을 생성하는 목록입니다 (UI가 어떤 방식 으로든 허용하는 것에 영향을주지 않습니다). 키 열 이 기본 키가 될 수 있습니다 (DBMS가 데이터베이스에서이를 호출하는 호출을 지원하는 경우 기본 키 버튼을 사용하여 자동으로 채울 수 있지만). (당신이 뭔가 다른 일을 할 수있는 아주 독특한 경우가 있습니다.) 당신이 당신의 키로서 ID 컬럼을 가지고 있다면, 당신은 그것을 DataWindow로 식별 할 수 있고 INSERT 후에 생성 된 값을 검색 할 것입니다.

그런 다음 InsertRow(), DeleteRow(), SetItem()을 사용하여 데이터 윈도우에 데이터를 채우고 사용자가 UI를 사용하게하면 생성 된 SQL을 결정하는 데이터 및 상태 플래그가 변경됩니다 Update()가 호출 될 때.

이 모든 것은 런타임에 Modify() 함수를 사용하여 변경할 수 있으므로 하나의 데이터 윈도우로 여러 테이블을 업데이트하는 것과 같은 작업을 수행 할 수 있습니다. 이것은 PowerBuilder Foundation 클래스의 다중 테이블 업데이트 서비스에서 구현되므로 런타임에이 값을 변경하려는 경우 좋은 샘플 코드입니다.

행운을 빕니다,

테리.

+0

'test'라는 테이블이 있고 'test_id', 'test_name', 'test_address'라는 세 개의 열이 있다고 가정합니다. 'test_id'에 대한 검색 인수를 사용하여 테이블에서 데이터를 필터링하여 데이터를 가져오고 나중에 두 개의 열만 표시합니다. 이제 데이터 창을 사용하여 새 행을 삽입하면 데이터베이스에서 'not-null'제약 조건을 위반하고 'test_id'값을 찾을 수 없다고합니다. 이 문제를 어떻게 해결할 수 있습니까? –

+1

에 따라 다릅니다. test_id가 ID/자동 증가 열인 경우 업데이트 속성에서이를 선언해야합니다. 그것이 당신 자신을 채우는 값이라면, 열 "test_id"에 대해 새로운 행에 대해 프로그래밍 방식으로 SetItem()을 수행해야 할 것입니다. 값을 생성하는 규칙은 InsertRow() 또는 UpdateStart 이벤트에서 값을 설정할 수 있는지 여부를 결정할 수 있습니다. 저장이 필요한지 확인하려면 ModifiedCount()를 사용하려는 경우 해당 함수 호출이 끝날 때까지 SetItem()을 연기 할 수 있습니다. (보너스 표시의 경우 DW 열의 초기 특성 ... 아니요 spc2xpln을 수정()합니다.) – Terry

2

@Archangel 검색 인수로 값을 지정한 후에도 데이터 윈도우에 행을 삽입 할 때 여전히 test_id 필드를 제공해야합니다. 삽입을 한 후에는 널 값을 허용하지 않는 모든 값에 대해 setitem을 수행해야합니다.

관련 문제