2012-08-25 3 views
0

이 코드의 잘못된 점은 무엇입니까? 새 일련 번호를 삽입하기 전에 데이터베이스에 사용 가능한 레코드가 있는지 확인하고 있습니다. 사용 가능한지 여부를 불문하고 어떤 레코드라도 입력하면 다음과 같은 오류 메시지가 표시됩니다.PowerBuilder 찾기 함수가 "표현식이 유효하지 않습니다"라는 오류를 발생시킵니다.

"표현식이 유효하지 않습니다". (파워 빌더 클래식 12.5 SQL 서버 2008)

If This.GetColumnName() = "serial_No" Then 
long ll_serial 
    ll_serial=dw_newrecord.find(data, 1, dw_newrecord.rowcount()) 
    if ll_serial>0 then 
    messagebox("validation error", "The record already exists") 
    return 1 
end if 
End If 
+0

'.find '를 호출 할 때'data'의 값은 무엇입니까? 그것은 잘못된 SQL식이 될 수 있습니다 ... –

답변

1

당신의 data 식에 구문 오류가 있습니다 가능성이 높습니다. 따옴표가 누락 된 일부 잘못된 코드 또는 열 이름이 잘못되었을 수 있습니다.

필터를 조정하거나 표현식을 찾는 데 도움이되도록 행/필터 메뉴를 통해 데이터 윈도우 디자인 화면에서 테스트 할 수 있습니다.

장기 코딩 설계를위한 더 나은 솔루션은 Datawindow Debug Machine (동료 동료가 제작)을 프로젝트에 통합하는 것입니다. 데이터 윈도우의 동적 오브젝트 생성/수정을위한 필터를 찾고 필터링하기위한 프로토 타입을 생성하는 데 유용한 도구입니다. 또한 프로젝트의 데이터 윈도우 조상과 올바르게 인터페이스 할 때 필터와 함께 식 표현 오류를 찾을 수 있습니다.

편집 : RealHowTo에서 알 수 있듯이 도구가 업데이트되었습니다. 여기 current latest version입니다 (그러나 데모 스크린 캐스트는 업데이트되지 않았습니다).

+1

이 스크립트는 ItemChanged와 같은 표준 이벤트에서 가져온 것이고 Data는 시스템에서 제공하는 매개 변수이면 Find * ("serial_No ="+ 데이터, 1, RowCount()) 열이 숫자이거나 Find ("serial_No = '"+ Data + "'", 1, RowCount()) 열이 문자열 인 경우. – Terry

+0

@ 테리, 문제는 찾기 기능과 함께, 나는 당신의 대답에 그것을 변경하고 효과가!, ll_record = ds.find ("Serial_No = '"+ 데이터 + "'", 1, ds.RowCount()) – Wepex

+0

멋진 도구! 최신 버전 링크 : http://geni.embeddingperl.com/index.php?post/2012/01/23/My-Datawindow-DebugMachine-v2.4 – RealHowTo

관련 문제