![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление запроса UPDATE [D6, Paradox]
NNH © (2007-10-22 13:26:00)Добрый день, мастера! Не смог побороть обновление запроса: поля DATA - дата, KOL - Int. Выдает ошибку при обновлении ExecSQL. Пробовал и через параметры, и прямо указывая значения. Не помогает. Перерыл Архангельского - конкретного нет. Ошибка видимо из-за типов полей. Но как бороться?!
'UPDATE Tab SET DATA=:D KOL=Edit1.text'
Запрос формируется, а на обновлении база меня посылает :-(
Desdechado (2007-10-22 16:43:00) [1]Я одного не понимаю, где текст ошибки?
И нахрена UpdateSQL при редактировании TTable.
И вообще, синтаксис SQL учи, если его используешь. Модифицируемые поля должны запятыми разделяться.
Anatoly Podgoretsky (2007-10-22 16:43:00) [2]
> а на обновлении база меня посылает :-(
Хочешь, чтобы и мы тебя послали?
До этого совсем недалеко.
NNH (2007-10-22 16:19:00) [3]> Если ты редактируешь в гриде накаких запросов тебе не нужно. Делай все методами датасета Insert, Edit, Delete. Все данные в датасете будут актуальны и переоткрывать ничего не надо. По событию BeforePost датасета "основной" таблицы обновляй свои "вспомогательные таблицы", можно запросом можно опять же через датасет.
Спасибо. Пошел пробовать :-)))
NNH (2007-10-22 16:01:00) [4]> А в городе Канада/Canada за использование Парадокса еще в тюрьму не сажают? 8-)
При регистрации не отметил любимый Харьков :-)))
NNH (2007-10-22 16:00:00) [5]>Paradox в многопользовательском режие? Ах, оставьте эти игры. :)
А что посоветуете по-проще? С другим не пробовал, простите...
Sergey13 (2007-10-22 15:59:00) [6]> [18] NNH © (22.10.07 15:33)
А в городе Канада/Canada за использование Парадокса еще в тюрьму не сажают? 8-)
Если ты редактируешь в гриде накаких запросов тебе не нужно. Делай все методами датасета Insert, Edit, Delete. Все данные в датасете будут актуальны и переоткрывать ничего не надо. По событию BeforePost датасета "основной" таблицы обновляй свои "вспомогательные таблицы", можно запросом можно опять же через датасет.
Маша Шрайбер (2007-10-22 15:46:00) [7]>> NNH © (22.10.07 15:33) [18]
LocalSQL.hlp
>> запрос с UPDATE и присваением как в книжках, то не работает.
Не верю! (с)
Читайте внимательней.
>> Появилась задача: локальная база данных может в будущем будет использоваться двумя машинами.
Paradox в многопользовательском режие? Ах, оставьте эти игры. :)
NNH (2007-10-22 15:33:00) [8]Основной таблицей я называю таблицу с данными Tab.db (есть еще вспомогательные, например, кто и когда работал с базой данных).
Появилась задача: локальная база данных может в будущем будет использоваться двумя машинами. Поэтому я начал писать процедуры через запросы.
Теперь нужно написать команду "редактирование существующей записи".
С удалением, добавлением и заменой записей разобрался. А вот с редактированием (обновленние таблицы после редактирования) облом!
Пользователь может редактировать только два поля - количество (int) и вид упаковки (String). После нажатия кнопки Сохранить поле Дата нужно изменить на NOW. Для передачи в запрос измененных значений я применил два параметра запроса для даты (:Da) и для количества (:Ko).
Когда я применил: SQL_Up.Modify , то данные почему-то не обновлялись. Почитав книжки, убрал Модифи, и поставил ExecSQL. В результате ни данные не меняются, а компилярор посылает.
Я старался объяснить ситуацию :-)
Как написать запрос на обновление с параметрами? Если SELECT работает сэтими полями нормально, то изменив запрос с UPDATE и присваением как в книжках, то не работает. Может последовательность команд не правильная?
Подскажи пример запроса и команды на обновление на свой взгляд (если уж до этого не послал меня :-))
Sergey13 (2007-10-22 15:04:00) [9]> [16] NNH © (22.10.07 14:48)
Как же я тебе скажу поконкретнее если ты говоришь про свою проблему меньше чем Зоя Космодемьянская на допросе? Да еще используешь какую то свою терминологию.
Что за основнаятаблица? Что вообще редактируется? Если редактируется в гриде - там же уже новые значения - зачем обновлять.
ЗЫ: Возьми себе за правило - помни, что человек которому ты задаешь вопрос никогда твоего проекта не видел и не слышал о нем.
NNH (2007-10-22 14:48:00) [10]Это я сказал об общей задаче. Вопрос по другому:
Как обновить данные в основной таблице после редактирования с изменными значениями ячеек параметрами DATE and Int? Как воспользоваться твоей подсказкой о перекрытии? Если можно - скажи конкретней. Может где-то ссылку можно прочесть?
Sergey13 (2007-10-22 14:40:00) [11]> [14] NNH © (22.10.07 14:34)
Как твоя задача перекликается с гридом? Грид тут вообще не при делах. Возврат запросом измененных другими данных производится ПЕРЕОТКРЫТИЕМ запроса.
NNH (2007-10-22 14:34:00) [12]Компилируется...
Значит я не правильно ставлю вопрос :-((
Задача в общем-то простая. Одним запросом (SQL_Sel) отображаю данные в Гриде. После редактирования данных (количество упаковок) нужно вернуть данные другим запросом (SQL_Up) в основную таблицу с указанием даты редактирования. После чего вновь отобразить в Гриде измененную таблицу запросом (SQL_Sel).
Sergey13 (2007-10-22 14:30:00) [13]> [11] NNH © (22.10.07 14:22)
> Присваиваю значения параметрам. Правильно?
Не неправильно. Мне вообще кажется, что ты разводишь нас - сомнительно, что твой код из
> [8] NNH © (22.10.07 14:05)
вообще скомпилировался, неговоря уж о том что бы дойти до "обрыва".
Маша Шрайбер (2007-10-22 14:25:00) [14]Он себя "художником" считает. И это правильно.
NNH (2007-10-22 14:22:00) [15]> ParamByName('D').AsString:=:D;
> ParamByName('Ko').AsString:=:Ko;
Присваиваю значения параметрам. Правильно?
> ExecSQL;
Пытаюсь выполнить обновление основной таблицы. Не правильно?
Через MODIFY тоже не обновилось в основной таблице...
А про художника - это цитата из классики :-)
Sergey13 (2007-10-22 14:13:00) [16]> [8] NNH © (22.10.07 14:05)
> "Художника" всякий обидеть может :-))
Ты себя художником считаешь? Ну тогда скажи заказчику твоей "проги", что ты так видишь мир. Может пройдет. 8-)
Sergey13 (2007-10-22 14:12:00) [17]> [8] NNH © (22.10.07 14:05)
> SQL_Up.add (S); // вставил текст запроса - все ОК
Не вставил, а добавил!
Кстати зачем тогда перед этой строчкой Prepare;?
> ParamByName('D').AsString:=:D;
> ParamByName('Ko').AsString:=:Ko;
Это как вообще?
> Open; // - все ОК - в таблице запроса данные обновились без проблем
> ExecSQL; и вот здесь обрыв!
Открыть, а потом выполнить? Ты примерно представляешь что значит каждый оператор?
NNH (2007-10-22 14:05:00) [18]>Ты код давай, а не свои спорные формулировки. "при обновлении базы" - это вы овощную базу имеете в виду?
"Художника" всякий обидеть может :-))
Запрос такой: '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; и вот здесь обрыв!
Sergey13 (2007-10-22 13:51:00) [19]> [6] NNH © (22.10.07 13:47)
> почему выдают ошибку по полям
Вот так прямо и выдает - ошибка по полям?
> В таблице запроса все обновляется, а вот при обновлении
> базы выдает ошибку :-(
Ты код давай, а не свои спорные формулировки. "при обновлении базы" - это вы овощную базу имеете в виду?
NNH (2007-10-22 13:47:00) [20]Есть в форуме кто-либо знающий синтаксис SQL, и который может подсказать: почему выдают ошибку по полям
'UPDATE Tab SET DATA=:D KOL=:Ko WHERE NAM=:N'
В таблице запроса все обновляется, а вот при обновлении базы выдает ошибку :-(