C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
TDataSource, TQuery, Не могу редактировать данные в таблице.
arsen
Отправлено: 11.08.2004, 01:12


Не зарегистрирован







В таблице TDBGrid не могу редактировать данные после выполнения SQL запроса. Все ОК! Запрос работает, а вот данные редактировать запрещает. Help please! В чем здесь дело?
AVC
Отправлено: 11.08.2004, 07:53


Ветеран

Группа: Модератор
Сообщений: 1583



Какая СУБД? При помощи чего работаете? Какой Query?
В самом общем случае результат запроса просто так править нельзя.
Если пользуетесь BDE и TQuery попробуйте использовать UpdateSql
arsen
Отправлено: 11.08.2004, 17:23


Не зарегистрирован







Тут вот в чем фишка. Я слепил базу в Desk-е формата dbase for Windows, где: одно поле строковое, другое целочисленное и все.
В проекте разместил TDBGrid, TDataSource, TQyery. Значит соединил Grid и Data, Data c Query. Причем, в Query никаких свойств не менял, только в SQL написал — SELECT *FROM table.dbf(имя моей таблицы) ORDER BY NAME(ну это строковое поле в таблице). Потом ставлю true в Active и у меня вылазит табличка: "Invalid use of keyword. Token: table.dbf." Ну не знаю в чем дело, бошка уже дымитьсяю. Буду очень благодарен, елси кто-нибудь скинет мне хорошую инфу на мыло avtoritet@fromru.com.
Guest
Отправлено: 11.08.2004, 17:51


Не зарегистрирован







Я особо не увлекаюсь базами данных, и поэтому почти не шарю в них. Могу сбросить на мыло, эту байду. Она не много весит.
Gedeon
Отправлено: 11.08.2004, 21:02


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Guest @ 11/08/2004, 18:53)
Я особо не увлекаюсь базами данных, и поэтому почти не шарю в них. Могу сбросить на мыло, эту байду. Она не много весит.

Вот это ответ, просто без всяких лишних слов. biggrin.gif biggrin.gif biggrin.gif

Просто Query к базе нужно сначала подключить, либо напрямую, либо через Database. Я с dbase вообще не работал никогда, но симптом явный, я думаю ответит кто-нить кто с dbase работал. По моему там еще надо алиас на эту базу создать.
arsen
Отправлено: 11.08.2004, 23:56


Не зарегистрирован







No, databasename здесь не причем. Моя база находится в катологе вместе с прогой. Да и путь к каталогу я тоже там пробовал указывать — такая же лажа и получается. Не знаю уж что делать: весь инет облазел — натыкался только на ерунду какую-то. Может, все таки ты умеешь пользоваться БД, скинешь, если имеется и не жалко конечно, какую-нибудь инфу по созданию БД? E-mail: avtoritet@fromru.com
Зарание спасибо!
Кстати, насчет подключить, проблема точно не в этом. С TTable работает, лишь указав в св. TableName имя базы. А вот с TQuery не хочет работать!
AVC
Отправлено: 12.08.2004, 08:14


Ветеран

Группа: Модератор
Сообщений: 1583



В самом простом случае:
Добустим в каталоге приложения лежит файл test.dbf
Бросаем на форму TQuery(Qry1), TDataSource(DSR1), TDBGrid(Grid1)
Устанавливаем:
CODE

Grid1->DataSource = DSR1;
DSR1->DataSet = Qry1;
Qry1->DatabaseName = ".\"; // грамотно вычислить каталог из Application
Qry1->SessionName = default // можно оставить пустым
Qry1->SQL->Text = "Select * From test.dbf";
Qry1->RequestLive = true;

Все. Можно редактировать при помощи сетки (пока выборка из одной таблицы).
У меня встречается такой прикол — если я выполню запрос в DesignTime, то в RunTime получу ошибку (на Win95/98 такого не было)

Вернуться в Работа с базами данных в C++Builder