Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Вниз

Странности DBGrid при работе с InterBase   Найти похожие ветки 

 
Alex_S   (2004-12-26 15:02) [0]

Раньше пользовался только локальными БД, теперь нужно ее переделать для пары комп-ров. Пытаюсь использовать IB6.5. В базе масса полей (штук 60-70), поэтому не хочется при вставке и т.д записей явно использовать SQL-запросы, где все эти поля надо перечислять. Так же, как и прежде хочется использовать навигационные способы: DBGrid, DBNavigator, DBEdit и т.п. Но получается плохо с DBGrid. Вставляю строку, а она заменяет собой какую-нибудь старую. Более того, начинаю двигаться по DBGrid, она пропадает, появляется исчезнувшая или что-то ещё. Перезагружаю БД-все нормально. В чем я не прав? Использую компоненты TQuery, TDataBase... Пробовал с IBQuery, IBDataBase - там вообще база не корректируется. Извиняюсь, но с сетевыми БД только начинаю... Может, для пары комп-ро что-то другое посоветуете. Только файл-серверные варианты не желательны, так как постоянно большая база будет занята двумя пользователями.


 
Vemer ©   (2004-12-26 21:20) [1]

Используй для добавления/изменения данных отдельную форму с не-DB-Aware компонентами. Грид отражает несколько полей всех записей, форма все поля одной. Можно разнести по 2-м Dataset. Использование 2-х разных (пишущая/читающая) транзакции также желательно.


 
DrPass ©   (2004-12-26 21:22) [2]


>  Вставляю строку, а она заменяет собой какую-нибудь старую

В отличие от Парадокса в большинстве СУБД новые записи вставляются в произвольное место таблицы. IB тоже так поступает. Для того, чтобы этого не происходило, нужно выводить упорядоченный датасет (order by или просто использовать нужный индекс, если работаешь с TIBTable).

> Пробовал с IBQuery, IBDataBase - там вообще база не корректируется

Сначала почитай теорию, потом еще раз попробуй


 
Соловьев ©   (2004-12-27 10:50) [3]

http:\\ibase.ru


 
msguns ©   (2004-12-27 12:34) [4]

Для работы проги, работающей с парадоксом, на сетке из 2-х (3)компов, не надо никаких переводов - парадокс вполне удовлетворителен.


 
Johnmen ©   (2004-12-27 12:57) [5]

>Alex_S   (26.12.04 15:02)  
>...не хочется при вставке и т.д записей явно использовать SQL-
>запросы, где все эти поля надо перечислять.

Почему ты решил, что НАДО ? Вовсе НЕТ.


 
Alex_S   (2004-12-27 13:36) [6]

msguns ©   (27.12.04 12:34) [4]
Для работы проги, работающей с парадоксом, на сетке из 2-х (3)компов, не надо никаких переводов - парадокс вполне удовлетворителен.
-------
Работать-то работает. Но что-то не нравится, не так как на одном. Работает с копией базы, изменения, сделанные другим пользователем видны только после перезагрузке базы, а хочется сразу и т.д.

Vemer ©   (26.12.04 21:20) [1]
Используй для добавления/изменения данных отдельную форму с не-DB-Aware компонентами. Грид отражает несколько полей всех записей, форма все поля одной. Можно разнести по 2-м Dataset. Использование 2-х разных (пишущая/читающая) транзакции также желательно.
----------
Без DBGrid - это без списка, а уже привыкли - со списком.
А 2 Dataset - что-то кажется уже лишним, хотя для некоторых ситуаций и полезно.

Johnmen ©   (27.12.04 12:57) [5]
Я уже начинаю догадываться, что и не НАДО - можно обойтись.


 
msguns ©   (2004-12-27 13:45) [7]

>Alex_S   (27.12.04 13:36) [6]
>Работать-то работает. Но что-то не нравится, не так как на одном. Работает с копией базы, изменения, сделанные другим пользователем видны только после перезагрузке базы, а хочется сразу и т.д.

Зачем с копией-то ? Все клиенты должнй работать с одной базой. Для этого настроить BDE и Paradox.net. Изменения видны сразу, если правильно юзать TTable или TQuery с перечиткой.


 
Alex_S   (2004-12-27 19:18) [8]

msguns ©   (27.12.04 13:45) [7]
<Все клиенты должнй работать с одной базой. Для этого настроить BDE и Paradox.net. >
--------------

Оказывается, их ещё как-то надо дополнительно настраивать - это не знал, и в букварях не сказано. А где ж это выяснить?

<Изменения видны сразу, если правильно юзать TTable или TQuery с перечиткой.>
Так все-таки без перечитки не обойтись?
(Если даже и не обойтись, то не смертельно, хотя это в DBGrid будет заметно...)


 
Vemer ©   (2004-12-28 00:08) [9]

Править данные в не-DB-aware компонентах, предварительно считав их из базы, а потом записывать изменения короткой пишущей транзакцией в IB/FB - почти единственный нормальный способ обеспечить нормальную работу нескольких пользователей в базе. Поэтому 2 Dataset и 2 транзакции - читающая и пишущая. Править данные в гриде - изврат. Т.к. нормально не отловить ошибки ввода + неудобно.


 
Johnmen ©   (2004-12-28 00:32) [10]

>Vemer ©  (28.12.04 00:08) [9]
>Править данные в гриде - изврат. Т.к. нормально не отловить
>ошибки ввода + неудобно.

Думаю, что не надо столь необдуманно категорично...


 
Alex_S   (2004-12-28 13:17) [11]

DBGrid здесь только для ориентрировки - для списка (полей немного). Никто и не собирается править 70 полей в гриде. Все равно перехожу для этого в отдельную форму с несколькими листами.
Всем спасибо за подсказки. Постараюсь понять и учесть.


 
Vemer ©   (2004-12-28 23:26) [12]

Менее категоричный вариант для JohnMen:
Править данные в гриде - изврат в большинстве случаев..


 
Johnmen ©   (2004-12-28 23:37) [13]

>Vemer ©  (28.12.04 23:26) [12]

Мягче, Matt, ещё мягче...:)
Не забывай про овощи...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.01.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.037 c
3-1103801697
tytus
2004-12-23 14:34
2005.01.30
Как динамически создать столбцы в сетке?


4-1102865386
mega
2004-12-12 18:29
2005.01.30
Координаты мыши


9-1097898829
Кто---то
2004-10-16 07:53
2005.01.30
GLScene Как сохранить сообщения в группах новостей ?


1-1105369784
Sicilla
2005-01-10 18:09
2005.01.30
TListView


4-1102961158
Bes
2004-12-13 21:05
2005.01.30
Оповещение основной программы о выгрузке DLL...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский