Проблема очистки View
ODBC
Модератор: 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) вроде как должно очистить последнюю успешно прочитанную запись
не помогло. В чем дело?
Anatoly
- Дед Пахом
- Старичок
- Сообщения: 3300
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Проблема очистки View
Не знал, что PROP:Sql можно применять к VIEW, и ничего не нашёл в доке.
С уважением, ДП
Дед Пахом
-
- ✯ Ветеран ✯
- Сообщения: 5174
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Проблема очистки View
К View можно делать prop:SQL. Все броузы так работают.
Мои замечания. "Select * from..." очень странно. Давайте описание хотя бы вьюхи. Второе. Надо бы после открытия вьюхи сделать set для неё. Вообще в моём понимании закрытия вьюхи достаточно для сброса "буфера". Я часто использую вьюху в таком контексте, не нарывался на проблемы.
Мои замечания. "Select * from..." очень странно. Давайте описание хотя бы вьюхи. Второе. Надо бы после открытия вьюхи сделать set для неё. Вообще в моём понимании закрытия вьюхи достаточно для сброса "буфера". Я часто использую вьюху в таком контексте, не нарывался на проблемы.
We are hard at work… for you. 

kreator
Дед Пахом
-
- ✯ Ветеран ✯
- Сообщения: 5174
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Проблема очистки View
Посмотри в справке по теме "Using Embedded SQL". С вьюхой нужно быть аккуратным, порядок полей надо хитро выстраивать.Дед Пахом писал(а): 29 Июнь 2018, 11:41Не знал, что PROP:Sql можно применять к VIEW, и ничего не нашёл в доке.
We are hard at work… for you. 

kreator
kreator
- Дед Пахом
- Старичок
- Сообщения: 3300
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Дед Пахом
Проблема очистки View
1. Задвоение записей обычно означает отсутствие первичного ключа.
2.А что делается внутри цикла и как проверяется View на завершение?
3.Select * означает чтение всех полей неизвестно в каком порядке. Лучше бы так не делать, а прочитать явно
4. Кстати, о какой СУБД идёт речь ?
2.А что делается внутри цикла и как проверяется View на завершение?
3.Select * означает чтение всех полей неизвестно в каком порядке. Лучше бы так не делать, а прочитать явно
4. Кстати, о какой СУБД идёт речь ?
Yufil
-
- ✯ Ветеран ✯
- Сообщения: 5174
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Проблема очистки View
Согласен, не корректно выразился. Имел ввиду, что механизмы похожи. В броузе создаётся вьюха, здесь вьюха. А конкретная реализация где-то в недрах драйверов. Конечно, я её не знаю.
К примеру ТС это, наверно, не имеет значение. Один проход по вьюхе нормально всё вытаскивает. Проблемы начинаются где-то при использовании get, reget, next, previous. Может что-то с буфером вьюхи не так.
We are hard at work… for you. 

kreator
Проблема очистки 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-го обращения,
а потом в конце их идут данные от повторного обращения.
Anatoly
Дед Пахом
- Дед Пахом
- Старичок
- Сообщения: 3300
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Дед Пахом
Проблема очистки 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 ' - и далее условие отбора
Anatoly
- Дед Пахом
- Старичок
- Сообщения: 3300
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
Проблема очистки View
Понимаю теперь, почему VIEW{prop:sql}, а не FILE{prop:sql}: ключ /TURBOSQL не поддерживается драйвером Oracle.
С уважением, ДП
Дед Пахом
Проблема очистки View
Неправильно ты, дядя Федор, бутерброд ешь... Если мы хотим просто отбирать записи, а все поля берутся из одной таблицы - нам нужен Prop:SQLFilter, а Prop:SQL вроде как и ни к чему.
Ну и поищи в этом форуме волшебное слово LoadQueueFromSQL - мне кучу времени экономит....
Ну и поищи в этом форуме волшебное слово LoadQueueFromSQL - мне кучу времени экономит....
Yufil
Вернуться в «SQL, Oracle, ...»
Перейти
- CW
- ↳ CLARION for Windows
- ↳ CLARION for Internet
- ↳ Clarion.NET
- Эксклюзив
- ↳ Приват
- CLARION и...
- ↳ Reports
- ↳ Железо
- ↳ Готовые программы, шаблоны, библиотеки...
- ↳ cJSON
- ↳ LibCurl
- ↳ MAV
- ↳ SQL, Oracle, ...
- ↳ Multi-программирование(Pascal/Delphi, и т.д.)
- ↳ WinDev
- DOS
- ↳ CLARION for DOS
- Разное
- ↳ Новости
- ↳ English
- ↳ Ресурсы
- ↳ Работа
- ↳ Обо всем ...
- ↳ Обсуждение этого Форума (типа, Гостевая книга)