Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 помогите с гридом  [new]
Alexandr VZ
Member

Откуда: Санкт-Петербург
Сообщений: 15
Есть две таблицы соединенные по первичному ключу.
Есть форма, на которой расположен грид. На гриде отображается информация из обеих таблиц. Все записи не помещаются в видимой части грида, поэтому приходится использовать скролинг и тут возникают проблемы. Если фокус находится на колонке, таблица источника которой совпадает с recordsource грида все нормально, а если таблица источника колонки вторая таблица, то все плохо - все новые записи (только в данной колонке), появляющиеся при скролинге содержат одно и тоже (точне то что было в нижней строке грида).
Как либо это дело отрефрешить результатов не дает.
30 ноя 04, 13:11    [1146635]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Станислав C.
Member

Откуда: Екатеринбург
Сообщений: 1030
Alexandr VZ
Есть две таблицы соединенные по первичному ключу.
Есть форма, на которой расположен грид. На гриде отображается информация из обеих таблиц. Все записи не помещаются в видимой части грида, поэтому приходится использовать скролинг и тут возникают проблемы. Если фокус находится на колонке, таблица источника которой совпадает с recordsource грида все нормально, а если таблица источника колонки вторая таблица, то все плохо - все новые записи (только в данной колонке), появляющиеся при скролинге содержат одно и тоже (точне то что было в нижней строке грида).
Как либо это дело отрефрешить результатов не дает.

Сделай в качестве источника записей для Грида выборку (Select) из этих таблиц, куда ты поместишь необходимые тебе данные. Проблем будет на порядок меньше!
30 ноя 04, 13:54    [1146861]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Alexandr VZ
Member

Откуда: Санкт-Петербург
Сообщений: 15
Спасибо.
Выборка это хорошо, но мне нужна возможность добавлять, удалять и редактировать записи на гриде, а использование в качестве источника грида выборки это делать не позволит.
30 ноя 04, 16:25    [1147619]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
leaf
Member [заблокирован]

Откуда: Ростов-на-Дону --> Москва
Сообщений: 2661
это только видимость что выборка не позволяет вносить изменения в таблицу на самом деле все не так
30 ноя 04, 16:57    [1147761]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Alexandr!

Ключевое слово тут - обновляемое (лучше если параметризованное)
представление aka LocalView

Posted via ActualForum NNTP Server 1.1

1 дек 04, 03:55    [1148483]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Alexandr VZ
Member

Откуда: Санкт-Петербург
Сообщений: 15
Сделал через LocalView, грид все отображает правильно!
Но возникла проблема с TABLEUPDATE, изменения в исходных таблицах почему-то сохраняются только для первой, а для второй нет. При этом TABLEUPDATE возвращает ошибку №10 'Syntax error'.
3 дек 04, 15:52    [1156777]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Делать обновляемое View более чем для 1 таблицы - относительно сложная задача. Проблема в том, что ты никак не можешь управлять порядком обновления таблиц.

Для корректного создания записи подчиненной таблицы нужно заранее знать код новой записи главной таблицы.

Если ты создаешь значение ключа новой записи через собственную функцию, например, NewID(), то особой проблемы нет. Это можно сделать прямо во view в момент создания новой записи.

Но если ты используешь автоинкрементные поля (Integer- autoIncrement), то ту все несколько сложнее. Если очень надо могу описать как это сделать. НО! А оно тебе действительно надо?

Дело в том, что редактирование напрямую в Grid по возможности желательно избегать, а объединение в одном Grid более чем 1 таблицы для редактирования надо избегать с удвоенной силой

Если у тебя связь между таблицами один-ко-многим, то отобрази их в 2 разных Grid. Во втором Grid - только записи подчиненной таблицы для текущей записи главной.

А если связь один-к-одному, то у тебя что-то неправильно либо в организации структуры базы данных, либо в организации собственно работы с данными. Крайне редко таблицы связанные таким образом требуют одновременной вставки новых записей.
3 дек 04, 23:05    [1157747]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Alexandr!

Как ты себе представляешь обновление 2-х таблиц из одного представления? Они
у тебя связаны как 1-к-1? Или одна из них это справочник?
Если 1-к-1 то надо смотреть код и править. Если справочник (соответственно
связь много-к-1), то надо просто принять за правило НЕ обновлять 2 таблицы
из одного представления. Это в принципе НИКОГДА и не нужно. Для ведения
справочника создай отдельное представление и отдельную форму. А в этой правь
только 1 (основную) таблицу. Ессно что среди прочих полей можно править и
поле внешнего ключа, связывающей эту таблицу со справочником.

Posted via ActualForum NNTP Server 1.1

4 дек 04, 00:20    [1157850]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Alexandr VZ
Member

Откуда: Санкт-Петербург
Сообщений: 15
Всем Привет!
Связь между таблицами у меня один к одному. Может оно и бывает редко, но у меня есть такая необходимость иметь возможность редактировать сразу обе таблицы. Дело в том, что у меня есть основная таблица параметров, где содержаться их общие свойства (наименование и т. д.) и есть ряд таблиц, каждая из которых содержит специфичные свойства одного из типов параметров. Поэтому возможна ситуация, когда необходимо редактировать и общие и специфичные свойства.
Самое интересное, что добавление новых записей проходит отлично, все добавляется в обе таблицы, а вот при редактировании существующих записей изменения попадают только в основную таблицу. Кстати, значение ключа новой записи я создаю сам через собственную функцию.
6 дек 04, 09:54    [1159252]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Alexandr VZ
Member

Откуда: Санкт-Петербург
Сообщений: 15
Всем спасибо!
Дошло в чем проблема!
Просто одно из полей в таблице со специфическими характеристиками носило имя "VALUE". Вот блин!
6 дек 04, 13:03    [1159965]     Ответить | Цитировать Сообщить модератору
 Re: помогите с гридом  [new]
Igor Korolyov
Member

Откуда: Гомель, Беларусь
Сообщений: 2512

Hi Alexandr!

Вообще-то для корректной работы с 2-мя таблицами AFAIK нужно включить в
список полей ОБА первичных (один из которых заодно ещё и внешний) ключа
(несмотря на то что они совершенно одинаковые) - ну и ессно указать для этих
полей что они ключевые, и обновляемые...

Posted via ActualForum NNTP Server 1.1

15 дек 04, 01:06    [1181403]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить