2013-11-05 7 views
0

엑셀 문서에서 복사/붙여 넣기를 사용하여 채울 수있는 데이터 윈도우가 있습니다. 현재 날짜 필드를 제외하고 원하는 모든 것을 가져옵니다. 현재 사용자가 MM/YYYY 날짜를 포함하여 Excel 파일의 모든 항목을 수동으로 입력하고 저장을 클릭하면 시스템이 날짜 구성 요소를 추가하여 날짜 필드로 Oracle 데이터베이스에 전달할 수 있습니다.DW ImportClipboard와 유효성 검사 사이에서 데이터 조작

복사/붙여 넣기를 구현 한 후 날짜 필드는 MM/YYYY 형식 (예 : 11/2013)의 Excel 파일에서 가져오고 PowerBuilder가 데이터 유효성 검사 오류 메시지와 함께 팝업합니다 ('11/2013 '항목은 유효성 검사를 통과하지 못합니다). 테스트) 할 수 있습니다.

Excel에서 수동으로 날짜를 변경하여 01/11/2013이라고 말하도록 날짜를 변경하면 다른 모든 데이터가 올바르게 붙여 넣어집니다. Excel 문서는 제 3 자로부터 보호되며 날짜 형식은 하루 구성 요소를 포함하도록 변경할 수 없습니다.

dw.ImportClipboard() 메서드를 사용하여 클립 보드에서 데이터를 가져 와서 올바른 DW 열에 할당합니다. 코드 :

If Clipboard() <> "" Then 
      If tab_detail.tabpage_adjustment.dw_adjustment.ImportClipboard(1, li_rows, 1, 7, 3) <= 0 Then 
       MessageBox("Invalid Data", "Unable to paste!", StopSign!) 
       Return -1 
      End If 
... process data further 

내가이 유효성 검사를 통과 할 수 있도록 날짜 필드의 전면에 DD/를 추가하기 위해 ImportClipboard() 기능과 자동 검증 사이의 데이터를 가로 챌 수있는 방법이 있나요? 아마 위의 코드의 프로세스 데이터 추가 섹션을 참조하십시오.

또는 더 좋은 방법이 있습니까?

감사합니다.

PowerBuilder Classic 12.5, PB8에서 원래 개발 된 응용 프로그램을 사용하고 있습니다.

편집 : 데이터 저장소 사용이 제안되었습니다. 그게 내가 가진 것 같아. 그러나 나는 그것을 위해 일할 수 없었습니다.

datastore ids_Adjustment 
ids_Adjustment = CREATE DATASTORE 
ids_Adjustment.DataObject = "tab_detail.tabpage_adjustment.dw_adjustment" 
ids_Adjustment.SetTransObject(SQLCA) 

li_test = ids_Adjustment.ImportClipboard(1, li_rows, 1, 7, 3) 
messagebox("test", "Here: "+String(li_test)) 

    If ids_Adjustment.ImportClipboard(1, li_rows, 1, 7, 3) <= 0 Then 
     MessageBox("Invalid Data", "Unable to paste the return Adjustment! "+String(ids_Adjustment.ImportClipboard(1, li_rows, 1, 7, 3)), StopSign!) 
     Return -1 
    End If 

어느 메시지 상자가 나타납니다,하지만 난 가져 오기 클립 보드 물건을 제거 할 때 메시지 상자가 정상적으로 표시 : 여기

내가 한 일이다.

ids_Adjustment.DataObject = "tab_detail.tabpage_adjustment.dw_adjustment" 

합니다 (DW 개체의 이름입니다)
ids_Adjustment.DataObject = "d_agentreturn_detail_adjustment" 

에 : 나는

내가 선을 변경할 때 ... 그들은 작동하지 않는 이유를 확인 드릴 수 없습니다

messagebox는 오류 코드 -4를 반환하는데, 문서에 따르면 잘못된 입력을 의미합니다. 복사/붙여 넣기 같은 행과 데이터를 항상 그렇게 정말 왜 그렇게하는지 모르겠습니다.

EDIT2/솔루션 :

로서 내가 새로운 데이터 윈도우 개체 (서식있는 텍스트)를 만들어 제안 외부 데이터 소스를 선택하고 필요한 날짜 필드에게 문자열을이 시간에 열을 추가. 그런 다음 위와 같이 새 데이터 객체를 참조하고 그것에 대해 importClipboard를 수행하여 데이터 저장소를 만들었습니다.

ids_Adjustment.SetItem(li_idx, 'adjustment_period', String("01/"+ids_Adjustment.GetItemString(li_idx, 'adjustment_period'))) 

을 한 후 데이터 윈도우 오브젝트는 데이터 저장소의 값을 동일하게 : 나는 다음 날짜 문자열에 하루에 구성 요소를 추가하는 것을 진행했다.

tab_detail.tabpage_adjustment.dw_adjustment.Object.adjustment_period [li_idx] = date(ids_Adjustment.GetItemString(li_idx, 'adjustment_period')) 

귀하의 의견과 아이디어에 감사드립니다.

답변

1

날짜 필드를 문자열로 사용하여 데이터를 데이터 저장소에 붙여넣고 날짜 형식을 수정 한 다음 행을 데이터 창으로 이동할 수 있습니다.

+0

안녕하세요. Calvin, 데이터 저장소는 내가 좋아하는 것처럼 들립니다. 그러나 문제가 발생하기 시작했습니다. – Jake

+1

칼빈의 제안에 대한 열쇠는 동일한 데이터 객체를 사용하지 않고 날짜 열이 있어야하는 문자열 열이 있는지 확인하는 것입니다. 그런 다음 문자열 조작을 사용하여 문자열을 호환되는 날짜 형식으로 조정하고 데이터 저장소에서 데이터를 가져 와서 데이터 윈도우로 가져올 수 있습니다. 결과에 따르면 여전히 날짜 입력란으로 가져 오기를 시도하고 있음을 알 수 있습니다. – Terry

+0

Ok 걱정하지 마라. 나는 새로운'DataObject'를 생성 할 것이고, 그것을 참조하고 결과 덕분에 여러분에게 돌아갈 것이다. – Jake