Оновлення запиту update

Оновлення запиту UPDATE

Добрий день, майстри! Не зміг побороти оновлення запиту: поля DATA - дата, KOL - Int. Видає помилку при оновленні # XA0; ExecSQL. Пробував і через параметри, і прямо вказуючи значення. Не допомагає. Перерив Ніжин - конкретного немає. Помилка мабуть через типів полів. Але як боротися ?!

"UPDATE Tab SET DATA =: D KOL = Edit1.text"
Запит формується, а на оновленні база мене посилає :-(

Правильно робить що посилає

Вчити синтаксис SQL.
Твій запит і не запит зовсім, а безглуздий набір тексту.

Зауваж - тобі видає. Нам сюди ен видає.

> "UPDATE Tab SET DATA =: D KOL = Edit1.text"

Це реальний код або поспішав і спрощував що "б вам зрозуміло було"?

> # XA0; природно написано "WHERE NAM =: N"
А весь запит цілком з кодом разом привести можна?

Є в форумі хто-небудь знає синтаксис SQL, і який може підказати: чому видають помилку по полях
"UPDATE Tab SET DATA =: D KOL =: Ko WHERE NAM =: N"
У таблиці запиту все оновлюється, а ось при оновленні бази видає помилку :-(

> Чому видають помилку по полях

Ось так прямо і видає - помилка по полях?

> У таблиці запиту все оновлюється, а ось при оновленні
> Бази видає помилку :-(

Ти код давай, а не свої спірні формулювання. "При оновленні бази" - це ви овочеву базу маєте на увазі?

> Ти код давай, а не свої спірні формулювання. "При оновленні бази" - це ви овочеву базу маєте на увазі?
"Художника" всякий образити може :-))

Запит такий: "UPDATE Tab SET DATA =: D KOL =: Ko WHERE NAM =: N"
У таблиці запиту дані оновлюються. А при коді на виконання оновлення в основний таблиці БАЗИ ДАНИХ (Tab.db) генерується помилка:
Close.
Prepare;
SQL_Up.add (S); // вставив текст запиту - все ОК
ParamByName ( "D"). AsString: =: D;
ParamByName ( "Ko"). AsString: =: Ko;
Open; // - все ОК - в таблиці запиту дані оновилися без проблем
ExecSQL; і ось тут обрив!

Чи не вставив, а додав!
До речі навіщо тоді перед цим рядком Prepare ;?

> ParamByName ( "D"). AsString: =: D;
> ParamByName ( "Ko"). AsString: =: Ko;

> Open; // - все ОК - в таблиці запиту дані оновилися без проблем
> ExecSQL; і ось тут обрив!

Відкрити, а потім виконати? Ти приблизно уявляєш що означає кожен оператор?

Ти себе художником вважаєш? Ну тоді скажи замовнику твоєї "проги", що ти так бачиш світ. Може пройде. 8-)

> ParamByName ( "D"). AsString: =: D;
> ParamByName ( "Ko"). AsString: =: Ko;
Привласнюю значення параметрам. Правильно?

> ExecSQL;
Намагаюся виконати оновлення основної таблиці. Чи не правильно?

Через MODIFY теж не оновилося в основній таблиці.
А про художника - це цитата з класики :-)

Він себе "художником" вважає. І це вірно.

Компілюється.
Значить я не правильно ставлю питання: - ((
Завдання в общем-то проста. Одним запитом (SQL_Sel) відображаю дані в грід. Після редагування даних (кількість упаковок) потрібно повернути дані іншим запитом (SQL_Up) в основну таблицю із зазначенням дати редагування. Після чого знову відобразити в грід змінену таблицю запитом (SQL_Sel).

Як твоя задача перегукується з ґрідом? Грід тут взагалі ні при чому. Повернення запитом змінених іншими даних проводиться перевідкриття запиту.

Це я сказав про загальному завданню. Питання по іншому:
Як оновити дані в основній таблиці після редагування з змінити значення осередків параметрами DATE and Int? Як скористатися твоєю підказкою про перекриття? Якщо можна - скажи конкретніше. Може десь посилання можна прочитати?

Як же я тобі скажу конкретніше якщо ти говориш про свою проблему менше ніж Зоя Космодем'янська на допиті? Та ще використовуєш якусь свою термінологію.
Що за основна таблиця? Що взагалі редагується? Якщо редагується в гріді - там же вже нові значення - навіщо оновлювати.

ЗИ: Візьми собі за правило - пам'ятай, що людина якій ти ставиш питання ніколи твого проекту не бачив і не чув про нього.

Основний таблицею я називаю таблицю з даними Tab.db (є ще допоміжні, наприклад, хто і коли працював з базою даних).
З'явилася завдання: локальна база даних може в майбутньому буде використовуватися двома машинами. Тому я почав писати процедури через запити.
Тепер потрібно написати команду "редагування існуючого запису".
З видаленням, додаванням і заміною записів розібрався. А ось з редагуванням (оновлення таблиці після редагування) облом!
Користувач може редагувати лише два поля - кількість (int) і вид упаковки (String). Після натискання кнопки Зберегти поле Дата потрібно змінити на NOW. Для передачі в запит змінених значень я застосував два параметра запиту для дати (: Da) і для кількості (: Ko).
Коли я застосував: SQL_Up.Modify. то дані чомусь не оновлювалися. Почитавши книжки, прибрав Модифі, і поставив ExecSQL. В результаті ні дані не змінюються, а компілярор посилає.
Я намагався пояснити ситуацію :-)
Як написати запит на оновлення з параметрами? Якщо SELECT працює сетімі полями нормально, то змінивши запит з UPDATE і прісваеніем як в книжках, то не працює. Може послідовність команд не правильна?
Підкажи приклад запиту та команди на оновлення на свій погляд (якщо вже до цього не послав мене :-))

>> запит з UPDATE і прісваеніем як в книжках, то не працює.

Не вірю! (С)
Читайте уважніше.

>> З'явилася завдання: локальна база даних може в майбутньому буде використовуватися двома машинами.

Paradox в розрахованому на багато користувачів режіе? Ах, залиште ці ігри. )

А в місті Канада / Canada за використання Парадокс ще в тюрму не саджають? 8-)

Якщо ти редагуєш в гріді накакіх запитів тобі не потрібно. Роби все методами датасета Insert, Edit, Delete. Всі дані в датасета будуть актуальні і перевідкривати нічого не треба. За подією BeforePost датасета "основний" таблиці оновлюй свої "допоміжні таблиці", можна запитом можна знову ж через датасета.

> Paradox в розрахованому на багато користувачів режіе? Ах, залиште ці ігри. )
А що порадите по-простіше? З іншим не пробував, вибачте.

> А в місті Канада / Canada за використання Парадокс ще в тюрму не саджають? 8-)
При реєстрації залишив поза увагою улюблений Харків :-)))

> Якщо ти редагуєш в гріді накакіх запитів тобі не потрібно. Роби все методами датасета Insert, Edit, Delete. Всі дані в датасета будуть актуальні і перевідкривати нічого не треба. За подією BeforePost датасета "основний" таблиці оновлюй свої "допоміжні таблиці", можна запитом можна знову ж через датасета.

Дякуємо. Пішов пробувати :-)))


> А на оновленні база мене посилає :-(

Хочеш, щоб і ми тебе послали?
До цього зовсім недалеко.

Я одного не розумію, де текст помилки?
І нахрена UpdateSQL при редагуванні TTable.
І взагалі, синтаксис SQL вчи, якщо його використовуєш. Модифікуються поля повинні запитом розділятися.