Чи не редагуються осередку dbgrid


Редагований набір записів повинен містити поле - ідентифікатор запису з унікальними значеннями, використовуваний для зв'язування записів таблиці бази даних і рядків набору. Необхідно явно включати це поле у ​​список запитуваних полів запиту SELECT. Для різних СУБД існують різні підходи до реалізації механізму зв'язування записів таблиці і рядків набору.


- Деякі СУБД мають 'приховані' поля - ідентифікатори записів для кожної збереженої таблиці (ROWID в Oracle, OID в PostgreSQL). Ці поля створюються неявно, навіть якщо ви не включали його опису в список полів оператора CREATE TABLE.

ЗИ. Akella і ін. Форумчани, мій питання актуальне.


Не, так тож не хоче.
Мені тут на іншому форумі підказали, що таке можливо коли ключові поля незадані.
Хоча здається не в цьому справа. підключився до БД Accessa, з однією таблицею без ключових полів, все норм редагує.

причому 1-й запит ніби як "Нередагована" виходить.

так це якраз і є редагований запит.

Додано пізніше:
Kbl4AH. по ідеї, якщо в запиті беруть участь кілька таблиць, то такий запит буде Нередагована. Ну да, і ключове поле повинно бути, інакше звідки знати компонентам, яку саме запис редагувати. Якщо не буде ключового поля, то є небезпека відредагувати більше одного запису. Уявімо, що у нас є запит:

(Ні name, ні phones не є первинними ключами)
У гріді буде видно 2 поля. Тепер уявімо, що ми редагуємо перший запис, де є значення:
Вася Пупки | 777-0-777

SQL Update такого запиту буде такою:

в цьому випадку може відредагувати не тільки поточна запис, а ще кілька інших, які потрапили під умову where

ну може приклад трохи дурнуватий, але, сподіваюся, що він, як би, роз'яснює ситуацію з відсутністю ключового поля

Чи не редагуються осередку dbgrid


так про редагування об'єднати таблиць у мене немає питань.
у мене питання: чому АДОдатасет редагує (і чому він редагує, якщо не вибрано rowid) оракловий запит select * from table, а ОРАКЛдатасет - немає. запит-то адже однаковий. хоча. напевно, в ОраклДатаСете просто грамотно реалізували, щоб явно розмежувати редактіреумие і Нередагована запити.

Мені тут на іншому форумі підказали, що таке можливо коли ключові поля незадани.Хотя здається не в цьому справа. підключився до БД Accessa, з однією таблицею без ключових полів, все норм редагує.


так в цитаті ж саме це і написано!

а ще чому для такого варіанту, як ти написав

тобі не потрібно 24 Едіта, а для того щоб через запит зробити потрібно.

Те що ти робиш через компоненти можна зробити через запит, причому різниці ніякої в плані того, що якщо робити так то потрібно 24 Едіта, а якщо робити так то не потрібно.


Ну можна зробити 24 таких рядки ADOquery1.FieldByName ( 'id_poselok'). AsString: = '4';
А ще краще, щоб назва поля, бралося і містилося сюди ADOquery1.FieldByName ( 'id_poselok') .asString: = '4'; при натисканні на приналежну цьому полю осередок.
Коротше, простіше кажучи, я хочу робити, то що робить DBNavigator /

А якщо робити через запит
Query1.SQL.add ( 'insert into poselok ( "Номер", "Назва") values ​​(' '' + edit1.Text + '' ',' '' + edit2.Text + '' ')');
То я не знаю, як вбити в Values ​​24 значення, а потім поміняти таблиці і всього 2.

давай по порядку всі

1) які типи у полів

2) код, який ти використовуєш для того щоб додалося че-то на даний момент.

Ну чого мені все таблиці з усіма полями перераховувати)
1) Номер (Integer), Назва (character varying (64))
2) Я поки що нічого не використовую) я вибираю або через запит типу

Або таким способом

пишеш цей код на кнопку, тільки поля за своїм називаєш, і відповідно в Items [] індекс ставиш потрібний
так ось далі запускаєш
натискаєш на дбгрід, після цього ніжімаешь стрілочку вниз, з'являється рядок, ти туди записавши нові дані, потім натискаєш на кнопку, все. я написав ADOQuery1.Edit ;, тк якщо він не переводить в режим редагування, він відкриває на запис все це справа.
має працювати
давай, пробуй швидше.

Додано пізніше:
індекси в Items [] ставиш, у першого поля 0, у другого 1, у третього 2, думаю зрозуміло.
зи
має працювати, хоча я в Дельфи НЕ рубля)))

Чи не редагуються осередку dbgrid


Коротше, простіше кажучи, я хочу робити, то що робить DBNavigator /

пишеш цей код на кнопку, тільки поля за своїм називаєш, і відповідно в Items [] індекс ставиш потрібний

так ось далі запускаєш

натискаєш на дбгрід, після цього ніжімаешь стрілочку вниз, з'являється рядок, ти туди записавши нові дані, потім натискаєш на кнопку, все. я написав ADOQuery1.Edit ;, тк якщо він не переводить в режим редагування, він відкриває на запис все це справа.

давай, пробуй швидше.

індекси в Items [] ставиш, у першого поля 0, у другого 1, у третього 2, думаю зрозуміло.

має працювати, хоча я в Дельфи НЕ рубля)))


Є така проблема, коли я ввів в першому полі значення, переходжу на друге і то що ввів в першому скидається, на те що було) Вообщем начебто не працює так.