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

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

Не число...


Страницы:   1 2

vick ©   (2003-04-15 12:05:00) 

Доброго всем дня!! Может кто знает как решить такую проблему?
Есть поле типа varchar(6), в него умный юзер должен записывать туда цифры (а именно - код товара), но глупый юзер кроме цыфр записывает туда еще и другие символы. Как узнать, значение поля является числом или нет?

Заранее спасибо за ответ.


Vick   (2003-04-15 13:18:00) [1]

>sniknik ©

Спасибо!!!!


sniknik   (2003-04-15 13:04:00) [2]

тебе же ответили. для MSSQL
SELECT * FROM ... WHERE ISNUMERIC(...)
для закачиваемой из dbf-а через OPENDATASOURCE тоже подойдет.


Vick   (2003-04-15 12:58:00) [3]

Да ну теперь какая разница, нужно обработать просто данные и все, так как же в запросе определить число это или нет?


sniknik   (2003-04-15 12:55:00) [4]

Vick © (15.04.03 12:48)
но программу то писали похоже не только для вас а универсально, и переделывать не будут (скорее всего). так что придется тебе.

а у себя я чаше сталкиваюсь (~80%) что не число, тк. используют как код товара - баркода с префиксами, артикулы, приставки с названиями групп .... налоговая прога тоже это должна учитывать.
а числом определяют довольно редко (в 1С только), да и то не все конфигурации.


Соловьев   (2003-04-15 12:51:00) [5]


> .к. программа купленная и лицензированная налоговой...

куда же вы смотрели...


Vick   (2003-04-15 12:48:00) [6]

> sniknik ©

У нас код товара - всегда число, но когда оформляется возврат на товар, то это поле вручную заносится, вот управляющие магазинов и куралесят, и ничего не сделаешь, т.к. программа купленная и лицензированная налоговой...


stone   (2003-04-15 12:47:00) [7]

kravchuk © (15.04.03 12:37)

> select * from TempTable
> where IsNumber(CODE_EKKA)<>0


Временная таблица не обязательна, можно использовать OPENDATASOURCE.
и еще не IsNumber, а IsNumeric


kravchuk   (2003-04-15 12:37:00) [8]

При перекачки из дбф проверяй каждую запись, запросом не выйдет, разве что, переганять сначала весь дбф во временную таблицу, потом делать оттуда выборку, и написать на T-SQL хранимую процедуру которая проверяет число ли, и получится типа

select * from TempTable
where IsNumber(CODE_EKKA)<>0


Соловьев   (2003-04-15 12:36:00) [9]


> код товара не всегда число

а у Vick


> глупый юзер кроме цыфр записывает туда еще и другие символы.
>

Надо там подправить.


sniknik   (2003-04-15 12:34:00) [10]

Соловьев © (15.04.03 12:28)
> набить морду этому программисту, который так сделал... :)))

а вот это зря, т.к. все правильно. (код товара не всегда число, даже нетак а чаще всего не число, и если это универсальная прога то ....)


stone   (2003-04-15 12:34:00) [11]


> Надо не бороться с последствиями проблемы, а убырать то
> что эти проблемы создает.

Идеальное решение

По сабжу:
запрос получится несколько извращенный, что типа
where SUBSTRING(CODE_EKKA, 1, 1) in ("0","1" ...) AND SUBSTRING(CODE_EKKA, 2, 1) in ("0","1" ...) и т.д.


Vick   (2003-04-15 12:29:00) [12]

Люди, вы вообще читаете все ответы??? Я ничего никуда не вставляю, мне нужно выборку сделать при условии, что в текстовом поле только цифирьки стоят, а не какие-либо другие символы


Соловьев   (2003-04-15 12:28:00) [13]


> Дело в том, данные заносятся не из моей программы, и из
> программы обмнена данными комп-касса, я получаю только dbf-файлики
>

набить морду этому программисту, который так сделал... :)))
Надо не бороться с последствиями проблемы, а убырать то что эти проблемы создает.


kravchuk   (2003-04-15 12:27:00) [14]

Пробуй проверять на OnBeforePost для твоего DataSet, и если не число то далай Abort


NAlexey   (2003-04-15 12:26:00) [15]

>А что предполагается делать с ошибочными записями?
Да, а что?
Пиши процедуру а скорее всего это будет триггер на вставку который проверяет, если значение не целое, то или ругаться, ну или твои действия с ошибочными записями. Я думаю так...


Соловьев   (2003-04-15 12:25:00) [16]


> Как узнать, значение поля является числом или нет?



try
StrToInt(Str1);
except
// код ошибки конверта, вроде бы EConvertError
end;


Vick   (2003-04-15 12:24:00) [17]

просто не выводить их, сделать типа так

select * from MyTable
where CODE_EKKA - число


stone   (2003-04-15 12:20:00) [18]

А что предполагается делать с ошибочными записями?


Vick   (2003-04-15 12:17:00) [19]

Дело в том, данные заносятся не из моей программы, и из программы обмнена данными комп-касса, я получаю только dbf-файлики и перекачиваю данные в MSSQL, откуда потом эти данные обрабатываю, посему от глупых ошибок юзера обсалютно не застрахована.


Vick   (2003-04-15 12:13:00) [20]

> Соловьев

В Делфи я и сама так умею.


Страницы:   1 2

Наверх

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