Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.09;
Скачать: CL | DM;

Вниз

Обновление запроса UPDATE   Найти похожие ветки 

 
NNH ©   (2007-10-22 13:26) [0]

Добрый день, мастера! Не смог побороть обновление запроса: поля DATA - дата, KOL - Int. Выдает ошибку при обновлении  ExecSQL. Пробовал и через параметры, и прямо указывая значения. Не помогает. Перерыл Архангельского - конкретного нет. Ошибка видимо из-за типов полей. Но как бороться?!

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


 
Reindeer Moss Eater ©   (2007-10-22 13:28) [1]

KOL=Edit1.text"

Правильно делает что посылает


 
Desdechado ©   (2007-10-22 13:28) [2]

Учить синтаксис SQL.
Твой запрос и не запрос вовсе, а бессмысленный набор текста.


 
NNH ©   (2007-10-22 13:32) [3]

Сорри! В конце запроса естественно написано "WHERE NAM=:N"
Учу. Но где просмотреть? Или, как мастера, можете подсказать?


 
Sergey13 ©   (2007-10-22 13:43) [4]

> [0] NNH ©   (22.10.07 13:26)
> Выдает ошибку

Заметь - тебе выдает. Нам сюда ен выдает.

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

Это реальный код или торопился и упрощал что "бы вам понятно было"?


 
Desdechado ©   (2007-10-22 13:45) [5]

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


 
NNH ©   (2007-10-22 13:47) [6]

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


 
Sergey13 ©   (2007-10-22 13:51) [7]

> [6] NNH ©   (22.10.07 13:47)

> почему выдают ошибку по полям

Вот так прямо и выдает - ошибка по полям?

> В таблице запроса все обновляется, а вот при обновлении
> базы выдает ошибку :-(

Ты код давай, а не свои спорные формулировки. "при обновлении базы" - это вы овощную базу имеете в виду?


 
NNH ©   (2007-10-22 14:05) [8]

>Ты код давай, а не свои спорные формулировки. "при обновлении базы" - это вы овощную базу имеете в виду?
"Художника" всякий обидеть может :-))

Запрос такой: "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 14:12) [9]

> [8] NNH ©   (22.10.07 14:05)
> SQL_Up.add (S); // вставил текст запроса - все ОК

Не вставил, а добавил!
Кстати зачем тогда перед этой строчкой Prepare;?

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

Это как вообще?

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

Открыть, а потом выполнить? Ты примерно представляешь что значит каждый оператор?


 
Sergey13 ©   (2007-10-22 14:13) [10]

> [8] NNH ©   (22.10.07 14:05)
> "Художника" всякий обидеть может :-))

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


 
NNH ©   (2007-10-22 14:22) [11]

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

> ExecSQL;
Пытаюсь выполнить обновление основной таблицы. Не правильно?

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


 
Маша Шрайбер ©   (2007-10-22 14:25) [12]

Он себя "художником" считает. И это правильно.


 
Sergey13 ©   (2007-10-22 14:30) [13]

> [11] NNH ©   (22.10.07 14:22)
> Присваиваю значения параметрам. Правильно?

Не неправильно. Мне вообще кажется, что ты разводишь нас - сомнительно, что твой код из
> [8] NNH ©   (22.10.07 14:05)
вообще скомпилировался, неговоря уж о том что бы дойти до "обрыва".


 
NNH ©   (2007-10-22 14:34) [14]

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


 
Sergey13 ©   (2007-10-22 14:40) [15]

> [14] NNH ©   (22.10.07 14:34)

Как твоя задача перекликается с гридом? Грид тут вообще не при делах. Возврат запросом измененных другими данных производится ПЕРЕОТКРЫТИЕМ запроса.


 
NNH ©   (2007-10-22 14:48) [16]

Это я сказал об общей задаче. Вопрос по другому:
Как обновить данные в основной таблице после редактирования с изменными значениями ячеек параметрами DATE and Int? Как воспользоваться твоей подсказкой о перекрытии? Если можно - скажи конкретней. Может где-то ссылку можно прочесть?


 
Sergey13 ©   (2007-10-22 15:04) [17]

> [16] NNH ©   (22.10.07 14:48)

Как же я тебе скажу поконкретнее если ты говоришь про свою проблему меньше чем Зоя Космодемьянская на допросе? Да еще используешь какую то свою терминологию.
Что за основная таблица? Что вообще редактируется? Если редактируется в гриде - там же уже новые значения - зачем обновлять.

ЗЫ: Возьми себе за правило - помни, что человек которому ты задаешь вопрос никогда твоего проекта не видел и не слышал о нем.


 
NNH ©   (2007-10-22 15:33) [18]

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


 
Маша Шрайбер ©   (2007-10-22 15:46) [19]

>> NNH ©   (22.10.07 15:33) [18]

LocalSQL.hlp

>> запрос с UPDATE и присваением как в книжках, то не работает.

Не верю! (с)
Читайте внимательней.

>> Появилась задача: локальная база данных может в будущем будет использоваться двумя машинами.

Paradox в многопользовательском режие? Ах, оставьте эти игры. :)


 
Sergey13 ©   (2007-10-22 15:59) [20]

> [18] NNH ©   (22.10.07 15:33)

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

Если ты редактируешь в гриде накаких запросов тебе не нужно. Делай все методами датасета Insert, Edit, Delete. Все данные в датасете будут актуальны и переоткрывать ничего не надо. По событию BeforePost датасета "основной" таблицы обновляй свои "вспомогательные таблицы", можно запросом можно опять же через датасет.


 
NNH ©   (2007-10-22 16:00) [21]

>Paradox в многопользовательском режие? Ах, оставьте эти игры. :)
А что посоветуете по-проще? С другим не пробовал, простите...


 
NNH ©   (2007-10-22 16:01) [22]

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


 
NNH ©   (2007-10-22 16:19) [23]

> Если ты редактируешь в гриде накаких запросов тебе не нужно. Делай все методами датасета Insert, Edit, Delete. Все данные в датасете будут актуальны и переоткрывать ничего не надо. По событию BeforePost датасета "основной" таблицы обновляй свои "вспомогательные таблицы", можно запросом можно опять же через датасет.

Спасибо. Пошел пробовать :-)))


 
Anatoly Podgoretsky ©   (2007-10-22 16:43) [24]


> а на обновлении база меня посылает :-(

Хочешь, чтобы и мы тебя послали?
До этого совсем недалеко.


 
Desdechado ©   (2007-10-22 16:43) [25]

Я одного не понимаю, где текст ошибки?
И нахрена UpdateSQL при редактировании TTable.
И вообще, синтаксис SQL учи, если его используешь. Модифицируемые поля должны запятыми разделяться.



Страницы: 1 вся ветка

Текущий архив: 2008.03.09;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.024 c
10-1143624416
pavel_guzhanov
2006-03-29 13:26
2008.03.09
Как изменить шрифт в excel


2-1202803897
abhtr
2008-02-12 11:11
2008.03.09
2 TMainMenu на одной форме?


2-1202979105
Ega23
2008-02-14 11:51
2008.03.09
Запуск внешней программы в невидимом режиме


15-1201715595
oxffff
2008-01-30 20:53
2008.03.09
Ищу работу.


2-1202711082
Dib@zol
2008-02-11 09:24
2008.03.09
Win98 + AlphaBlend = ?