|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
На понимание нюансов тратится много времени и усилий. А если они описаны в одном месте, то при мистическом поведении программы, можно довольно быстро мистику развеять. Поделитесь нюансами в одном месте - здесь. //............................................................. 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2009, 23:19 |
|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
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())] ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2009, 09:22 |
|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
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() ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2009, 08:09 |
|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
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() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 14:39 |
|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
еще при сортировке расшаренных дв можно добавить ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2009, 15:36 |
|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
5. Метод ShareData() связывает две датавинды. Выборка делается в основную датавинду, а в дополнительной данные отображаются и тоже доступны. Датавиды должны быть одинаковой структуры. Обычно в одной датавинде отображается список, а в другой – поля одной строки. dw_PersDULList.SetTransObject(SQLCA) dw_PersDULList.ShareData(dw_PersDUL) dw_PersDULList.Retrieve(sCrd.IdZaiav) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2009, 00:09 |
|
Нюансы Power Builderа
|
|||
---|---|---|---|
#18+
А нельзя как-нибудь этот безумный поток сознания отключить? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2009, 18:57 |
|
|
start [/forum/topic.php?fid=15&fpage=35&tid=1336349]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 337ms |
total: | 476ms |
0 / 0 |