Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Вниз

Обнулениеячейки в пародоксовской табличке.   Найти похожие ветки 

 
Елена   (2005-05-13 07:21) [0]

Доброго времени суток. Подскажите, пожалуйста, как можно полностью обнулить ячейку (поле) типа Currency в таблице Paradox. Работая с Interbase  это делала так:
DM.IBQuery2.Close;
    DM.IBQuery2.SQL.Clear;
    DM.IBQuery2.SQL.Add("UPDATE SOOTVET SET REZ_NACH = :p2  where ACCOUNT = :p1");
    DM.IBQuery2.ParamByName("p1").Value:=DM.IBTable1.fieldbyname("ACCOUNT").AsString;
    DM.IBQuery2.ParamByName("p2").Value:=null;
    DM.IBQuery2.Open;
В Парадоксе так не проходит, nil тоже не "кушает", также как и "||", "", strtofloat"".


 
evvcom ©   (2005-05-13 08:19) [1]

DM.IBQuery2.ParamByName("p2").Clear;


 
sniknik ©   (2005-05-13 08:23) [2]

а так
DM.IBQuery2.SQL.Add("UPDATE SOOTVET SET REZ_NACH = null where ACCOUNT = :p1");
(может в local sql null тоже есть)


 
Елена   (2005-05-13 08:38) [3]

Люди, обратите внимание, пожалуйста, что с IBQuery2 я выложила рабочий код для interbase, для Paradox такое не идет, он null не знает, т.е. вот такое уже не работает:
DM.Query1.SQL.Clear;
 DM.Query1.SQL.Add("update obraz set Ob_deb=:p1 where Ob_deb=0");
 DM.Query1.ParamByName("p1").Value:=null;
 DM.Query1.Open;


 
sniknik ©   (2005-05-13 08:48) [4]

Елена обрати внимание, local sql это BDE, а BDE это Paradox как бы это пародоксально не было. ;)
ктати, у тебя запрос не возврашает данных, т.е. null на который ты "ополчилась" и начала писать кашает его или не кушает (вместо приведения выдаваемой ошибки) может быть сдесь совсем не причем.


 
evvcom ©   (2005-05-13 08:51) [5]

Стоп! А почему Open? В запросе же UPDATE! Execute здесь нужен. И поточнее, пожалуйста, насчет ошибки: где и что пишет?


 
Елена   (2005-05-13 09:02) [6]

evvcom © - Это не красиво, но не критично, сейчас исправила на DM.Query1.ExecSQL; такой же результат.

sniknik ©   не очень поняла смысл написанного...

Можно я повторю вопрос: Как поле currency в парадоксовской таблице сделать пустым?


 
evvcom ©   (2005-05-13 09:05) [7]


> Это не красиво

Что некрасиво? Не понял...

И про ошибку так ничего не пояснила. Текст ошибки и строка в которой она "вылезает"?


 
Елена   (2005-05-13 09:07) [8]

Ошибка, он не понимает что такое null


 
Anatoly Podgoretsky ©   (2005-05-13 09:08) [9]

evvcom ©   (13.05.05 08:51) [5]
Какой Execute нет у Tquery такого метода.

Елена   (13.05.05 08:38) [3]
Надо переписать код так
DM.Query1.Close;
DM.Query1.SQL.Text := "update obraz set Ob_deb=:p1 where Ob_deb=0");
DM.Query1.ParamByName("p1").Clear; // может и лишнее, вроде бы и так уже NULL
DM.Query1.ExecSql;


Насчет NULL в справке нет ни слова про него, может для Парадокс это и не возможно.


 
Елена   (2005-05-13 09:19) [10]

Anatoly Podgoretsky ©

не работает, выдает ошибку: "Для Query1 поле р1 является неизвестним типом". Простите за корявый перевод, но смысл понятен.


 
evvcom ©   (2005-05-13 09:26) [11]


> Какой Execute нет у Tquery такого метода.

Писал навскидку. Нашла ведь Елена ExecSQL.

> Для Query1 поле р1 является неизвестним типом

Значит надо определить тип параметра, до null еще дело не дошло.


 
Anatoly Podgoretsky ©   (2005-05-13 09:38) [12]

Понятен, это означает, что у тебя не создался параметр.
Можно попробовать так, перед DM.Query1.ParamByName вставить
Можно попробовать так, перед DM.Query1.Paramы.ParseSQL(DM.Query1.SQL.Text, TRUE): String;
или создать параметр вручную, задав все значения полей, еще можно создать параметр прямо в компоненте во design time и там определить все характеристики.

Также обратить внимание на ParamCheck


 
Leshiy ©   (2005-05-13 09:38) [13]

Так проходит:

DM.Query1.Close;
DM.Query1.SQL.Text := "update obraz set Ob_deb=null where Ob_deb=0");
DM.Query1.ExecSql;

Но, если кто знает как через параметр передать - скажите (мне тоже нужно).


 
Елена   (2005-05-13 09:55) [14]

Anatoly Podgoretsky © а можно глупый вопрос задать?
>или создать параметр вручную, задав все значения полей, еще можно создать параметр прямо в компоненте во design time и там определить все характеристики.

А какие характеристики у null? :-)


 
Sergey13 ©   (2005-05-13 10:01) [15]

2[14] Елена   (13.05.05 09:55)
А почему хочется имеено NULL а не 0? Где то есть проверка на Is Null? И она работает?


 
evvcom ©   (2005-05-13 10:15) [16]


> А какие характеристики у null?

У null одна характеристика - "нет значения", но у поля и параметра есть характеристика "тип" и для некоторых типов также важен "размер". А уже в Field.Value или Param.Value записывается null или 0, "" и прочее в зависимости от типа.


 
Anatoly Podgoretsky ©   (2005-05-13 10:21) [17]

Ну я не использую Парадокс и в последних проектах не использую БДЕ. В АДО немного другие параметры, там есть свойство TParameterAttribute, которому можно присвоить значение psNullable, у БДЕ этого нет.
Сообщение [13] пробовала? Если оно не работает то можно не мучиться, а для Currency в Парадоксе вообще возможно значение NULL или нет. Парадокс не зря парадоксом назвали. Я на него уже лет 15 удивляюсь.


 
Елена   (2005-05-13 10:22) [18]

evvcom ©, Sergey13 ©  если пишешь null запрос не работает, а 0 мне не надо, пожелание пользователя, чтобы нули в табличке не отображались.


 
stone ©   (2005-05-13 10:26) [19]


> Елена   (13.05.05 10:22) [18]
> evvcom ©, Sergey13 ©  если пишешь null запрос не работает,
> а 0 мне не надо, пожелание пользователя, чтобы нули в табличке
> не отображались.

Чтобы нули не отображались в гриде? Я правильно понимаю? Ну так это можно решить и на клиенте, например через OnGetText


 
Елена   (2005-05-13 10:32) [20]

stone © меня немного не устраивает данные вариант, так как данные таблицы потом распечатываются...


 
Anatoly Podgoretsky ©   (2005-05-13 10:35) [21]

Елена   (13.05.05 10:22) [18]
Тогда это совсем другая проблема, это проблема отображения используй OnGetText как сказали. Присваивать числовым полям пустые значения это специально расставлять грабли по пути следования. Следует поступить как раз наоборот все пустые значения преобразовать в 0 и больше никогда так не делать.
Волосы будут прямые и шелковистые.


 
Sergey13 ©   (2005-05-13 10:36) [22]

2[20] Елена   (13.05.05 10:32)
Ну и что? Какая разница?


 
Anatoly Podgoretsky ©   (2005-05-13 10:49) [23]

Елена   (13.05.05 10:32) [20]
Они и при расчатке такие же будут, если будет использоваться тот же набор данных, это работает на уровне поля, а не грида или подобного.


 
evvcom ©   (2005-05-13 10:56) [24]

Елена. Что-то Вы нам вешаете на слуховые аппараты (или смотровые). Только что создал тестовое приложение. Таблица Paradox 5.0 for Windows. Поле aa типа $(Money), bb - Number.
В Delphi TQuery.SQL: "update "aa.DB" set Aa=:p1 where bb=:p2"
параметры p1.DataType=ftCurrency, p1.ParamType=ptInput, p2.DataType=ftInteger, p2.ParamType=ptInput

Далее
 Query1.ParamByName("p1").Clear; // это как говорил Анатолий вобщем-то лишнее, если раньше нигде не присваивалось иное
 Query1.ParamByName("p2").AsInteger := 1;
 Query1.ExecSQL;

Проверил, все работает на УРА!



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

Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.04 c
1-1117876056
Vf
2005-06-04 13:07
2005.06.29
код


14-1117988072
SergP
2005-06-05 20:14
2005.06.29
Компонент для ввода/редактирования данных, Посоветуйте.


14-1117814291
Новичоккк
2005-06-03 19:58
2005.06.29
Delphi 7 vs Delphi 8 vs Delphi 2005


1-1118331014
Alex77777
2005-06-09 19:30
2005.06.29
Как обработать текстовый файл !?


14-1117211002
Гаврила
2005-05-27 20:23
2005.06.29
Просто реплика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский