|
|
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
Доброго дня всем! Ситуация стандартная.Есть грид,построенный на таблице,к которой из нескольких справочников подтягиваются наименования(на гриде в соответствующих столбцах источники - поля из справочников).Как обычно,возникла необходимость по клику на хидере столбца менять сортировку.Я так понимаю,что без LocalView тут не обойтись.Или можно как-то еще? Создала обновляемое представление,кинула в ДЕ формы,привязала к гриду. Да,пытаюсь также применять буферизацию - опыта нет,прошу не ругаться. Собственно,вопрос про буферизацию.Раньше пробовала на свободных таблицах использовать код от Владимира Максимова,который часто на форуме встречается Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Объясните,плиз,этот код и для представления использовать надо или как? А новую запись куда вставлять,в представление? А удалять запись из него же? До этого новую запись вставляла через курсор(для добавления/редактирвания открывается отделная форрмочка),удаляла напрямую из таблицы. Прошу прощения за странные вопросы,сумбур в голове. Форум уже которой день читаю,и собственно в фоксе пробую делать,пока не очень получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 13:24 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
mary_nРаньше пробовала на свободных таблицах использовать код от Владимира Максимова,который часто на форуме встречается Да. Я часто на форме встречаюсь Начнем с теории. Смотри вложенный файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 14:35 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
ВладимирМ ,конечно имелся ввиду код :) Чесслово,все эти статьи с рекомендациями у меня сохранены в соответствующей библиотечке,периодически перечитываю,пытаюсь применять. С представлениями что-то торможу.Оно ведь само по себе уже в режиме буферизации,3.Update вроде нормально проходит,а вот с insert и delete как быть. Я ж говорю,удаляла раньше напрямую из таблицы,а сами таблицы были свободные,никаких тебе триггеров,да и проверок особых тоже.Неправильно,да? А сейчас с практически нулевым опытом(после ДОСа) приходится осваивать работу с базой данных,триггеры и прочее,буферизацию и вот представления.Теории вроде поднакопала,с применением не очень получается пока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 15:11 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
2 mary_n прочитайте про курсорадаптер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 15:21 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
Сначала попробуйте сформулировать, чем так уж принципиально отличается процесс создания новой записи или удаления записи, от процесса модификации записи? В любом случае, вносятся некие изменения в таблицу. Если таблица буферизирована, то опять же, в любом случае, все эти изменения попадают в буфер таблицы. Потом, все эти изменения переносятся из буфера в исходную таблицу. А как Вы в DOS-программах организовывали модификацию? Правили напрямую записи исходных таблиц или создавали некий "промежуточный слой" в виде переменных памяти или копии таблицы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 15:26 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
Код Дага Хеннига Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. прочитайте http://newsletter.narod.ru/foxtalk/oct2003.htm#oct01 и на сайте Михаила Дроздова есть примеры с картиночками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 15:33 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
2 alex11100 Мария не понимает принципов работы. Грубо говоря, "арифметики". А Вы ей предлагаете заняться "дифференциальными уравнениями". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 15:46 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
идите на фоксклаб Мария читайте, и не слушайте этого дядю КАД даст возможность Вам абстрагироваться от источника и сделает за Вас всю рутину ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 15:51 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
alex11100идите на фоксклаб Мария читайте, и не слушайте этого дядю ЧТО читать-то? Вы дали ссылку на голый код без объяснений. Думаете, человек, который не понимает логику работы разберется в этом коде? Ссылку на сайт Михаила вообще не дали. К сожалению, у него крайне запутанная навигация по сайту. Где там ссылка на картинки по поводу буферизации? Возможно я не в курсе. Если имелось в виду вот эта страничка http://vfpdev.narod.ru/ppt_r.html То там есть описание класса CursorAdapter, но нет описания принципов работы буферизации. А без этого, все это "темный лес". alex11100КАД даст возможность Вам абстрагироваться от источника и сделает за Вас всю рутину Это Вы о чем? КАК CursorAdapter поможет понять принципы работы с буферами данных? ЧЕМ работа с буферами данных в CursorAdapter отличается от работы с буферами данных в Local View? При чем здесь абстрагирование от источника? Опять безапеляционные заявления без попытки объяснить? Даже не мне, а тому, кто спрашивает. Вы же не ответили на вопрос Марии. Вы ее просто послали. Даже не в переносном, а в прямом смысле Лучше уже совсем не отвечать, чем отвечать ТАКИМ образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2006, 16:26 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
alex111002 mary_n прочитайте про курсорадаптер Это мне рановато,как правильно заметил Владимир. ВладимирМА как Вы в DOS-программах организовывали модификацию? Правили напрямую записи исходных таблиц или создавали некий "промежуточный слой" в виде переменных памяти или копии таблицы? Через переменные. Да принцип буферизации я вроде понимаю.С утра сегодня ковыряюсь со вставкой новой записи. На вкладке UpdateCriteria ставлю галочку в Send SQL updates,в списке "Table" выбираю главную таблицу,помечаю в ней на обновление все поля,кроме ключевого.Поля,котрые подтягиваются из справочников,на обновление не помечаю. Вставляю пустую запись в my_view через insert-SQL,через текстбоксы заполняю поля,потом TableUpdate(.T.,.F.,"my_view"),в итоге запись вставляется и в главную таблицу,и в каждый справочник по новой записи тоже.Я понима.,что без кода тяжело понять,что там у меня.Но может хоть общий принцип расскажете,где какие хитрости? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 16:32 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
2 mary_n угу, нашла себе оправдание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 17:17 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
mary_nДа принцип буферизации я вроде понимаю.С утра сегодня ковыряюсь со вставкой новой записи. На вкладке UpdateCriteria ставлю галочку в Send SQL updates,в списке "Table" выбираю главную таблицу,помечаю в ней на обновление все поля,кроме ключевого.Поля,котрые подтягиваются из справочников,на обновление не помечаю. Вставляю пустую запись в my_view через insert-SQL,через текстбоксы заполняю поля,потом TableUpdate(.T.,.F.,"my_view"),в итоге запись вставляется и в главную таблицу,и в каждый справочник по новой записи тоже.Я понима.,что без кода тяжело понять,что там у меня.Но может хоть общий принцип расскажете,где какие хитрости? Если версия FoxPro VFP9, то в просмотре запроса (дизайнер Local View - пункт меню Query - View Query) отобразится код создания Query со всеми настройками. Вот его и можно сюда скопировать. Для младших версий FoxPro путь более длинный. Подробности здесь Как получить программный код создания структуры базы данных В полученном PRG-файле находишь фрагмент создания Local View и копируешь его сюда. При правильной настройке не должно быть создания записей в тех таблицах, которые не указаны как обновляемые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 17:59 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
пример использования КА на фоксовой табличке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 18:56 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
Решила попробовать сначала.Создала новое представление,на основе одной таблице.Попробовала добавлять запись через browse - прошло.Добавила в представление таблицу-справочник(беру из нее одно поле).VFP8 у меня. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. Пробую опять через browse добавить запись,например с id_box=1(в 'вох' запись с таким ключом точно есть).Ошибка 1547(Cannot insert an empty row from a view into its base table(s)).Т.o. запись в room добавляется,в box нет(мне и не надо).Но почему ошибка? Я так понимаю,что запись пытается и таблице box вставиться? Такая же ошибка была и когда в проекте через формы все это вносила,просто надоело править код на формах,поэтому решила вот таким путем хоть понять,что вообще происходит.А что я раньше писала,что записи во все таблицы вставляются,так сама чего-то перемудрила. Наверное нельзя вот так через browse делать,но не могу понять,КАК правильно писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 19:48 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
alex11100пример использования КА на фоксовой табличке Спасибо,я обязательно посмотрю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 19:51 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, вот и Вас в плохие записали ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2006, 23:55 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
пример для 8-го фокса 2 mary_n пишите классами переходите на 9 версию в старших версиях лиса писать прг нет смысла и является самоубийством ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 09:30 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
mary_nПробую опять через browse добавить запись,например с id_box=1(в 'вох' запись с таким ключом точно есть).Ошибка 1547(Cannot insert an empty row from a view into its base table(s)).Т.o. запись в room добавляется,в box нет(мне и не надо).Но почему ошибка? Я так понимаю,что запись пытается и таблице box вставиться? Такая же ошибка была и когда в проекте через формы все это вносила,просто надоело править код на формах,поэтому решила вот таким путем хоть понять,что вообще происходит.А что я раньше писала,что записи во все таблицы вставляются,так сама чего-то перемудрила. Наверное нельзя вот так через browse делать,но не могу понять,КАК правильно писать. Сделай так: -) На закладке Update Criteria оставь переключатель в положении "All Tables". Этот переключатель всего-лишь фильтрует картинку, но ничего не устанавливает в свойствах Local View. О чем и свидетельствует вот эта настройка DBSetProp(ThisView,"View","Tables","db!room,db!box") Т.е. эта настройка говорит о том, что обновлять надо содержимое ОБЕИХ таблиц-источников -) Теперь вручную сними ВСЕ птички напротив полей таблицы "box". Как под изображением ключа, так и под изображением карандаша. Вот теперь все должно работать "как надо". Хотя, в целом, соглашусь с Александром (alex11100), CursorAdapter более наглядный в этом смысле. Сразу видно какие настройки делаешь. Они не спрятаны где-то там в недрах объекта. Другое дело, надо ЗНАТЬ что именно настраивать. А вот здесь-то CursorAdapter проигрывает Local View. Для новичков - Local View - проще и понятнее. CursorAdapter - "не прозрачен". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 11:36 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
[quot ВладимирМ -) Теперь вручную сними ВСЕ птички напротив полей таблицы "box". Как под изображением ключа, так и под изображением карандаша. Вот теперь все должно работать "как надо". [/quot] Вы не думайте,что я совсем того :) Птичек напротив полей таблицы box нет вообще! Я ж потому и пишу сюда...Ладно,направление поняла,буду дальше пробовать,спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 12:30 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
У меня была похожая проблема. Ошибка 1547 (Cannot insert an empty row from a view into its base table(s)) появляется если сохраняется ПРОСТО пустая строка. Если изменить какое-либо поле новой строки, ошибка не появляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 18:23 |
|
||
|
LocalView для чайника
|
|||
|---|---|---|---|
|
#18+
mary_nПтичек напротив полей таблицы box нет вообще! Я ж потому и пишу сюда...Ладно,направление поняла,буду дальше пробовать,спасибо! Попробуйте еще сделать упаковку контейнера базы данных: OPEN DATABASE MyBase.DBC EXCLUSIVE PACK DATABASE Или в режиме дизайна базы данных (не таблицы, а именно всей базы данных) пункт меню DataBase - Clean Up DataBase Иногда всякий "мусор" оставшийся от предыдущих модификаций мешает нормальной работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.12.2006, 18:37 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=222&tid=1590260]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 215ms |
| total: | 370ms |

| 0 / 0 |
