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

Вниз

Использование команды Update в LocalSQL Дельфи   Найти похожие ветки 

 
bav9 ©   (2004-03-30 11:25) [0]

Две таблицы связаны по ключевому полю. В каждой есть логические поля - в одной - Pokaz, во второй - Vyzov. Необходимо переодически, по запросу - изменять значение Pokaz в зависимости от значений самого поля Pokaz  и поля Vyzov из другой таблицы. В tQuery задал Datasource и подаю команду :
 UPDATE klients.dbf set pokaz = pokaz and :vyzov
а она мне говорит :
 Invalid use of keyword. Token: and
Та же ошибка вылезает и при использовании остальных логических операторов ( .. set pokaz = not pokaz
В этом случае как правильно использовать ВЫРАЖЕНИЯ в команде Update, в частности - логические ( и вообще, можно ли их использовать :-( ).


 
Курдль ©   (2004-03-30 11:31) [1]

Классический (ANSI) SQL не допускает выражений при INSERT и UPDATE. Возможны отклонения в конкретных реализациях (читайте мануал dBase, FoxPro, если такой еще не не рассыпался от ветхости :)
Выход - обработать выражение pokaz and vyzov на клиенте и упихать в БД при помощи ... set pokaz = :pokaz


 
bav9 ©   (2004-03-30 11:39) [2]

Обрабатывал, пихал, Комп - при большой базе - просто засыпает !
Думал, прямо ч/з Update - работа пойде быстрее. Неужели - нет выхода, и ни как нельзя работать с выражениями прямо в запросе ?


 
Reindeer Moss Eater ©   (2004-03-30 11:51) [3]

UPDATE klients.dbf set pokaz = pokaz and :vyzov

а где where если есть and?


 
Курдль ©   (2004-03-30 12:09) [4]


> bav9 ©   (30.03.04 11:39) [2]
> Обрабатывал, пихал, Комп - при большой базе - просто засыпает
> !


Это не Ваша проблема. Точнее, это проблема в Вашем выборе СУБД.

Попробуйте, съест ли "dBase, FoxPro" это:

if TABLE1.POKAZ and TABLE2.VIZOV TABLE1.POKAZ
 then update TABLE1 set POKAZ = True
 else update TABLE1 set POKAZ = False
end if


 
Курдль ©   (2004-03-30 12:10) [5]

Поправочка:if TABLE1.POKAZ and TABLE2.VIZOV
then update TABLE1 set POKAZ = True
else update TABLE1 set POKAZ = False
end if



 
bav9 ©   (2004-03-30 13:00) [6]

может, dBase, Foxpro - и съест, а вот Delphi LocalSQL - не хочет. Перефразирую вопрос : можно ли в запросах tQuery указывать вычисляемые ЛОГИЧЕСКИЕ поля ? типа Select (klients.pokaz and vseoch.vyzov) as mmm from klients inner join vseoch on (klients.nch=vseoch.nch)


 
bav9 ©   (2004-03-30 14:29) [7]

ждитте оттветта ..


 
bav9 ©   (2004-03-30 16:55) [8]

Если использовать два tQuery - в одном - собирать значения : nch (код), pokaz, vyzov - а потом делать UPDATE во втором запросе, используя первый - то обновляется почему -то только первая найденная в первом запросе запись. Первый запрос :     "select klients.nch,klients.pokaz as mm1,vseoch.vyzov as mm2 from klients inner join vseoch on (klients.nch=vseoch.nch) where klients.pokaz=true or vseoch.vyzov=false"
Второй запрос : UPDATE klients.dbf set pokaz=true where nch=:nch"
Запросы связаны ч/з Datasource. ПОЧЕМУ ???


 
bav9 ©   (2004-03-30 19:10) [9]

Никто не сталкивался с такой проблемой ? НЕ ПОВЕРЮ ! Есть же способ ??? Поделитесь, плз, военной тайной !!!



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1080740114
TankMan
2004-03-31 17:35
2004.04.25
Какое сообщение приходит при прокручивании скрола в ListBox?


3-1080635505
Igoryok
2004-03-30 12:31
2004.04.25
MySQL база или как получить доступ


11-1065510579
Ал
2003-10-07 11:09
2004.04.25
D6 под XP - непредсказуемо увеличивается размер exe на 40 к


7-1078223382
stewart
2004-03-02 13:29
2004.04.25
Работа с модемом


14-1081233338
Думкин
2004-04-06 10:35
2004.04.25
С днем рождения! 6 апреля.