![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| holodnaya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
Здравствуйте, опытные программисты!
У меня возникла сложность в следующем: при разработке приложения, в cxGrid отображаются нужные мне данные из таблицы, а при запуске приложения этих данных в таблице нет, остаются только заголовки таблицы. Может быть, нужно что-то дополнительно прописывать в коде (например, при открытии формы), чтобы эти данные отображались в таблице? Или у меня происходит разрыв соединения с базой? В чем причина такого явления? Что мне сделать, чтобы приложение работало корректно? |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Может быть. Или так. Вряд ли кто-нибудь ответит до тех пор, пока не увидит код программы. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| holodnaya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
Отличный ответ
А если в коде ничего нет? и все устанавливается в свойствах объектов IBDatabase1, IBTransaction1, IBTable1, DataSource1 в ДатаМодуле. В cxGrid ссылка на DataSource1. А можете ли сказать, когда лучше прописывать все свойства в коде, а когда просто у объекта указывать? |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Видимо, при запуске программы происходит некая выборка данных, которая ничего не возвращает.
Какие свойства? К примеру, IP БД, к которой подключается программа, лучше указывать в INI-файле. Для большей мобильности. Добавлено через 45 секунд И вообще, что это за программный продукт такой, если ? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
В идеале у контролов для БД все настройки соединения д/б перед запуском чистые и инициализироваться только по команде. А таблица у тебя пустая, возможно, потому что Interbase-компоненты глючат, есть у них такая плохая привычка, как незнание количества данных в наборе до тех пор, пока он не будет полностью прокручен. Попробуй после открытия сделать таблице. IBTable1.Last; IBTable1.First; Может есть более простой способ (Last в принципе ресурсоемкая операция м/б, хотя я гонял так наборы в 200000+ записей и ничего), узнаешь - скажешь. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
holodnaya, сделай тестовый проект и выложи.
|
|||
|
||||
| holodnaya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
Я разобралась. Спасибо
Сначала данные не отображались. потому что у IBDatabase свойство LoginPrompt = True и соответсвенно соединение каждый раз отвалисвалось. И у компонентов IBDatabase1, IBTransaction1, IBTable1 было установлено значение свойства Active = True, иногда менялись на false. Затем, я решила, что проблема в IdleTimer, и установила туда значение 90 вместо 0 (но именно поэтому в конечном варианте данные и не отображались). Сейчас LoginPrompt = False и у компонентов IBDatabase1, IBTransaction1, IBTable1 свойство Active = True. Я правильно понимаю, что параметры соединения с базой лучше всего указывать в коде, а не в свойствах объекта и Connected = True у IBDatabase устанавливать в момент открытия главной формы (или создания) Это сообщение отредактировал(а) holodnaya - 2.11.2009, 11:11 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Да, всё активировать (соединения, таблицы, запросы) надо в коде. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
Я делаю так, размещаю необходимые для соединения компоненты в дата-модуле и ставлю его первым при создании форм, там же в дата-модуле расположены всякие ресурсы вроде имейдж-листов. Там определяется функция коннект, которая после считывания параметров из инишек пытается установить соединение. Если это удалось, то открываются нужные наборы данных, если нет, софтина все равно запускается, так чтобы можно было откорректировать настройки не залезая в инишки, ну и там ес-но форма (можно сделать одну для всех проектов на одном типе БД) для логина. Помимо прочего стоит определить еще одну процедурку в главной форме, которая будет чего-то на этой форме менять после установки соединения. Вызывается в 2-х местах в FormCreate, если есть соединение и после успешного коннекта руками (возможнось на лету изменить подключения вообще крайне желательна т. к. сильно упрощает настройку прав пользователей). Это для случая, когда коннект автоматом, а если юзер каждый раз должен логин и пароль вводить, то можно в том же дата-модуле просто создавать и показывать форму для логина. Только создавай ее fmLogin:=TfmLogin(Application), а не через Application.CreateForm иначе она главной формой станет. Вообще чем больше ошибок предусмотришь, тем лучше, а для БД типовые ошибки, это отсутствие или потеря соединения. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| holodnaya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
||||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
Главная это та, которая первая, через Application.CreateForm полностью (отработало событие onCreate) создалась
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| holodnaya |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 75 Регистрация: 30.7.2008 Репутация: нет Всего: нет |
А можете ещё подсказать, что за параметр такой Character Set у компонента IBDatabase и на что он влияет. Это нормально, что у меня вообще он не определён (None)?
|
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 0 Всего: 7 |
Кодировка, поставь Windows CP 1251.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 8 Всего: 329 |
Добавлено через 40 секунд Откуда такие утверждения, да ещё и неправильные? Перед тем как советовать, сам хоть почитай руководства. Добавлено через 1 минуту и 25 секунд holodnaya, а если ты работаешь с firebird, то хотябы почитай немного об этой СУБД. |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 11 Всего: 130 |
Почему неправильные? Не знаю, как в IBDatabase, но в IBExpert при создании БД надо именно Win1251 указывать. Добавлено через 1 минуту и 37 секунд
А вообще, где у IBDatabase такой параметр? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |