Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Страницы:   1 2

Елена ©   (2005-05-13 07:21:00) 

Доброго времени суток. Подскажите, пожалуйста, как можно полностью обнулить ячейку (поле) типа 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 10:56:00) [1]

Елена. Что-то Вы нам вешаете на слуховые аппараты (или смотровые). Только что создал тестовое приложение. Таблица 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;

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


Anatoly Podgoretsky   (2005-05-13 10:49:00) [2]

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


Sergey13   (2005-05-13 10:36:00) [3]

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


Anatoly Podgoretsky   (2005-05-13 10:35:00) [4]

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


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

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


stone   (2005-05-13 10:26:00) [6]


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

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


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

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


Anatoly Podgoretsky   (2005-05-13 10:21:00) [8]

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


evvcom   (2005-05-13 10:15:00) [9]


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

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


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

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


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

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

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


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

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

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

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


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

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

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


evvcom   (2005-05-13 09:26:00) [14]


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

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

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

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


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

Anatoly Podgoretsky ©

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


Anatoly Podgoretsky   (2005-05-13 09:08:00) [16]

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:07:00) [17]

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


evvcom   (2005-05-13 09:05:00) [18]


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

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

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


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

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

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

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


evvcom   (2005-05-13 08:51:00) [20]

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо