Проблема очистки View
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Проблема очистки View
Clarion 6.3 9058, Win Xp, Oracle 12
Ситуация :
Читаю Open(TablView)
TablView{Prop:Sql} = 'Select * From Table трататата'
Loop
Next(TablView)
.....
End
Close(TablView)
При 1-ом обращении - все Ok.
При последующих обращениях в TablView может появиться задвоение считанной из Table информации.
Ставил перед End цикла оператор Delete(TablView) вроде как должно очистить последнюю успешно прочитанную запись
не помогло. В чем дело?
Ситуация :
Читаю Open(TablView)
TablView{Prop:Sql} = 'Select * From Table трататата'
Loop
Next(TablView)
.....
End
Close(TablView)
При 1-ом обращении - все Ok.
При последующих обращениях в TablView может появиться задвоение считанной из Table информации.
Ставил перед End цикла оператор Delete(TablView) вроде как должно очистить последнюю успешно прочитанную запись
не помогло. В чем дело?
- Дед Пахом
- Старичок
- Сообщения: 3143
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Проблема очистки View
Не знал, что PROP:Sql можно применять к VIEW, и ничего не нашёл в доке.
С уважением, ДП
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Проблема очистки View
К View можно делать prop:SQL. Все броузы так работают.
Мои замечания. "Select * from..." очень странно. Давайте описание хотя бы вьюхи. Второе. Надо бы после открытия вьюхи сделать set для неё. Вообще в моём понимании закрытия вьюхи достаточно для сброса "буфера". Я часто использую вьюху в таком контексте, не нарывался на проблемы.
Мои замечания. "Select * from..." очень странно. Давайте описание хотя бы вьюхи. Второе. Надо бы после открытия вьюхи сделать set для неё. Вообще в моём понимании закрытия вьюхи достаточно для сброса "буфера". Я часто использую вьюху в таком контексте, не нарывался на проблемы.
We are hard at work… for you.
- Дед Пахом
- Старичок
- Сообщения: 3143
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Проблема очистки View
Посмотри в справке по теме "Using Embedded SQL". С вьюхой нужно быть аккуратным, порядок полей надо хитро выстраивать.
We are hard at work… for you.
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Проблема очистки View
1. Задвоение записей обычно означает отсутствие первичного ключа.
2.А что делается внутри цикла и как проверяется View на завершение?
3.Select * означает чтение всех полей неизвестно в каком порядке. Лучше бы так не делать, а прочитать явно
4. Кстати, о какой СУБД идёт речь ?
2.А что делается внутри цикла и как проверяется View на завершение?
3.Select * означает чтение всех полей неизвестно в каком порядке. Лучше бы так не делать, а прочитать явно
4. Кстати, о какой СУБД идёт речь ?
-
- ✯ Ветеран ✯
- Сообщения: 5025
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 22 раза
Проблема очистки View
Согласен, не корректно выразился. Имел ввиду, что механизмы похожи. В броузе создаётся вьюха, здесь вьюха. А конкретная реализация где-то в недрах драйверов. Конечно, я её не знаю.
К примеру ТС это, наверно, не имеет значение. Один проход по вьюхе нормально всё вытаскивает. Проблемы начинаются где-то при использовании get, reget, next, previous. Может что-то с буфером вьюхи не так.
We are hard at work… for you.
Проблема очистки View
Извиняюсь за задержку.
На самом деле в реальном Select перечислены поля аналогичные TablView.
Open(TablView)
TablView{Prop:Sql} = 'Select a, b , c From Table трататата'
Loop
Next(TablView)
If ErrorCode() <> 0 then Break.
...
Delete(TablView) ! Когда Close(TablView) не помогло, усилил этим оператором - написано, что удаляет последнюю успешно прочитанную запись
End
Close(TablView) ! Думал, что очиститTablView
Set(TablView) перед Loop практически "подвешивает" расчет при большом количестве записей в TablView.
Такую конструкцию использовал постоянно, было все Ok,
При повторном обращении к этой конструкции в TablView сперва читаются записи оставшиеся от 1-го обращения,
а потом в конце их идут данные от повторного обращения.
На самом деле в реальном Select перечислены поля аналогичные TablView.
Open(TablView)
TablView{Prop:Sql} = 'Select a, b , c From Table трататата'
Loop
Next(TablView)
If ErrorCode() <> 0 then Break.
...
Delete(TablView) ! Когда Close(TablView) не помогло, усилил этим оператором - написано, что удаляет последнюю успешно прочитанную запись
End
Close(TablView) ! Думал, что очиститTablView
Set(TablView) перед Loop практически "подвешивает" расчет при большом количестве записей в TablView.
Такую конструкцию использовал постоянно, было все Ok,
При повторном обращении к этой конструкции в TablView сперва читаются записи оставшиеся от 1-го обращения,
а потом в конце их идут данные от повторного обращения.
- Дед Пахом
- Старичок
- Сообщения: 3143
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Проблема очистки View
Обстановка, прямо сказать, стрёмная.
Я бы, как уже намекал выше, делал prop:sql не по VIEW, а по FILE, а дальше уже LOOP по VIEW.
С уважением, ДП
Проблема очистки View
trnView VIEW(trn)
PROJECT(trn:DTRNTRAN)
PROJECT(trn:DTRNTRAN_DATE)
PROJECT(trn:DTRNTRAN_TIME)
PROJECT(trn:DTRNCREATE)
PROJECT(trn:DTRNCREATE_DATE)
PROJECT(trn:DTRNCREATE_TIME)
PROJECT(trn:CTRNACCD)
PROJECT(trn:CTRNCUR)
PROJECT(trn:CTRNACCC)
PROJECT(trn:CTRNCURC)
PROJECT(trn:MTRNSUM)
PROJECT(trn:MTRNRSUM)
PROJECT(trn:MTRNSUMC)
PROJECT(trn:ITRNTYPE)
PROJECT(trn:ITRNSOP)
PROJECT(trn:DTRNDOC)
PROJECT(trn:DTRNDOC_DATE)
PROJECT(trn:DTRNDOC_TIME)
PROJECT(trn:DTRNVAL)
PROJECT(trn:DTRNVAL_DATE)
PROJECT(trn:DTRNVAL_TIME)
PROJECT(trn:DTRNSHADOW)
PROJECT(trn:DTRNSHADOW_DATE)
PROJECT(trn:DTRNSHADOW_TIME)
PROJECT(trn:IDsmr)
End
TrnView{prop:Sql} = 'SELECT DTRNTRAN,DTRNCREATE,CTRNACCD,CTRNCUR,CTRNACCC,CTRNCURC,MTRNSUM,MTRNRSUM,MTRNSUMC,ITRNTYPE,ITRNSOP,DTRNDOC,DTRNVAL,DTRNSHADOW,IDSMR From Trn ' - и далее условие отбора
PROJECT(trn:DTRNTRAN)
PROJECT(trn:DTRNTRAN_DATE)
PROJECT(trn:DTRNTRAN_TIME)
PROJECT(trn:DTRNCREATE)
PROJECT(trn:DTRNCREATE_DATE)
PROJECT(trn:DTRNCREATE_TIME)
PROJECT(trn:CTRNACCD)
PROJECT(trn:CTRNCUR)
PROJECT(trn:CTRNACCC)
PROJECT(trn:CTRNCURC)
PROJECT(trn:MTRNSUM)
PROJECT(trn:MTRNRSUM)
PROJECT(trn:MTRNSUMC)
PROJECT(trn:ITRNTYPE)
PROJECT(trn:ITRNSOP)
PROJECT(trn:DTRNDOC)
PROJECT(trn:DTRNDOC_DATE)
PROJECT(trn:DTRNDOC_TIME)
PROJECT(trn:DTRNVAL)
PROJECT(trn:DTRNVAL_DATE)
PROJECT(trn:DTRNVAL_TIME)
PROJECT(trn:DTRNSHADOW)
PROJECT(trn:DTRNSHADOW_DATE)
PROJECT(trn:DTRNSHADOW_TIME)
PROJECT(trn:IDsmr)
End
TrnView{prop:Sql} = 'SELECT DTRNTRAN,DTRNCREATE,CTRNACCD,CTRNCUR,CTRNACCC,CTRNCURC,MTRNSUM,MTRNRSUM,MTRNSUMC,ITRNTYPE,ITRNSOP,DTRNDOC,DTRNVAL,DTRNSHADOW,IDSMR From Trn ' - и далее условие отбора
- Дед Пахом
- Старичок
- Сообщения: 3143
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
Проблема очистки View
Понимаю теперь, почему VIEW{prop:sql}, а не FILE{prop:sql}: ключ /TURBOSQL не поддерживается драйвером Oracle.
С уважением, ДП
Проблема очистки View
Неправильно ты, дядя Федор, бутерброд ешь... Если мы хотим просто отбирать записи, а все поля берутся из одной таблицы - нам нужен Prop:SQLFilter, а Prop:SQL вроде как и ни к чему.
Ну и поищи в этом форуме волшебное слово LoadQueueFromSQL - мне кучу времени экономит....
Ну и поищи в этом форуме волшебное слово LoadQueueFromSQL - мне кучу времени экономит....