Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> отображение данных в cxGrid 
:(
    Опции темы
holodnaya
Дата 2.11.2009, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Здравствуйте, опытные программисты!
У меня возникла сложность в следующем: при разработке приложения, в cxGrid отображаются нужные мне данные из таблицы, а при запуске приложения этих данных в таблице нет, остаются только заголовки таблицы.
Может быть, нужно что-то дополнительно прописывать в коде (например, при открытии формы), чтобы эти данные отображались в таблице? Или у меня происходит разрыв соединения с базой? В чем причина такого явления? Что мне сделать, чтобы приложение работало корректно?
PM MAIL   Вверх
Данкинг
Дата 2.11.2009, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(holodnaya @  2.11.2009,  00:22 Найти цитируемый пост)
Может быть, нужно что-то дополнительно прописывать в коде (например, при открытии формы), чтобы эти данные отображались в таблице?

Может быть. smile 

Цитата(holodnaya @  2.11.2009,  00:22 Найти цитируемый пост)
Или у меня происходит разрыв соединения с базой?

Или так. smile 

Цитата(holodnaya @  2.11.2009,  00:22 Найти цитируемый пост)
В чем причина такого явления? 

Вряд ли кто-нибудь ответит до тех пор, пока не увидит код программы.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 2.11.2009, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Отличный ответ smile
А если в коде ничего нет? и все устанавливается в свойствах объектов IBDatabase1, IBTransaction1, IBTable1, DataSource1 в ДатаМодуле.  В cxGrid ссылка на DataSource1. 
А можете ли сказать, когда лучше прописывать все свойства в коде, а когда просто у объекта указывать?

 
PM MAIL   Вверх
Данкинг
Дата 2.11.2009, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Видимо, при запуске программы происходит некая выборка данных, которая ничего не возвращает.

Цитата(holodnaya @  2.11.2009,  02:06 Найти цитируемый пост)
А можете ли сказать, когда лучше прописывать все свойства в коде, а когда просто у объекта указывать?

Какие свойства? К примеру, IP БД, к которой подключается программа, лучше указывать в INI-файле. Для большей мобильности. smile

Добавлено через 45 секунд
И вообще, что это за программный продукт такой, если
Цитата(holodnaya @  2.11.2009,  02:06 Найти цитируемый пост)
А если в коде ничего нет?

? smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Beltar
Дата 2.11.2009, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 0
Всего: 7



Цитата

А можете ли сказать, когда лучше прописывать все свойства в коде, а когда просто у объекта указывать?


В идеале у контролов для БД все настройки соединения д/б перед запуском чистые и инициализироваться только по команде.
А таблица у тебя пустая, возможно, потому что Interbase-компоненты глючат, есть у них такая плохая привычка, как незнание количества данных в наборе до тех пор, пока он не будет полностью прокручен. Попробуй после открытия сделать таблице.
IBTable1.Last;
IBTable1.First;
Может есть более простой способ (Last в принципе ресурсоемкая операция м/б, хотя я гонял так наборы в 200000+ записей и ничего), узнаешь - скажешь.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 2.11.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



holodnaya, сделай тестовый проект и выложи.
PM MAIL   Вверх
holodnaya
Дата 2.11.2009, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Данкинг
Дата 2.11.2009, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(holodnaya @  2.11.2009,  10:59 Найти цитируемый пост)
Я правильно понимаю, что параметры соединения с базой лучше всего указывать в коде, а не в свойствах объекта и Connected = True у IBDatabase устанавливать в момент открытия главной формы (или создания)

Да, всё активировать (соединения, таблицы, запросы) надо в коде.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Beltar
Дата 2.11.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 0
Всего: 7



Цитата

Я правильно понимаю, что параметры соединения с базой лучше всего указывать в коде, а не в свойствах объекта и Connected = True у IBDatabase устанавливать в момент открытия главной формы (или создания)


Я делаю так, размещаю необходимые для соединения компоненты в дата-модуле и ставлю его первым при создании форм, там же в дата-модуле расположены всякие ресурсы вроде имейдж-листов. Там определяется функция коннект, которая после считывания параметров из инишек пытается установить соединение. Если это удалось, то открываются нужные наборы данных, если нет, софтина все равно запускается, так чтобы можно было откорректировать настройки не залезая в инишки, ну и там ес-но форма (можно сделать одну для всех проектов на одном типе БД) для логина.
Помимо прочего стоит определить еще одну процедурку в главной форме, которая будет чего-то на этой форме менять после установки соединения. Вызывается в 2-х местах в FormCreate, если есть соединение и после успешного коннекта руками (возможнось на лету изменить подключения вообще крайне желательна т. к. сильно упрощает настройку прав пользователей).
Это для случая, когда коннект автоматом, а если юзер каждый раз должен логин и пароль вводить, то можно в том же дата-модуле просто создавать и показывать форму для логина. Только создавай ее
fmLogin:=TfmLogin(Application), а не через Application.CreateForm иначе она главной формой станет.

Вообще чем больше ошибок предусмотришь, тем лучше, а для БД типовые ошибки, это отсутствие или потеря соединения.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
holodnaya
Дата 2.11.2009, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Цитата(Beltar @  2.11.2009,  11:47 Найти цитируемый пост)
Я делаю так, размещаю необходимые для соединения компоненты в дата-модуле и ставлю его первым при создании форм,


а разве не главная форма должна создаваться первой? и соответсвенно стоять первой при создании форм?
PM MAIL   Вверх
Beltar
Дата 2.11.2009, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 0
Всего: 7



Главная это та, которая первая, через Application.CreateForm полностью (отработало событие onCreate) создалась smile Но дата-модули не считаются. Первыми ыообще секции Initialization отрабатывают.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
holodnaya
Дата 4.11.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



А можете ещё подсказать, что за параметр такой Character Set у компонента IBDatabase и на что он влияет. Это нормально, что у меня вообще он не определён (None)? 
PM MAIL   Вверх
Beltar
Дата 4.11.2009, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 0
Всего: 7



Кодировка, поставь Windows CP 1251.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
Akella
Дата 4.11.2009, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



Цитата(holodnaya @  4.11.2009,  15:46 Найти цитируемый пост)
А можете ещё подсказать, что за параметр такой Character Set у компонента IBDatabase и на что он влияет. 

 smile а при чём здесь cxGrid?

Добавлено через 40 секунд
Цитата(Beltar @  4.11.2009,  15:48 Найти цитируемый пост)
Кодировка, поставь Windows CP 1251. 

Откуда такие утверждения, да ещё и неправильные? Перед тем как советовать, сам хоть почитай руководства.

Добавлено через 1 минуту и 25 секунд
holodnaya, а если ты работаешь с firebird, то хотябы почитай немного об этой СУБД.
PM MAIL   Вверх
Данкинг
Дата 4.11.2009, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Akella @  4.11.2009,  16:44 Найти цитируемый пост)
Откуда такие утверждения, да ещё и неправильные?

Почему неправильные? Не знаю, как в IBDatabase, но в IBExpert при создании БД надо именно Win1251 указывать.

Добавлено через 1 минуту и 37 секунд
Цитата(holodnaya @  4.11.2009,  15:46 Найти цитируемый пост)
А можете ещё подсказать, что за параметр такой Character Set у компонента IBDatabase и на что он влияет. 

А вообще, где у IBDatabase такой параметр?  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0629 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.