![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Реальные данные вместо ссылок [D7]
bagos © (2009-04-02 15:52:00)Всем здрасте, делаю базу на firebird и клиент на delphi.
Запнулся на след. месте. есть таблица со ссылками на другие таблицы. т.е. в таблицы одни циферки являющиеся id в других таблицах. Для пользователя это не очень удобно будет;)))
Как мне вывести информацию чтобы вместо ссылок пользователь видел реальные данные. Использую fibdatabase,fibdataset,datasource,dbgrid
set1212 (2009-06-09 06:37:00) [1]>у меня в гриде отображаются 2 таблицы внутренним соединением >соединеные в одну. в принципе все для счастья есть в одной таблице, >просто наименования работ в другой хранятся и не удобно использовать >числовые ID работ. Поэтому использовал внутреннее соединение. НО при >попытке просто изменить данные в гриде или вставить запись выдает >ошибку 'Недостаточно сведений ключевого поля для обновления'. Как >сделать так чтобы данные в гриде прямо менять можно было?
Программа не понимает, какую именно таблицу надо редактировать, для этого в событии AfterOpen напишиши следующее
дата сет.Properties['Unique Table'].Value:= 'Таблицу которую хочешь отредактировать';
Sergey13 (2009-06-05 16:05:00) [2]> [10] MsGuns © (05.06.09 15:21)
Сделать его редактируемым.
MsGuns (2009-06-05 15:21:00) [3]А как ты предлагаешь средствами IBX редактировать нередактируемый датасет ?
Ega23 (2009-06-05 15:15:00) [4]Ну понеслось....
Давайте ещё C++ vs Delphi сюда приплетём...
MsGuns (2009-06-05 14:53:00) [5]Можно, но хитро. Например, используя вместо TIBDataSet TClientDataSet и запросы (лучше хранимки на сервере) с параметрами
Павел Калугин (2009-06-05 14:18:00) [6]
> kliver (05.06.09 12:37) [6]
Ние стоит так делать (редактировать в гриде) без крайней необходимости
kliver (2009-06-05 12:37:00) [7]у меня в гриде отображаются 2 таблицы внутренним соединением соединеные в одну. в принципе все для счастья есть в одной таблице, просто наименования работ в другой хранятся и не удобно использовать числовые ID работ. Поэтому использовал внутреннее соединение. НО при попытке просто изменить данные в гриде или вставить запись выдает ошибку 'Недостаточно сведений ключевого поля для обновления'. Как сделать так чтобы данные в гриде прямо менять можно было?
bagos (2009-04-02 17:07:00) [8]спасибо большое, но уже допер)))
Ega23 (2009-04-02 16:50:00) [9]
select A.Name, B.Type, C.SomethingElse
from ATable A inner join BTable B on (A.BID=B.ID)
inner join CTable C on (B.CID=C.ID)
where
....
order by ...
bagos (2009-04-02 16:31:00) [10]select stu_specializations.name from stu_nagruzka inner join stu_specializations on stu_specializations.id = stu_nagruzka.spec_id
выводит что надо, но мне нужны и другие столбцы, запутался в синтаксисе.
select stu_specializations.name,stu_form.name from stu_nagruzka inner join stu_specializations on stu_specializations.id = stu_nagruzka.spec_id and stu_form on stu_form.id = stu_nagruzka.form_id
stas (2009-04-02 15:56:00) [11]Это вобще основы БД.
объединение таблиц на сервере (JOIN). либо подстановочные поля использовать.
Sergey13 (2009-04-02 15:56:00) [12]Запросом. Или лукап полями.