powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Нюансы Power Builderа
8 сообщений из 8, страница 1 из 1
Нюансы Power Builderа
    #35868847
На понимание нюансов тратится много времени и усилий.
А если они описаны в одном месте, то при мистическом поведении программы, можно довольно быстро мистику развеять.
Поделитесь нюансами в одном месте - здесь.

//.............................................................

1. Изменение значений некоторых свойств DropDownDW-поля датавинды, обнуляет количество строк в дочернем окне этого поля , но не обнуляет список в нём. А восстановление дочернего окна восстанавливает количество строк в нём .

dw.GetChild('IdModelCar', cwModelCar)
cwModelCar.SetTransObject(SQLCA)
cwModelCar.Retrieve()
// здесь cwModelCar.RowCount() > 0

dw.Modify('IdModelCar.BackGround.Color = ' + String(ColorTeal))
// здесь cwModelCar.RowCount() = 0

dw.GetChild('IdModelCar', cwModelCar) // восстановление дочернего окна
// здесь cwModelCar.RowCount() > 0

dw.Object.ModelCar.BackGround.Mode = 1
// здесь cwModelCar.RowCount() = 0

dw.GetChild('IdModelCar', cwModelCar)
// здесь cwModelCar.RowCount() > 0

dw.Object.ModelCar.Protect = 0
// здесь cwModelCar.RowCount() > 0

dw.Object.ModelCar.Tabsequence = 32766120
// здесь cwModelCar.RowCount() > 0
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35868996
2. Если в списке DropDownDW-поля датавинды встречаются одинаковые значения Display Column, то при выборе пользователем из списка любой строки, содержащей одинаковые значения поля, являющегося Display Column DropDownDW-поля, в последнее поступает из списка значение Data Column-поля первой строки по порядку из числа строк с одинаковыми значениями.
Для того чтобы обойти такую особенность, надо в дочерней датавинде добавить поле, имеющее значение равное
значение( Display Column ) + ' (' + String(значение( Data Column )) + ')' ,
причём поле Data Column должно быть уникальным в списке.
Далее, добавленное поле следует сделать Display Column -полем. А сохранять в базе данных надо значение предыдущего «чистого» Display Column -поля, которое находится поиском выбранного значения DropDownDW -поля в списке дочернего окна с помощью метода Find().

//IdClient – Data Column-столбец с неповторяющимися значениями
//NameClient – старый Display Column-столбец, содержащий одинаковые значения
//NameClientPlus – новый Display Column-столбец с неповторяющимися значениями
//NameClientPlus = NameClient + ' (' + String(IdClient) )) + ')'

pNameClient = cwClient.Object.NameClient[cwClient.Find("IdClient = " + String(dw.Object.IdClient[1]), 1, cwClient.RowCount())]
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35869761
3. Если организована связь с помощью методов inv_Linkage или SetFilter() между главной и подчинённой датавиндами и подчинённая датавинда при текущих параметрах связи пуста, то метод InsertRow(0) , добавляющий новую строку в подчинённую датувинду, возращает номер не новой , а уже существующей «закадровой» строки , находящейся за пределами фильтра, установленного текущими параметрами связи.
Для того чтобы обойти такую особенность надо перед добавлением строки снять связь между датавиндами, а после добавления заново её установить.

dw_RealtyAdds.SetRedraw(False) // отключаем прорисовку

// отключаем связь подчинённой датавинды dw_RealtyAdds с главной dw_PersRealtyList
dw_RealtyAdds.of_SetLinkage(False)
// или отключаем фильтр
dw_RealtyAdds.SetFilter('1 = 1')
dw_RealtyAdds.Filter()

CurRow = dw_PersRealtyList.InsertRow(0) // добавляем строку в главную датавинду
dw_PersRealtyList.Object.Id_NaturalPerson[CurRow] = sCrd.IdPers
// применение метода Update() заполняет поле Identity в добавленных строках
dw_PersRealtyList.Update()

CurRow2 = dw_RealtyAdds.InsertRow(0)
// Id_Realty – Identity-поле датавинды dw_PersRealtyList
dw_RealtyAdds.Object.Id_Realty[CurRow2] = dw_PersRealtyList.Object.Id_Realty[CurRow]
dw_ RealtyAdds.Update()

// включаем связь
dw_RealtyAdds.of_SetLinkage(True)
dw_RealtyAdds.inv_Linkage.of_SetMaster(dw_PersRealtyList)
dw_RealtyAdds.inv_Linkage.Of_Register('Id_Realty', 'Id_Realty')
dw_RealtyAdds.inv_linkage.Of_SetUpdateOnRowChange(True)
// или включаем фильтр
dw_ RealtyAdds.SetFilter('Id_Realty = ' + String(dw_PersRealtyList.Object.Id_Realty[CurRow] ))
dw_ RealtyAdds.Filter()

dw_ RealtyAdds.SetRedraw(True) // включаем прорисовку

dw_PersRealtyList.SetRow(CurRow)
dw_PersRealtyList.ScrollToRow(CurRow)
dw_PersRealtyList.SetFocus()
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35871663
4. Если организована связь с помощью методов inv_Linkage или SetFilter() между главной и подчинённой датавиндами, то при удалении строк из них возможна потеря связи .
Для того чтобы обойти такую особенность, надо пользователю перейти в главной датавинде на другую строку и обратно.

CurRow = dw_PersRealtyList.GetRow()

CurRow2 = dw_RealtyAdds.Find('Id_Realty = ' + String(dw_PersRealtyList.Object.Id_Realty[CurRow]), 1, dw_RealtyAdds.RowCount())

If CurRow2 > 0 Then
dw_RealtyAdds.DeleteRow(CurRow2) // сначала удаляем строку подчинённой таблицы
dw_RealtyAdds.Update()
End If

dw_PersRealtyList.DeleteRow(CurRow) // затем удаляем строку главной таблицы

dw_PersRealtyList.Update()
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35871850
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще при сортировке расшаренных дв можно добавить
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35872863
5. Метод ShareData() связывает две датавинды. Выборка делается в основную датавинду, а в дополнительной данные отображаются и тоже доступны. Датавиды должны быть одинаковой структуры.
Обычно в одной датавинде отображается список, а в другой – поля одной строки.

dw_PersDULList.SetTransObject(SQLCA)
dw_PersDULList.ShareData(dw_PersDUL)
dw_PersDULList.Retrieve(sCrd.IdZaiav)
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35875110
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя как-нибудь этот безумный поток сознания отключить?
...
Рейтинг: 0 / 0
Нюансы Power Builderа
    #35875461
qaswedrf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это троль похоже.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Нюансы Power Builderа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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