powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / sharedata()
25 сообщений из 46, страница 1 из 2
sharedata()
    #32918007
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Великий ALL.
ЕСть вопрос. PB9.0, W2003, работаю в ПФС.
Есть простая таблица-хочу ее видеть на одной закладке в GRID для скорости навигации и простого редактирования, на другой в FORM для редактирования(полей много). Закладки u_tabpg. Все of_updateable.
1-вариант-shareData этих DW. В результате pfc_save пишет -your DW doesn't have UPDATE capability? Error 3-...between retrieve and update-то есть ничего не получается.
2-вариант-воспользовался Linkage. Дает ошибку в синтаксисе оператора UPDATE-хотя с виду Update совершенно правильный.
Кто знает как сделать такую вещь!
...
Рейтинг: 0 / 0
sharedata()
    #32918024
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знаем. Нужно прекратить халтурить и написать изменения БД руками. Тогда всё получится.
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт!
...
Рейтинг: 0 / 0
sharedata()
    #32918075
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ответ-только что значит "писать изменения руками"? у каждого руки разные!
...
Рейтинг: 0 / 0
sharedata()
    #32918241
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формировать INSERT/UPDATE/DELETE в БД вручную, а не встроенными средствами. Немного муторно, но избавляет от загадочных глюков. Кроме того, проще делать валидацию вводимых данных.
____________________________________
- Гарфилд, мышь!
- Спасибо, я сыт!
...
Рейтинг: 0 / 0
sharedata()
    #32918259
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000Формировать INSERT/UPDATE/DELETE в БД вручную, а не встроенными средствами. Немного муторно, но избавляет от загадочных глюков. Кроме того, проще делать валидацию вводимых данных.
____________________________________
Очень не хочется пользоваться нештатными(скажем нетипичными) средствами ПБ-там где можно штатными. Это мой принцип. Хотелось бы совета, как управляя Properties /events избежать этой маленькой хитрости.
...
Рейтинг: 0 / 0
sharedata()
    #32918309
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboykoОчень не хочется пользоваться нештатными(скажем нетипичными) средствами ПБ-там где можно штатными.
С каких пор ESQL стал нештатным средством?

Это мой принцип.
У меня другой принцип - делать так, как работает .

Хотелось бы совета, как управляя Properties /events избежать этой маленькой хитрости.
Не ко мне.
...
Рейтинг: 0 / 0
sharedata()
    #32918414
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboyko1-вариант-shareData этих DW. В результате pfc_save пишет -your DW doesn't have UPDATE capability? Error 3-...between retrieve and update-то есть ничего не получается.
проверь Update Properties твоих DWobject'ов ...
...
Рейтинг: 0 / 0
sharedata()
    #32918810
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sboyko Dim2000Формировать INSERT/UPDATE/DELETE в БД вручную, а не встроенными средствами. Немного муторно, но избавляет от загадочных глюков. Кроме того, проще делать валидацию вводимых данных.
____________________________________
Очень не хочется пользоваться нештатными(скажем нетипичными) средствами ПБ-там где можно штатными. Это мой принцип. Хотелось бы совета, как управляя Properties /events избежать этой маленькой хитрости.Насколько я понимаю, вам нужно формировать update только для одного DW - второе получает разделяемые данные.

Вообще, рекомендую посмотреть исходный код объектов в pfc-библиотеках, начиная с события pfc_save в pfc_w_master. Там все довольно прозрачно.

Dim2000...
Это мой принцип.
У меня другой принцип - делать так, как работает .
...Хм... Не от таких ли принципов возникает код, принципиально требующий присутствия автора?
...
Рейтинг: 0 / 0
sharedata()
    #32918881
Юзя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня одновременно используеться и ShareData и LinckAge !
Все очень просто - как сказали выше, из всех Шареных DW надо оставить одно со свойством is_updateble , первое! Отсальные - убрать.
Тогда pfc_save() - будет работать нормально.
...
Рейтинг: 0 / 0
sharedata()
    #32918890
Guest_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sboykoВеликий ALL.
ЕСть вопрос. PB9.0, W2003, работаю в ПФС.
Есть простая таблица-хочу ее видеть на одной закладке в GRID для скорости навигации и простого редактирования, на другой в FORM для редактирования(полей много). Закладки u_tabpg. Все of_updateable.
1-вариант-shareData этих DW. В результате pfc_save пишет -your DW doesn't have UPDATE capability? Error 3-...between retrieve and update-то есть ничего не получается.

Попробуй сделать ShareDataOff перед сохранением и ShareData после сохранения.
...
Рейтинг: 0 / 0
sharedata()
    #32918924
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99 Dim2000...У меня другой принцип - делать так, как работает .Хм... Не от таких ли принципов возникает код, принципиально требующий присутствия автора?
Честно говоря, мне абсолютно всё равно, что будет с моим кодом после моей смерти ;). Но, по отзывам других людей, написанное мной требует минимального внимания и легко понятно даже начинающим. Не так уж и плохо. Что же касается внесения изменений в БД только "руками" - это моё убеждение, выстраданное переделкой разного рода глюкал, оставшихся мне в наследство от других.
...
Рейтинг: 0 / 0
sharedata()
    #32919158
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из соседнего топика цитата:
ФилиппНи строчки embedded SQL!!! :-)Обеими руками - за.
Любителей ESQL - давить!
Загадочность глюков как правило проистекает из недостаточно четкого понимания как работает datawindow (ну или PFC).
Делать какие-либо действия с БД в обход стандартных возможностей DW - неправильно.
При таком подходе - данные из DW сохраняются вручную с помощью ESQL - кода больше - соответственно производительность падает - возрастает вероятность ошибки. И поддерживать сложнее, что бы Вы там ни говорили.

По поводу вопроса - правильно использовать Linkage и ShareData одновременно.
Linkage переключить в режим Scroll.
Linkage обеспечивает скроллинг, ShareData - синхронность данных.
updateable у FORM надо отключить ( of_SetUpdateable(False) ? ) поскольку достаточно того, что изменения сохранит GRID.

Выключать ShareData перед сохранением - бред!
...
Рейтинг: 0 / 0
sharedata()
    #32919443
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000Знаем. Нужно прекратить халтурить и написать изменения БД руками. Тогда всё получится.

Более безобразного совета на этом форуме я ещё не слышал.
Ни в коем случае.
...
Рейтинг: 0 / 0
sharedata()
    #32919468
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп Dim2000Знаем. Нужно прекратить халтурить и написать изменения БД руками. Тогда всё получится.
Более безобразного совета на этом форуме я ещё не слышал.
Ни в коем случае.
Можно обосновать? Я свою точку зрения вообще-то обосновал - на разного рода трудновоспроизводимые глюки от использования DW для модификации данных я насмотрелся предостаточно для того, чтобы понять, что это делать не нужно. Оригинальным автором поделий был не я - я их доводил до ума.
...
Рейтинг: 0 / 0
sharedata()
    #32919470
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Г-н sboyko, сделать нужно следующим образом:
1) n_dsa descendant instance variable (назовём для наглядности ids_defaults) на твоём таб контроле, который и будет шариться с DWми на закладках.
2) В Constructorе таб контрола пишешь типа:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
powerobject lpo_update[]
integer ii, kount

ids_defaults = CREATE u_ds_defaults_db

window lw_parent
IF of_getparentwindow(lw_parent) = SUCCESS THEN 
	ids_defaults.of_setparentwindow(lw_parent)
END IF
ids_defaults.of_Retrieve(АРГУМЕНТЫ)

ii = UpperBound(control)

FOR kount =  1  to ii
	control[kount].dynamic function of_set_source(ids_defaults)	
NEXT
//понятно, что of_set_source - функция на предке закладок, которая собственно и говорит - прошарить.
lpo_update = control

lpo_update[ii +  1 ] = ids_defaults
of_SetUpdateObjects(lpo_update)

3) На datawindows, сидящих на закладках, скриптаешь всё как полагается, pfc_Validation и т.п., НО override pfc_Update и в нём просто пишешь RETURN SUCCESS , поскольку эти datawindows - display only.

По сути дела - всё, остальное - косметика.
...
Рейтинг: 0 / 0
sharedata()
    #32919479
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000на разного рода трудновоспроизводимые глюки от использования DW для модификации данных я насмотрелся предостаточно для того, чтобы понять, что это делать не нужно.

1) разного рода трудновоспроизводимые глюки от использования DW для модификации данных возникают от кривых рук программистов.
2) НЕ использовать DW для модификации данных - оксюморон, это всё равно что сказать - мы используем Powerbuilder, но при этом НЕ используем Powerbuilder .
...
Рейтинг: 0 / 0
sharedata()
    #32919733
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Филипп2) НЕ использовать DW для модификации данных - оксюморон, это всё равно что сказать - мы используем Powerbuilder, но при этом НЕ используем Powerbuilder .
Нее - круче сказать - "Мы используем PB, но не пользуемся DW" :)

Dim2000
Глюки конечно есть, но при достаточно граммотно подходе они все обходятся. Делитесь глюками, глядишь найдуться люди, которые их давно обошли. Не использовать же DW для сохранения данных что через Update table, что через Update Procedure - для меня по меньшей мере странно звучит.
...
Рейтинг: 0 / 0
sharedata()
    #32921472
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUSНее - круче сказать - "Мы используем PB, но не пользуемся DW" :)
Не-а, мы пользуемся DW для доставания и показывания данных. Это у него получается просто замечательно .

Глюки конечно есть, но при достаточно граммотно подходе они все обходятся. Делитесь глюками, глядишь найдуться люди, которые их давно обошли.
Тынц
Проблема не у меня (у меня их нет), но с удовольствием прочитаю о способах её решения ;).
...
Рейтинг: 0 / 0
sharedata()
    #32921685
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так это проблема ADO.Net провайдера, а не datawindow, не надо нам тут передёргивать...
...
Рейтинг: 0 / 0
sharedata()
    #32921734
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппНу так это проблема ADO.Net провайдера, а не datawindow
Я считаю это проблемами DW. Ибо select @@identity должно нормально работать на любом хотя бы условно пригодном к использованию провайдере.

не надо нам тут передёргивать...
Это и всё, что Вы можете сказать по существу проблемы ;)?
...
Рейтинг: 0 / 0
sharedata()
    #32921826
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема не у меня (у меня их нет),У стоматолога который считает что зубы не надо лечить, а надо сразу вырывать нафик - тоже проблем нет. Проблемы потом у пациентов
но с удовольствием прочитаю о способах её решения ;).Так там уже есть как минимум два решения
- пользоваться OLEDB вместо ADO.NET
( в семерке когда только появился OLEDB он тоже глючил, потом стало гораздо лучше)

- делать select scope_identity() после UPDATE.
( именно так и приходилось делать при использовании OLEDB под 7ой или 8ой - не помню уже.)
Слегка подправить поведение DW и полностью ампутировать INSERT/UPDATE/DELETE это знаете ли разные вещи.

Я тоже считаю что "трудновоспроизводимые глюки" это либо неумение, либо нежелание разобраться.
Я не сталкивался за последние 10 лет с глюками при сохранении DW которые нельзя было бы обойти, в худшем случае - с помощью пары тройки десятков строк кода.
...
Рейтинг: 0 / 0
sharedata()
    #32921839
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Считать вы можете всё, что угодно, но если воспользоваться вашим блестящим советом и "написать изменения БД руками", то бишь взять и написать embedded SQL, который к примеру пойдёт через тот же "любой хотя бы условно пригодный к использованию провайдер", то у вас каким то чудом произойдёт fetch identity прямо внутри UPDATE statementа, и опять же каким то чудом значение identity будет засунуто в какую то локальную переменную?
Если "любой хотя бы условно пригодный к использованию провайдер" поддерживает такую операцию, тогда значение identity появится и в соответствующем datawindow, если нет, то нет, причём здесь datawindow?

Так что не надо нам тут НЕ по существу проблемы передёргивать...
...
Рейтинг: 0 / 0
sharedata()
    #32921900
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000 Тынц
Проблема не у меня (у меня их нет), но с удовольствием прочитаю о способах её решения ;).Пожалуйста!
Если проблема возникает при миграции на очередную версию среды разработки, то, прежде всего, стоит задаться вопросом - надо ли переходить?

Посчитать все плюсы и минусы, к которым такой переход приведет.

В приведенном вами случае минусы перевешивают все имеющиеся плюсы. Думаю, что через год-полтора проблема будет решена, тогда и можно будет задуматься о переходе.
...
Рейтинг: 0 / 0
sharedata()
    #32921952
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппСчитать вы можете всё, что угодно, но если воспользоваться вашим блестящим советом и "написать изменения БД руками", то бишь взять и написать embedded SQL, который к примеру пойдёт через тот же "любой хотя бы условно пригодный к использованию провайдер", то у вас каким то чудом произойдёт fetch identity прямо внутри UPDATE statementа, и опять же каким то чудом значение identity будет засунуто в какую то локальную переменную?
Внутри - не пойдёт. А вот select @@identity into :new_id from dummy (или как там правильно для MSSQL - я сижу на ASA) пока что не подводило.

Так что не надо нам тут НЕ по существу проблемы передёргивать...
Не говорите, что мне нужно делать... продолжение знаете ? Так вот, если по существу вопроса - откуда такая уверенность, что дело не в том, что DW "забывает" послать этот самый select @@identity (или что там нужно посылать) на сервер? Если бы Вы сказали, что select @@identity, посланный с помощью ESQL через ADO.NET на MSSQL, возвращает какую-то чушь - это бы меня убедило (даже поверю на слово - "десятки" под рукой нет).
...
Рейтинг: 0 / 0
sharedata()
    #32921987
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё по существу проблемы (не в этом топике):
1) OLEDB и ADO.NET are equivalent at this point as the current ADO.NET support
in PB is limited to the Data Provider for OLEDB (as the ADO.NET support
is limited to the .NET Data Provider for OLEDB which is in the
System.Data.OleDb namespace)

2) From Sybase's employee - ADO.NET in PB 10 is a layer above PB10. I don't see a compelling use of the ADO.NET driver in PB10. It will be key in PB11 when we can create .NET assemblies, and it's key now in DataWindow .NET 1.0/1.5.

Отсюда вывод - даже в РВ10 НЕ надо использовать ADO.NET (он там ТОЛЬКО для DataWindow.NET) , а надо OLEDB
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / sharedata()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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