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

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

Не могу вносить данные в НД [D7, IB6.x]


Spawn ©   (2003-07-13 07:38:00) 

Есть три таблицы, соединенные как "один ко многим", каждая из них подключена к отдельной DBGrid. Проблема в том, что при подключении к серверу я не могу редактировать данные гридов. То есть фокус ячейка получает, но реакции на внесение данных ни какой. Хотя в еще одной таблице, находящейся на другом TabSheet, все ок .В чем может быть дело? Заранее спасибо.


MsGuns   (2003-07-14 13:09:00) [1]

Для того, чтобы изменения в гридах были доступны, надо прописать в датасетах запросы на удаление-вставку-изменение. Во всех ! При этом для того, чтобы при удалении записи из мастера удалялись все ее "детки", надо либо определить соотв.триггер или каскадное удаление-изменение.


Spawn   (2003-07-14 12:24:00) [2]

Ни как не могу понять в чем проблема :((.

Вот так построена гланая таблица

/* Table: EQUAL, Owner: SYSDBA */

CREATE TABLE "EQUAL"
(
"ID" INTEGER NOT NULL,
"NAME" VARCHAR(100) CHARACTER SET WIN1251,
"TYPES" VARCHAR(100) CHARACTER SET WIN1251,
"PICTURE" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"MNAME" VARCHAR(100) CHARACTER SET WIN1251,
"MFORM" CHAR(50) CHARACTER SET WIN1251,
"MSITY" CHAR(50) CHARACTER SET WIN1251,
"SUPPLER" VARCHAR(100) CHARACTER SET WIN1251,
"SERTIF" VARCHAR(100) CHARACTER SET WIN1251,
"INTTYPE" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"PASPORT" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"METHOD" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"OBJECT" VARCHAR(150) CHARACTER SET WIN1251,
"MVI" CHAR(50) CHARACTER SET WIN1251,
"PWORK" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"SIZES" CHAR(50) CHARACTER SET WIN1251,
"CHECKINERV" CHAR(100) CHARACTER SET WIN1251,
"CHECKING" CHAR(50) CHARACTER SET WIN1251,
"MONEY" CHAR(50) CHARACTER SET WIN1251,
PRIMARY KEY ("ID")
);


С ней связана Params:

/* Table: PARAMS, Owner: SYSDBA */

CREATE TABLE "PARAMS"
(
"PID" INTEGER NOT NULL,
"ID" INTEGER NOT NULL,
"PARAM" CHAR(50) CHARACTER SET WIN1251,
"DIAPASONS" CHAR(50) CHARACTER SET WIN1251,
"ERROR" CHAR(50) CHARACTER SET WIN1251,
PRIMARY KEY ("PID")
);
ALTER TABLE "PARAMS" ADD FOREIGN KEY ("ID") REFERENCES EQUAL ("ID") ON UPDATE CASCADE ON DELETE NO ACTION;


C этой таблицей связана SubDiapasons:

/* Table: SUBDIAPASONS, Owner: SYSDBA */

CREATE TABLE "SUBDIAPASONS"
(
"SUBID" INTEGER NOT NULL,
"DIAPASONS" CHAR(50) CHARACTER SET WIN1251,
"SUBERROR" CHAR(50) CHARACTER SET WIN1251,
"ESOURCE" CHAR(50) CHARACTER SET WIN1251,
"ESIZE" CHAR(50) CHARACTER SET WIN1251
);
ALTER TABLE "SUBDIAPASONS" ADD FOREIGN KEY ("SUBID") REFERENCES PARAMS ("PID") ON UPDATE CASCADE ON DELETE NO ACTION;


Для них добавляю три DBGrid-а, IBDataSet-а, DataSource-а. В IBDataSet2.DataSource>DataSource1. В IBDataSet3.DataSource>DataSource2. Для всех IBDataSet-ов генерирую запросы Editor-ом для соответствующих таблиц (Equal, Params, SubDiapasons). Во всех DBGrid-ах ReadOnly стоит в False, в Options.dgEditing=True. Свойство AutoEdit у DataSource-ов в True. Для Гридов созданы колумны. У всех ReadOnly=False;
При всех этих данных я не могу редактировать данные в DBGrid. Причем, делал такую проверку - подключал лишь первую таблицу - тот же еффект. В чем может быть дело?


Spawn   (2003-07-14 12:24:00) [3]

Блин (( Сорри. Из за глюка експлорера 2 раза запостил.


Spawn   (2003-07-14 12:23:00) [4]

Ни как не могу понять в чем проблема :((.

Вот так построена гланая таблица

/* Table: EQUAL, Owner: SYSDBA */

CREATE TABLE "EQUAL"
(
"ID" INTEGER NOT NULL,
"NAME" VARCHAR(100) CHARACTER SET WIN1251,
"TYPES" VARCHAR(100) CHARACTER SET WIN1251,
"PICTURE" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"MNAME" VARCHAR(100) CHARACTER SET WIN1251,
"MFORM" CHAR(50) CHARACTER SET WIN1251,
"MSITY" CHAR(50) CHARACTER SET WIN1251,
"SUPPLER" VARCHAR(100) CHARACTER SET WIN1251,
"SERTIF" VARCHAR(100) CHARACTER SET WIN1251,
"INTTYPE" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"PASPORT" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"METHOD" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"OBJECT" VARCHAR(150) CHARACTER SET WIN1251,
"MVI" CHAR(50) CHARACTER SET WIN1251,
"PWORK" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
"SIZES" CHAR(50) CHARACTER SET WIN1251,
"CHECKINERV" CHAR(100) CHARACTER SET WIN1251,
"CHECKING" CHAR(50) CHARACTER SET WIN1251,
"MONEY" CHAR(50) CHARACTER SET WIN1251,
PRIMARY KEY ("ID")
);


С ней связана Params:

/* Table: PARAMS, Owner: SYSDBA */

CREATE TABLE "PARAMS"
(
"PID" INTEGER NOT NULL,
"ID" INTEGER NOT NULL,
"PARAM" CHAR(50) CHARACTER SET WIN1251,
"DIAPASONS" CHAR(50) CHARACTER SET WIN1251,
"ERROR" CHAR(50) CHARACTER SET WIN1251,
PRIMARY KEY ("PID")
);
ALTER TABLE "PARAMS" ADD FOREIGN KEY ("ID") REFERENCES EQUAL ("ID") ON UPDATE CASCADE ON DELETE NO ACTION;


C этой таблицей связана SubDiapasons:

/* Table: SUBDIAPASONS, Owner: SYSDBA */

CREATE TABLE "SUBDIAPASONS"
(
"SUBID" INTEGER NOT NULL,
"DIAPASONS" CHAR(50) CHARACTER SET WIN1251,
"SUBERROR" CHAR(50) CHARACTER SET WIN1251,
"ESOURCE" CHAR(50) CHARACTER SET WIN1251,
"ESIZE" CHAR(50) CHARACTER SET WIN1251
);
ALTER TABLE "SUBDIAPASONS" ADD FOREIGN KEY ("SUBID") REFERENCES PARAMS ("PID") ON UPDATE CASCADE ON DELETE NO ACTION;


Для них добавляю три DBGrid-а, IBDataSet-а, DataSource-а. В IBDataSet2.DataSource>DataSource1. В IBDataSet3.DataSource>DataSource2. Для всех IBDataSet-ов генерирую запросы Editor-ом для соответствующих таблиц (Equal, Params, SubDiapasons). Во всех DBGrid-ах ReadOnly стоит в False, в Options.dgEditing=True. Свойство AutoEdit у DataSource-ов в True. Для Гридов созданы колумны. У всех ReadOnly=False;
При всех этих данных я не могу редактировать данные в DBGrid. Причем, делал такую проверку - подключал лишь первую таблицу - тот же еффект. В чем может быть дело?


VID   (2003-07-14 00:57:00) [5]

варианты:
рид онли полей
рид онли грида
наличие update-sql у всех датасетов
свойство AutoEdit у датасоурсов
... пока что в голову больше ничего не пришло ...


Spawn   (2003-07-13 10:04:00) [6]

Использую InterBase(компоненты IBDataBase+IBTransaction+IBDataSet+DataSource, для связанных таблиц свои IBDataSet и DataSource. В IBDataSet-ах сылки на DataSource связанных таблиц). Запросы сгенерированны IBDataSet.


Alexandr   (2003-07-13 09:33:00) [7]

ну нельзя редактировать DataSet
почему?
1) через какие компоненты работаешь?
2) запросы на изменение прописал? Правильно?

и прочее...
ну не может оно само.


Spawn   (2003-07-13 09:07:00) [8]

Я вообще не могу вводить данные в сетку. Фокус ячейки получают но реакции на ввод данных ни какой. Как будто в OnKeyDown Key сьавится в 0.


Alexandr   (2003-07-13 08:47:00) [9]

в запросах на изменение


Наверх

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