Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка пустых строк в DBGrid обрабатывая выборку, в произвольном порядке 
:(
    Опции темы
Darked
Дата 14.1.2009, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



     Всем доброго времени суток.

  Суть в чём: я делаю запрос к базе, получаю список (лог) с фамилиями, которые могу повторяться, список сортирую по этим самым фамилиям. Список выводился в DBGrid автоматом. Всё бы хорошо, но начальство захотело, чтобы между фамилиями шла пустая строка... тут - то вот и не получается. Попытался забивать полученные записи вручную в DBGrid:
Код

while not(adoQry.Eof)do
  begin

    dbgStatSKD.Columns[0].Field.Text := adoQry.FieldByName('ID_TRAN').AsAnsiString;
    dbgStatSKD.Columns[1].Field.Text := adoQry.FieldByName('TranDateTime').AsAnsiString;
    dbgStatSKD.Columns[2].Field.Text := adoQry.FieldByName('TranDesc').AsAnsiString;
    dbgStatSKD.Columns[3].Field.Text := adoQry.FieldByName('TranArea').AsAnsiString;
    dbgStatSKD.Columns[4].Field.Text := adoQry.FieldByName('TranUser').AsAnsiString;
    dbgStatSKD.Columns[5].Field.Text := adoQry.FieldByName('Param2').AsAnsiString;

    adoQry.Next;
  end;

  вываливаюсь с exception - 
Цитата
Acces violation at address ...


  Как можно такое реализовать и можно ли? Интересует именно вывод в DBGrid, а не StringGrid и т.д....


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Данкинг
Дата 14.1.2009, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


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

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



Цитата(Darked @  14.1.2009,  16:14 Найти цитируемый пост)
dbgStatSKD

Это что - название DbGrid'а ? А зачем вообще его таким "странным" способом заполнять? 


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


Творец
****


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

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



выводи через хранимку, там можно с помощью suspend выводить пустые строки
PM MAIL   Вверх
Darked
Дата 14.1.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



Akella, можно поподробнее?


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Akella
Дата 14.1.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



создаём хранимую процедуру
Код

CREATE OR ALTER PROCEDURE NEW_PROCEDURE 
RETURNS (
    ID INTEGER,
    NAME CHAR(100))
AS
begin
  for select id, name from razdel INTO :ID, :NAME DO BEGIN
    suspend;--выводим результат
    id = null;
    name = null;
    suspend;--выводим пустую строку
  end
end


Выбираем данные
Код

select * from NEW_PROCEDURE


Результат
user posted image


Это сообщение отредактировал(а) Akella - 14.1.2009, 22:03
PM MAIL   Вверх
Deniz
Дата 15.1.2009, 06:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Darked, СУБД-то какая?
Можно так же DBGrid прицепить к ClientDataSet а его заполнить руками из adoQry


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Darked
Дата 15.1.2009, 07:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



Deniz, база MS SQL Server 2005.
  У меня в принципе так и скреплено, если я тебя правильно понял, DBGrid -> DataSource -> ADOQuery


Akella,  спасибо!!! Пока идёт как претендент номер один на риализацию.


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Deniz
Дата 15.1.2009, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Darked @  15.1.2009,  10:03 Найти цитируемый пост)
У меня в принципе так и скреплено, если я тебя правильно понял, DBGrid -> DataSource -> ADOQuery
нет, не правильно.
Связь должна быть DBGrid -> DataSource -> ClientDataSet и процедура (на клиенте) по заполнению ClientDataSet из ADOQuery.
Если будешь реализовывать через хранимую процедуру, то придется использовать курсоры + временную таблицу и ее заполнять примерно так, как показал Akella.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Akella
Дата 15.1.2009, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



Цитата(Deniz @  15.1.2009,  07:44 Найти цитируемый пост)
Связь должна быть DBGrid -> DataSource -> ClientDataSet и процедура (на клиенте) по заполнению ClientDataSet из ADOQuery.

А что, в MS SQL нет подобия suspend`а?


Цитата(Darked @  15.1.2009,  07:03 Найти цитируемый пост)
база MS SQL Server 2005.

а сразу сообщать религия не позволяет?
PM MAIL   Вверх
Deniz
Дата 15.1.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Akella @  15.1.2009,  12:24 Найти цитируемый пост)
А что, в MS SQL нет подобия suspend`а?
нет  smile 


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Darked
Дата 15.1.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



Цитата(Akella @  15.1.2009,  09:24 Найти цитируемый пост)
а сразу сообщать религия не позволяет? 

  Изаиняюсь, ка к- то не подумал, сосредоточился на DBGride? так ка кменя больше интересовал клиентский вариант решений через ручную правку грида, а не на сервере.
 
  А так, вообще, подумал, посмотрел... решил что проще мне на StringGrid перейти, чем заморачиваться с DBGrid, получается как - то кривовасто с дбгридом, поэтому чуть - чуть изменю архетектуру и перейду на StringGrid, скорее всего.
  
   Всем большое спасибо за помощь!!!!!


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Deniz
Дата 15.1.2009, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

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



Цитата(Darked @  15.1.2009,  14:59 Найти цитируемый пост)
поэтому чуть - чуть изменю архетектуру и перейду на StringGrid, скорее всего.
не советую.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
Darked
Дата 15.1.2009, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



Deniz, почему? Мне информация нужно чисто для вывода, менять данные я не буду.


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Zloxa
Дата 15.1.2009, 14:57 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

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



Цитата(Darked @  14.1.2009,  16:14 Найти цитируемый пост)
начальство захотело, чтобы между фамилиями шла пустая строка

А что начальство хочет делать с этой пустой строкой? И зачем, собственно, она(пустая строка) ему нужна?

Может быть нужно просто увеличить вдвое высоту строки? 
Может ко всему еще и взять да отрисовать ячейку грида аля какбы две ячейки?

Это сообщение отредактировал(а) Zloxa - 15.1.2009, 14:58


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Darked
Дата 15.1.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

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



Zloxa, пустая строка для отделения фамилий в списке, типа:
  • Иванов
  • Иванов
  • Иванов
  • Сидоров
  • Петров
  • Петров



--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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