Поиск:

Ответ в темуСоздание новой темы Создание опроса
> dbgrig, добавление записи 
:(
    Опции темы
Annihilator
Дата 24.3.2008, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

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



Товарищи, скажите как добавлять запись в dbgrid состоящую допустим из 10 колонок!


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Rodman
Дата 24.3.2008, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Вариант 1: Подключаешь его через TTable и тогда можно добавлять данные прямо в него с сохранением.
Вариант 2: Подключаешь через TQuery, но вторым TQuery при помощи запроса на добавление добавляешь данные и обновляешь DBGrid
PM MAIL WWW Skype GTalk YIM MSN   Вверх
ksili
Дата 24.3.2008, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А если подключить через DataSet и DataSource? Будет работать как через TTable? (Т.е. получится ли добавлять записи прямо в таблице)?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Rodman
Дата 24.3.2008, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(ksili @  24.3.2008,  08:58 Найти цитируемый пост)
DataSet 

что ты имеешь ввиду?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
ksili
Дата 24.3.2008, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ну кроме Query есть и DataSet. Query возвращает всегда одну запись, а DataSet - набор. По крайней мере так в компонентах, работающих с FireBird (пишу на Билдере). У меня DBGrid заполняется через связку DBGrid->DataSource->DataSet->Database.

Как вы заполняли грид через кверю, я если често не догоняю


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Rodman
Дата 24.3.2008, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(ksili @  24.3.2008,  09:21 Найти цитируемый пост)
Ну кроме Query есть и DataSet.

ну такого компонента не встречал, только свойство... 
Цитата(ksili @  24.3.2008,  09:21 Найти цитируемый пост)
Query возвращает всегда одну запись

ты что то путаешь, он возвращает набор записей удовлетворяющих условию.
Цитата(ksili @  24.3.2008,  09:21 Найти цитируемый пост)
Как вы заполняли грид через кверю, я если често не догоняю 

смари... в Query пишешь запрос 
Код

SELECT * FROM TableList;
он вернет тебе все записи из таблицы TableList, сколько бы их там ни было!
а если уже добавить
Код

SELECT * FROM TableList WHERE (ID=7 or ID=15);
только две и то если они там есть!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
ksili
Дата 24.3.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Rodman, а вы на чём пишете? Я на BCB 6. Там на вкладке компонентов DataAccess второй значок ClientDataSet. 
Но я вообще пользуюсь компонентами FIBPlus, т.к. база на FireBird. Там есть и Query и DataSet.

Добавлено через 5 минут и 20 секунд
Мне просто хотелось бы чтобы в гриде, когда на нижней строке нажимаешь кнопку вниз, появлялась новая строка для новой записи, которую надо добавить. Чтобы так сделать, надо свойству DataSet из DataSource что назначить? Только Table покатит? У меня сейчас pFIBDataSet, но я думаю что это аналог BDE-шного TTable


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Rodman
Дата 24.3.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Цитата(ksili @  24.3.2008,  09:35 Найти цитируемый пост)
ClientDataSet. 

никогда не юзал... не буду ничего за него говорить.. щас поглядел - сразу тоже не смогу сказать что оно такое.
Цитата(ksili @  24.3.2008,  09:35 Найти цитируемый пост)
Я на BCB 6.

я и на билдере 6 и на делфи 7-2007...
с базами всегда юзал или Table или Query (любые разновидности)
PM MAIL WWW Skype GTalk YIM MSN   Вверх
silversmith
Дата 24.3.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.12.2007
Где: Донецк, Украина

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



Цитата(ksili @  24.3.2008,  10:35 Найти цитируемый пост)
Мне просто хотелось бы чтобы в гриде, когда на нижней строке нажимаешь кнопку вниз, появлялась новая строка для новой записи, которую надо добавить

Вызови метод Append того источника данных, с которым ассоциирован грид.
К примеру так:
DBGrid1->DataSource->DataSet->Append();
PM MAIL WWW ICQ   Вверх
ksili
Дата 24.3.2008, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Ок, попробую


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Annihilator
Дата 25.3.2008, 06:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

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



Я в этом деле новичок, поэтому объясните, пожалуйста, как это сделать
Цитата

Вариант 1: Подключаешь его через TTable и тогда можно добавлять данные прямо в него с сохранением.
Вариант 2: Подключаешь через TQuery, но вторым TQuery при помощи запроса на добавление добавляешь данные и обновляешь DBGrid 

Что означает "Подключить через..." и можно хотя бы код для наглядности


Цитата

DBGrid1->DataSource->DataSet->Database;

'DataBase' is not member of 'TDataSet'
Цитата

DBGrid1->DataSource->DataSet->Append();

Тут вообще Access Violation вылетает

И возможно ли считать значения из текстового файла ну или просто из переменной или нужно подключение к БД.





--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
ksili
Дата 25.3.2008, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Annihilator @  25.3.2008,  10:38 Найти цитируемый пост)
DBGrid1->DataSource->DataSet->Database;

Да это было показано не обращение к членам классов, а просто цепочка компонентов. Т.е. у DBGrid1 св-во DataSource, ему назнчаем компонент DataSource. у него есть св-во DataSet. Ему я назначаю значение pFIBDataSet, потому что у меня есть такой компонент ( а у него есть свойство Database). Ну а у вас будет кто-то другой, типа TTable или TQuery


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
Rodman
Дата 25.3.2008, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



Annihilator, какая СУБД?
PM MAIL WWW Skype GTalk YIM MSN   Вверх
silversmith
Дата 25.3.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.12.2007
Где: Донецк, Украина

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



Да, кстати, Annihilator, - как конкретно устанавливается связь с СУБД или какой там источник данных?

Цитата(Annihilator @  25.3.2008,  06:38 Найти цитируемый пост)

DBGrid1->DataSource->DataSet->Append();

Тут вообще Access Violation вылетает


Просто вот этот код я неоднократно использовал и уверен в нем на 100%.  Вкратце - в DBGride у тебя появится новая строка, когда в ассоциированном с ним источнике данных появится новая запись Все потомки класса TDataSet (в том числе и TClientDataSet, TTable, TQuery, TADOTable, TIBTable и т.п.) содержат унаследованный от него методы Append, который и добавляет запись в конец источника данных.

Кстати Access Violation удалось получить на этой строчке только одним способом - очистив в DBGride свойство DataSet. Естественно - объекта нет и при вызове метода Access Violation ))) У тебя часом свойство DataSet не пустое? 
PM MAIL WWW ICQ   Вверх
Annihilator
Дата 26.3.2008, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

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



Цитата(Rodman @  25.3.2008,  14:14 Найти цитируемый пост)
Annihilator, какая СУБД? 

Данные беру из текстового файла, потом хочу засунуть их в access, но судя по всему, как я понял, DBGrid нужно предварительно связать с Access, а потом кидать туда данные из файла???
Цитата(silversmith @  25.3.2008,  16:13 Найти цитируемый пост)
Просто вот этот код я неоднократно использовал и уверен в нем на 100%.  Вкратце - в DBGride у тебя появится новая строка, когда в ассоциированном с ним источнике данных появится новая запись Все потомки класса TDataSet (в том числе и TClientDataSet, TTable, TQuery, TADOTable, TIBTable и т.п.) содержат унаследованный от него методы Append, который и добавляет запись в конец источника данных.

Кстати Access Violation удалось получить на этой строчке только одним способом - очистив в DBGride свойство DataSet. Естественно - объекта нет и при вызове метода Access Violation ))) У тебя часом свойство DataSet не пустое? 

Access Violation наверное потому что ни с одной БД не связал DBGrid???


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


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

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


 




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


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

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