Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Help plz ... / 6 сообщений из 6, страница 1 из 1
30.11.2006, 00:38
    #34165702
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help plz ...
Доброго всем времени суток.

Ребята, подскажите плз, может есть какой инструмент или у кого-то есть уже написаный парсер ...

Нужно пробежатса по библиотекам и дать отчёт о количестве (желательно имена) окон в которых больше чем одно updateable datawindow

Заранее благодарен.
...
Рейтинг: 0 / 0
30.11.2006, 10:03
    #34166125
Локшин Марк
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help plz ...
voronkНужно пробежатса по библиотекам и дать отчёт о количестве (желательно имена) окон в которых больше чем одно updateable datawindow
А если DataObject назначается динамически/изменяются свойства обновления?
...
Рейтинг: 0 / 0
30.11.2006, 19:46
    #34168741
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help plz ...
Их у нас не много, я их знаю в лицо.
...
Рейтинг: 0 / 0
01.12.2006, 12:15
    #34169902
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help plz ...
Вот, пару строк на Перле :)
...
Рейтинг: 0 / 0
27.12.2006, 17:59
    #34228785
voronk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help plz ...
Всем спасибо.
Опять взяли за горло, пришлось накропать, вот, может кому пригодитса.
Начальство довольно.
Для себя, если кто посоветует как сделать получше, просто так, for future references с вниманием выслушаю.

// This script will go thru the all libraries, get the list of the all main type windows, all datawindows
// inside them and look if any of this datawindows updatable ...

datastore dw_1, dw_2, dw_3
long l_handle, l_row, l_first, l_last, l_fnd, l_row1, l_knt
string s_name, s_lib, s_dir, s_window, s_dir_windows
boolean b_go
ClassDefinition cd_def
WindowType ltype
int i_int
str_pass str_pass

int i_knt
long l_pos, l_pos2
datawindow dw
string s_syntax, s_table_name, s_class_name, s_data_object, s_dw_list
window w

SetNull(l_handle)

s_name = space(81)

GetModuleFileNamea(l_handle, s_name, 80)

IF UPPER(Right(s_name, 8)) <> 'PB90.EXE' THEN
MessageBox('Unauthorized Screen Access', 'You are not authorized to access this screen.', Exclamation!)
RETURN
END IF

SetPointer(hourglass!)

dw_1 = create datastore
dw_2 = create datastore
dw_3 = create datastore

dw_1.dataobject = 'dw_pbl'
dw_2.dataobject = 'dw_window_dir_pbl'
dw_3.dataobject = 'dw_pbl'

s_lib = Upper(GetLibraryList())

s_lib = f_find_and_replace(s_lib, ',', '~n')

dw_1.ImportString (s_lib)

FOR l_row = 1 TO dw_1.RowCount()
Yield()
This.SetMicroHelp ('Exporting Windows')

s_dir = Upper(dw_1.GetItemString(l_row, 'column_01'))
s_dir_windows = LibraryDirectory(s_dir, DirWindow!)

IF match(upper(s_dir), 'PCERV') = TRUE THEN
EXIT
END IF

dw_2.Reset()
dw_2.ImportString (s_dir_windows)

FOR l_row1 = 1 TO dw_2.RowCount()
Yield()
s_window = ''

l_first = 1
l_last = 0

s_window = dw_2.GetItemString(l_row1, 'column_01')

IF s_window <> '' and &
s_window <> 'w_test' THEN

cd_def = FindClassDefinition(s_window)

b_go = FALSE

FOR i_int = 1 TO UpperBound(cd_def.variablelist)
IF cd_def.variablelist[i_int].name = 'windowtype' THEN
ltype = cd_def.variablelist[i_int].initialvalue

CHOOSE CASE ltype
CASE Main!
b_go = TRUE
EXIT
END CHOOSE
END IF
NEXT

IF b_go THEN
//w = window('')
//open(w, s_window)

w = g_w_frame.fw_open_sheet (s_window, 0, 1, str_pass)

IF IsValid(w) THEN
This.SetMicroHelp ('Exporting Window - ' + s_window)

w.visible = false
w.setredraw(false)

dw_3.insertrow(0)

dw_3.SetItem(dw_3.RowCount(), 'column_01', s_window + ' - ' + w.Title)

//dw_3.SaveAs("c:\windows.XLS", Excel!, FALSE)

FOR i_knt = 1 TO upperbound(w.control[])
CHOOSE CASE w.control[i_knt].typeof()
CASE datawindow!
s_class_name = w.control[i_knt].classname() // Return dw_1, dw_2, etc ...

dw = w.control[i_knt]

s_data_object = dw.dataobject // Return data object dw_gl_account, dw_gl_entries, etc ...

IF NOT IsNull(s_data_object) and trim(s_data_object) <> '' and IsValid(dw) = TRUE THEN
s_syntax = dw.Object.DataWindow.Syntax // Get datawindow syntax ...

l_pos = pos(s_syntax, 'update="') // Look for update ...

IF l_pos > 0 THEN // If yes, get the table name ...
l_pos = l_pos + 8
l_pos2 = Pos(s_syntax, '"', l_pos) // Look for a table closing quote ...

s_table_name = Mid(s_syntax, l_pos, l_pos2 - l_pos) // Get the table name ...
END IF

IF IsNull(s_table_name) THEN
s_table_name = ''
END IF

IF Len(trim(s_table_name)) > 0 THEN
s_dw_list = dw_3.GetItemString(dw_3.RowCount(), 'column_02')

IF IsNull(s_dw_list) THEN
s_dw_list = ''
END IF

dw_3.SetItem(dw_3.RowCount(), 'column_02', s_dw_list + ' - ' + s_table_name)
//dw_3.SaveAs("c:\windows.XLS", Excel!, FALSE)
END IF
END IF
END CHOOSE
NEXT

close(w)
END IF
END IF
END IF
NEXT
NEXT

dw_3.InsertRow(0)
dw_3.InsertRow(0)

dw_3.SetItem(dw_3.RowCount(), 'column_01', 'Windows Excluded: ' + &
'w_test')

dw_3.SaveAs("c:\windows.XLS", Excel!, FALSE)


setmicrohelp('Ready')

// dw_3.SaveAs("c:\c3_Security.html", htmltable!, FALSE)

DESTROY dw_1
DESTROY dw_2
DESTROY dw_3

SetPointer(arrow!)

MessageBox('test', 'done')
...
Рейтинг: 0 / 0
27.12.2006, 18:36
    #34228878
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Help plz ...
voronkВсем спасибо.
Опять взяли за горло, пришлось накропать, вот, может кому пригодитса.
Начальство довольно.
Для себя, если кто посоветует как сделать получше, просто так, for future references с вниманием выслушаю.Можно попридираться :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SetNull(l_handle)

s_name = space( 81 )

GetModuleFileNamea(l_handle, s_name,  80 )

IF UPPER(Right(s_name,  8 )) <> 'PB90.EXE' THEN
MessageBox('Unauthorized Screen Access', 'You are not authorized to access this screen.', Exclamation!)
RETURN 
я правильно понимаю, что таким образом вы определяете, запущена ли функция из среды PB или из приложения? IMHO, следовало бы воспользоваться
Код: plaintext
Handle(GetApplication()) =  0 
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Help plz ... / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]