Редагований набір записів повинен містити поле - ідентифікатор запису з унікальними значеннями, використовуваний для зв'язування записів таблиці бази даних і рядків набору. Необхідно явно включати це поле у список запитуваних полів запиту SELECT. Для різних СУБД існують різні підходи до реалізації механізму зв'язування записів таблиці і рядків набору.
- Деякі СУБД мають 'приховані' поля - ідентифікатори записів для кожної збереженої таблиці (ROWID в Oracle, OID в PostgreSQL). Ці поля створюються неявно, навіть якщо ви не включали його опису в список полів оператора CREATE TABLE.
ЗИ. Akella і ін. Форумчани, мій питання актуальне.
Не, так тож не хоче.
Мені тут на іншому форумі підказали, що таке можливо коли ключові поля незадані.
Хоча здається не в цьому справа. підключився до БД Accessa, з однією таблицею без ключових полів, все норм редагує.
причому 1-й запит ніби як "Нередагована" виходить.
так це якраз і є редагований запит.
Додано пізніше:
Kbl4AH. по ідеї, якщо в запиті беруть участь кілька таблиць, то такий запит буде Нередагована. Ну да, і ключове поле повинно бути, інакше звідки знати компонентам, яку саме запис редагувати. Якщо не буде ключового поля, то є небезпека відредагувати більше одного запису. Уявімо, що у нас є запит:
(Ні name, ні phones не є первинними ключами)
У гріді буде видно 2 поля. Тепер уявімо, що ми редагуємо перший запис, де є значення:
Вася Пупки | 777-0-777
SQL Update такого запиту буде такою:
в цьому випадку може відредагувати не тільки поточна запис, а ще кілька інших, які потрапили під умову where
ну може приклад трохи дурнуватий, але, сподіваюся, що він, як би, роз'яснює ситуацію з відсутністю ключового поля
так про редагування об'єднати таблиць у мене немає питань.
у мене питання: чому АДОдатасет редагує (і чому він редагує, якщо не вибрано 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, думаю зрозуміло.
зи
має працювати, хоча я в Дельфи НЕ рубля)))
Коротше, простіше кажучи, я хочу робити, то що робить DBNavigator /
пишеш цей код на кнопку, тільки поля за своїм називаєш, і відповідно в Items [] індекс ставиш потрібний
так ось далі запускаєш
натискаєш на дбгрід, після цього ніжімаешь стрілочку вниз, з'являється рядок, ти туди записавши нові дані, потім натискаєш на кнопку, все. я написав ADOQuery1.Edit ;, тк якщо він не переводить в режим редагування, він відкриває на запис все це справа.
давай, пробуй швидше.
індекси в Items [] ставиш, у першого поля 0, у другого 1, у третього 2, думаю зрозуміло.
має працювати, хоча я в Дельфи НЕ рубля)))
Є така проблема, коли я ввів в першому полі значення, переходжу на друге і то що ввів в першому скидається, на те що було) Вообщем начебто не працює так.