Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставка пустых строк в 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   Вверх
Deniz
Дата 15.1.2009, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Darked, возьми нормальный DBGrid (типа этого), который умеет группировать записи (так же фильтры, суммы, сортировка и т.д.) и научи начальника им(DBGrid'ом) пользоваться.


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


Творец
****


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

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



Цитата(Darked @  15.1.2009,  15:38 Найти цитируемый пост)
пустая строка для отделения фамилий в списке, типа:

это называется группировка

Deniz, согласен с тобой. Да что там учить... чему? Перетягивать мышкой поле?

Можно поставить на панели КНОПКУ и назвать Группирование по Фамилии.





Deniz, через пару десятков сообщений может ещё что интересное у него выпытаем  smile

Добавлено через 1 минуту и 54 секунды
Вот пример:
user posted image
PM MAIL   Вверх
Darked
Дата 16.1.2009, 06:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



   
DenizAkella, спасибо за советы, учту.  smile Только тут группировка не совсем подходит, в том виде, в котором вы предложили.
   Вот, очередная порция деталей  smile  - Я вывожу такой список (по столбцам): время, описание, место, сотрудник. Уодного сотрудника может быть несколько времён, поэтому для наглядности начальник и захотел чтобы при выводе между фамилиями была пустая строка.

   Сделал на StringGrid'е и вроде как работает )


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


Творец
****


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

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



Darked, ну покажи ж тогда снимки экранов. smile 
PM MAIL   Вверх
LSD
Дата 16.1.2009, 14:08 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Модератор: надоели вы мне со своим DBGrid-ом. Идите вы в Delphi  smile 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Akella
Дата 17.1.2009, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


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

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



грубо
PM MAIL   Вверх
Darked
Дата 20.1.2009, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Akella, вот пример:

 user posted image


--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1064 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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