powerbuilder의 데이터 윈도우에서 해당 컬럼의 컬럼 이름과 기본 테이블 이름에 액세스하는 방법. 인스턴스 변수를 가지고 itemfocuschanged 이벤트에서이 인스턴스 변수에 dwo.name을 할당하여 열 이름을 얻을 수있었습니다. 그러나이 칼럼의 테이블 이름을 얻는 방법.powerbuilder의 데이터 윈도우에있는 컬럼 테이블
창에 여러 개의 데이터 윈도우 컨트롤이있는 경우 선택한 데이터 윈도우 컨트롤의 이름을 가져 오는 방법.
0
A
답변
0
먼저 ... 아래의 코드를 사용하여 DW에 대한 SQL 문을 얻을
다음ls_sql = this.dw_report.Object.DataWindow.Table.SQLSelect
OR
ls_sql = dw_report.Describe("DataWindow.Table.Select")
나는 테이블 이름을 반환하려면이 사용자 정의 기능을 사용하여 ...
ls_table = f_get_table_name(ls_sql)
"f_get_table_name()"함수의 코드 ...
//Obtains the main Table name from the passed SQL string
long ll_pos1
long ll_pos2
string ls_table = ""
ll_pos1 = PosA(Upper(as_sql), "FROM")
ll_pos1 = PosA(as_sql, '"', ll_pos1 + 1)
ll_pos2 = PosA(as_sql, '~~', ll_pos1 + 1)
ls_table = MidA(as_sql, ll_pos1 + 1, ll_pos2 - ll_pos1 - 1)
if (ls_table = "" OR isNull(ls_table)) then
ll_pos1 = PosA(Upper(as_sql), "SELECT")
ll_pos1 = PosA(as_sql, ' ', ll_pos1 + 1)
ll_pos2 = PosA(as_sql, '.', ll_pos1 + 1)
ls_table = MidA(as_sql, ll_pos1 + 1, ll_pos2 - ll_pos1 - 1)
end if
if (ls_table = "" OR isNull(ls_table)) then
ll_pos1 = PosA(Upper(as_sql), "WHERE")
ll_pos1 = PosA(as_sql, ' ', ll_pos1 + 1)
ll_pos2 = PosA(as_sql, '.', ll_pos1 + 1)
ls_table = MidA(as_sql, ll_pos1 + 1, ll_pos2 - ll_pos1 - 1)
end if
if (ls_table = "" OR isNull(ls_table)) then
ll_pos1 = PosA(Upper(as_sql), "FROM")
ll_pos1 = PosA(as_sql, ' ', ll_pos1 + 1)
ll_pos2 = PosA(as_sql, ' ', ll_pos1 + 1)
ls_table = MidA(as_sql, ll_pos1 + 1, ll_pos2 - ll_pos1 - 1)
end if
return Trim(ls_table)
0
질문 1 : 사용 dw_a.Describe("<yourcolumn>.dbName")
이것은 데이터베이스의 이름을 tablename.columnname
으로 줄 것입니다. 그런 다음 구문 분석 할 수 있습니다.
질문 1 : 무슨 뜻인지 확실하지 않습니다. 당신이에서 DataWindow 중 하나가 마지막으로 포커스를받은 알고 싶은 경우에, 당신은 윈도우 인스턴스 변수 (유형의 데이터 윈도우)를 정의하고 바꾸어 다양한에서 DataWindow의 GetFocus
이벤트를 사용할 수 있습니다
idw_datawindowfocue = this
그래도 난 궁금해 왜 이것을 필요로 하죠? 그 이유를 설명해 주시겠습니까?