|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
Есть необходимость узнать значения retrieve аргументов перед retrieve. Для возможной отмены retrieve. Но в событии retrievestart их нет. Ф-ю Retrieve(arg1, ...) билдер не ндает переопределить Подскажите, куда копать? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 11:21 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
Не совсем понятна задача, ведь вы же первоначально эти аргументы и задаете перед вызовом Retrieve(arg1, ...), а потом вдруг вы хотите их посмотреть и если что поменять. Вызываете dw.Retrieve(arg1, ...) просто тогда, когда уже проверили аргументы, например в своем отдельном событии или функции, а не в событии constructor у DW. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 17:56 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleksЕсть необходимость узнать значения retrieve аргументов перед retrieve. Для возможной отмены retrieve. Но в событии retrievestart их нет. Ф-ю Retrieve(arg1, ...) билдер не ндает переопределить Подскажите, куда копать? аргументы retrieve можно получить через evaluate, если я правильно помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2016, 18:38 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
Уточню Есть желание сделать кеширование данных на клиенте. т.е. если уже был ретрив с такими параметрами - не делать новый а вместо него доставать данные из кеша. Аргументы ретрив можно получить через евалюейт - но только после самого ретрива. Мне же необходимо перед ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2016, 09:43 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleks, Код: sql 1.
Но я тоже не совсем понимаю задачу. Почему не проверить аргументы перед вызовом? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2016, 10:12 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
Riska, Где мне перед вызовом их можно узнать? Переопределить Retrieve(arg...) билдер не дает ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2016, 10:23 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleks, Судя по всему pfc Вы не используете . Может Вам еще не поздно прикрутить к своему проекту. Отпадет очень много головной боли. Там уже реализован механизам "перехвата" ретрива. и технология кеширования (расшаривания) тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2016, 11:09 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
Попробуйте анализировать не аргументы а сам запрос в SQLPreview ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2016, 11:53 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleksУточню Есть желание сделать кеширование данных на клиенте. т.е. если уже был ретрив с такими параметрами - не делать новый а вместо него доставать данные из кеша. Аргументы ретрив можно получить через евалюейт - но только после самого ретрива. Мне же необходимо перед Все равно не пойму, что мешает вам сохранить предыдущие аргументы и перед вызовом новых данных сравнить их с новыми аргументами, которые вы задали, и далее сделать, то что вам нужно. Создается впечатление, что не вы задаете аргументы для Retrieve, иначе бы такой задачи не стояло. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2016, 12:44 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
AISroleksУточню Есть желание сделать кеширование данных на клиенте. т.е. если уже был ретрив с такими параметрами - не делать новый а вместо него доставать данные из кеша. Аргументы ретрив можно получить через евалюейт - но только после самого ретрива. Мне же необходимо перед Все равно не пойму, что мешает вам сохранить предыдущие аргументы и перед вызовом новых данных сравнить их с новыми аргументами, которые вы задали, и далее сделать, то что вам нужно. Создается впечатление, что не вы задаете аргументы для Retrieve, иначе бы такой задачи не стояло. Билдер не дает возможности переопределить Retrieve() ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 10:39 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleksAISпропущено... .... Создается впечатление, что не вы задаете аргументы для Retrieve, иначе бы такой задачи не стояло. Билдер не дает возможности переопределить Retrieve() Вот же ж Вы настойчивый и упрямый. Если у Вас используется библиотека pfc посмотрите на событие pfc_retrieve объекта pfc_u_dw если нет то попробую объяснить на пальцах что Вам мешает создать свой объект унаследованный от datawindow объявить там событие типа my_retrieve и в нем проверять параметры и в нем же вызывать или не вызывать retrieve. разве что Вам достался мега проект в котором нет наследника datawindow тогда Вам нужна лопата побольше чем у Геракла . ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 13:27 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
В самом событии retrievestart значений аргументов нет. Но можно получить их в этот момент методом dw.Describe("Evaluate(..)", 0) и, в зависимости от результата, блокировать дальнейшую выборку. Никогда не пробовал, но, по идее, должно сработать. Другой, более сложный вариант - добавить искусственно-созданный дополнительный числовой параметр (например, FooArg), а оператор WHERE выражения SQL несколько изменить, на что-то подобное: Код: plsql 1.
В зависимости от условий передаете в fooArg либо 0, либо 1. Надеюсь, идея понятна. Правда, в последнем случае придется делать retrieve() дважды. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 14:58 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleks... Билдер не дает возможности переопределить Retrieve() Не надо переопределять Retrieve()! ДО его вызова проверьте аргументы и тогда уже решайте вызывать или нет. Что здесь не понятного или не получается? P.S. надеюсь, что вы понимаете, что при одинаковых аргументах спустя период времени могут быть получены назные наборы данных и ваша задача теряет всякий смысл. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2016, 15:50 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleks... Для возможной отмены retrieve. ... Подскажите, куда копать? Копать можно сюда PowerBuilder Help SQLPreview event (DataWindows) Description Occurs immediately before a SQL statement is submitted to the DBMS. Functions that trigger DBMS activity are Retrieve, Update, and ReselectRow. PowerBuilder event information Event ID: pbm_dwnsql Argument Description request SQLPreviewFunction by value. The function that initiated the database activity.For a list of valid values, see SQLPreviewFunction. sqltype SQLPreviewType by value. The type of SQL statement being sent to the DBMS.For a list of valid values, see SQLPreviewType . sqlsyntax String by value. The full text of the SQL statement. buffer DWBuffer by value. The buffer containing the row involved in the database activity. For a list of valid values, see DWBuffer. row Long by value. The number of the row involved in the database activity, that is, the row being updated, selected, inserted, or deleted. ... Return value Set the return code to affect the outcome of the event: 0 Continue processing 1 Stop processing 2 Skip this request and execute the next request For information on setting the return code in a particular environment, see "About return values for DataWindow events". Usage Some uses for the sqlsyntax argument are: · Changing the SQL to be executed (you can get the value of sqlsyntax, modify it, and call SetSQLPreview) · Keeping a record (you can write the SQL statement to a log file) Reported row number The row number stored in row is the number of the row in the buffer, not the number the row had when it was retrieved into the DataWindow object. If the row that caused the error is in the Filter buffer, you must unfilter it if you want the user to correct the problem. ... Но я тоже не понимаю, почему вы так упорно не хотите сохранить аргументы в собственном коде, который обращается к встроенной функции билдера. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.10.2016, 17:15 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
А в чем проблема записать аргументы например в message свой и дальше проверять перед retrieve если в message есть значение то брать оттуда. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2016, 15:20 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
AISroleks... Билдер не дает возможности переопределить Retrieve() Не надо переопределять Retrieve()! ДО его вызова проверьте аргументы и тогда уже решайте вызывать или нет. Что здесь не понятного или не получается? P.S. надеюсь, что вы понимаете, что при одинаковых аргументах спустя период времени могут быть получены назные наборы данных и ваша задача теряет всякий смысл. хотелось просто обойтись малой кровью, не заменяя ретрив на свою ф-ю ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 17:10 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleksAISпропущено... Не надо переопределять Retrieve()! ДО его вызова проверьте аргументы и тогда уже решайте вызывать или нет. Что здесь не понятного или не получается? P.S. надеюсь, что вы понимаете, что при одинаковых аргументах спустя период времени могут быть получены назные наборы данных и ваша задача теряет всякий смысл. хотелось просто обойтись малой кровью, не заменяя ретрив на свою ф-ю Вы не поняли моей ремарки. Я посоветовал вообще нечего с Retrieve() не делать, т.к. при одних и тех же аргументах запрос может вернуть разные наборы данных спустя, например, час и ваша экономия времени приведет только к негативному результату - вы не получите новых данных, а будете довольствоваться устаревшими. ПС. а про "малой кровью" вообще ничего не понял :( проще не куда у DW создать функцию (или событие), в которой проверять уж если таки надо аргументы, а потом её же дергать при нужде вызова Retrieve(). Ну, да ладно... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2016, 18:31 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
AIS Я посоветовал вообще нечего с Retrieve() не делать, т.к. при одних и тех же аргументах запрос может вернуть разные наборы данных спустя, например, час и ваша экономия времени приведет только к негативному результату - вы не получите новых данных, а будете довольствоваться устаревшими. Золотые слова! Полностью согласен. Если только дополнить слегка. Можно ретрайвить что-то позволяющее оценить изменились или нет данные перед основным ретрайвом. В любом другом случае - все уже сказано выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2016, 22:03 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
AISroleksпропущено... хотелось просто обойтись малой кровью, не заменяя ретрив на свою ф-ю Вы не поняли моей ремарки. Я посоветовал вообще нечего с Retrieve() не делать, т.к. при одних и тех же аргументах запрос может вернуть разные наборы данных спустя, например, час и ваша экономия времени приведет только к негативному результату - вы не получите новых данных, а будете довольствоваться устаревшими. ПС. а про "малой кровью" вообще ничего не понял :( проще не куда у DW создать функцию (или событие), в которой проверять уж если таки надо аргументы, а потом её же дергать при нужде вызова Retrieve(). Ну, да ладно... Самое простое и правильное решение- переопределение ретрива Но, к сожалению, 'то невозможно Все остальные варианты решений требуют изменения не только 1 обьекта ДВ, но и мест откуда вызывается ретрив, коих в коде немало ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2016, 11:45 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
AISroleksпропущено... хотелось просто обойтись малой кровью, не заменяя ретрив на свою ф-ю Вы не поняли моей ремарки. Я посоветовал вообще нечего с Retrieve() не делать, т.к. при одних и тех же аргументах запрос может вернуть разные наборы данных спустя, например, час и ваша экономия времени приведет только к негативному результату - вы не получите новых данных, а будете довольствоваться устаревшими. ПС. а про "малой кровью" вообще ничего не понял :( проще не куда у DW создать функцию (или событие), в которой проверять уж если таки надо аргументы, а потом её же дергать при нужде вызова Retrieve(). Ну, да ладно... TO roleks Вчитайтесь в выделенные слова очень внимательно. Они не имеют смысла только если в одно рабочее место и никто и ничто не может изменить данные , кроме как из единственного экземпляра вашей программы. Будьте благоразумны . и судя по вашей фразе roleksВсе остальные варианты решений требуют изменения не только 1 обьекта ДВ, но и мест откуда вызывается ретрив, коих в коде немало pfc вы таки не используете , что добавляет Вам лишней головной боли ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2016, 14:09 |
|
Узнать значения retrieve аргументов перед retrieve
|
|||
---|---|---|---|
#18+
roleksСамое простое и правильное решение- переопределение ретрива Но, к сожалению, 'то невозможно Все остальные варианты решений требуют изменения не только 1 обьекта ДВ, но и мест откуда вызывается ретрив, коих в коде немало Ну почему невозможно? Сделайте DW на основе процедуры и переопределяйте все что хотите внутри нее. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2016, 19:10 |
|
|
start [/forum/topic.php?fid=15&fpage=7&tid=1335195]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 143ms |
0 / 0 |