Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заполнение dbGrid [D7, MySQL]


Страницы:   1 2

Andrick ©   (2004-05-25 16:47:00) 

Помогите. Есть dbGrid+ MySQL. Есть апишный проект, в котором результаты запроса должны выдаваться на грид. Но заполнить грид не получается.
Table и Query не подходят - по результатам запроса грид либо виден, либо отсутствует, что через указанные компоненты реализовать не могу. Стринггрид тоже малоприятен, но рассматривался.
Поможите!!!!!


slgeo   (2004-05-28 08:55:00) [21]


> Поэтому, если кто может подсказать КОМАНДЫ для заполнения
> изменения полей датасета (или ручного заполнения грида,
> без разницы), помогите. Больше ничего не нужно :)))) (все-таки,
> не первый год замужем, только с базами данных на таком уровне
> не приходилось работать)


Какие команды? Insert,Append,Edit,Delete,Post?


Andrick   (2004-05-28 08:50:00) [22]

В дополнение к только что случайно прочитанному топику - я знаю разницу между датасетом и дбгридом. Фишка в том, что желательно знать именно как заполнить этот грид данными, полученными не из BDE или ODBC. В проекте ODBC может использоваться только в нескольких местах - при выдаче общих таблиц, например, а на реальные нужды проекта его возможностей недостаточно - приходится изгаляться


Andrick   (2004-05-28 08:44:00) [23]


> >А чем конкретно можно заполнить этот промежуточный датасет?
>
> Если это потомок TDataSet - то всем тем, с чем умеет обращаться
> TDataSet


А команды может кто-нибудь подсказать? Я уже недели две бьюсь - проект пишется на MySQL API и Делфи, все подключения выполняются через mysql_connect без помощи BDE, что исключает использование ЛЮБЫХ стандартных или сторонних TTable, TQuery и прочего. Единственное исключение - TAdoQuery (используется ODBC-драйвер). А любой промежуточный датасет, неважно, будет ли это TClientDataSet или его предок, требует для своего открытия заполнения либо свойства TableName, либо указания имени провайдера (последнее и используется в TADOQuery ;)))) ). Но даже вспомогательный датасет при задании имени провайдера будет работать с предоставляемыми им данными - и именно эти данные мне необходимо считать и по-своему поменять. А при закрытом датасете никакие изменения производиться не будут (((((((
Поэтому, если кто может подсказать КОМАНДЫ для заполнения изменения полей датасета (или ручного заполнения грида, без разницы), помогите. Больше ничего не нужно :)))) (все-таки, не первый год замужем, только с базами данных на таком уровне не приходилось работать)


HSolo   (2004-05-27 09:37:00) [24]

>А чем конкретно можно заполнить этот промежуточный датасет?

Если это потомок TDataSet - то всем тем, с чем умеет обращаться TDataSet

>Насчет ресортировки - не всегда удается создать такой Select, который полностью соответствует формату вывода в грид (используется MySQL 3.23), поэтому необходимо реорганизовывать данные, например, поднимать строки в столбцы.

Можно в run-time создать нужные поля, потом заполнить. И сортировка у TClientDataSet и RxMemoryData есть

>желательна полная работоспособность грида (т.е. его обычная функциональность, как до изменения).

А куда ж она денется :) Или Вы хотите редактировать данные буферного dataset-а, и чтобы изменения попадали в базу? И это можно сделать - да хотя бы в обработчике AfterPost


Anatoly Podgoretsky   (2004-05-27 08:53:00) [25]

Забыть про базы данных.


Andrick   (2004-05-27 08:47:00) [26]

А чем конкретно можно заполнить этот промежуточный датасет?
Все остальные варианты и ежу понятны.
Насчет ресортировки - не всегда удается создать такой Select, который полностью соответствует формату вывода в грид (используется MySQL 3.23), поэтому необходимо реорганизовывать данные, например, поднимать строки в столбцы. А непосредственно формат (в смысле данных в ячейках) менять пока не надо (это легко делается при ручном заполнении). К тому же желательна полная работоспособность грида (т.е. его обычная функциональность, как до изменения).
И как я уже говорил, ручное заполнение СтрингГрида - уже пройденный этап (и потому изничтоженный)


HSolo   (2004-05-26 17:53:00) [27]

Заведите буферный DataSet в памяти (например, TClientDataSet, или что-нибудь вроде kbmMemTable, RxMemoryData...) Заполняйте его вручную чем хотите и показывайте в DBGrid-е


Sandman25+1   (2004-05-26 17:51:00) [28]

Формат вывода полей можно задавать либо в Field.OnGetText, либо в DBGrid.OnDrawColumnCell


Sandman25+1   (2004-05-26 17:48:00) [29]

[2] Andrick ©   (26.05.04 17:37)

Ручное заполнение DBGrid означает, что используется StringGrid, в цикле идет пробег по всем записям, а для каждой записи пробег по всем полям. Оно вам надо?


Vlad   (2004-05-26 17:41:00) [30]


> Andrick ©   (26.05.04 17:37) [2]

Ничего не понял.
У тебя есть TAdoQuery и TDataSource, так в чем проблема ?
Не знаешь как грид к TDataSource подключить ?


Andrick   (2004-05-26 17:37:00) [31]

За видимость спасибо, но по прежнему желательно ручное заполнение dbGrid'а. А еще лучше вклиниться между связкой TAdoQuery и TDataSource (необходимо проверять кое-какие параметры и возможно, ресортировать данные в необходимый формат вывода)


Sandman25+1   (2004-05-25 16:53:00) [32]

>по результатам запроса грид либо виден, либо отсутствует

DBGrid.Visible := Table.Active and (Table.RecordCount > 0)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо