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

Вниз

Не число...   Найти похожие ветки 

 
vick   (2003-04-15 12:05) [0]

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

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


 
NAlexey   (2003-04-15 12:06) [1]

Среда разработки?


 
Vick   (2003-04-15 12:09) [2]

> NAlexey

T-SQL & Delphi

Но дело в том, что это поле сравнивается с другим, и его еще на этапе запроса нужно преобразовать в целое, тут и возникает ошибка


 
Соловьев   (2003-04-15 12:09) [3]

:) Наверное Delphi...

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



procedure Tforma.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in [#8,"0".."9"]) then
begin
Key := #0;
Beep;
end;
end;



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

> Соловьев

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


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

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


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

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


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

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

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


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


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



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


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

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


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

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


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


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

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


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

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


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


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

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

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


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

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

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


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


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

а у Vick


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

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


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

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

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


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

kravchuk © (15.04.03 12:37)

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


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


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

> sniknik ©

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


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


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

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



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

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

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


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

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


 
sniknik   (2003-04-15 13:04) [22]

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


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

>sniknik ©

Спасибо!!!!



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

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

Наверх





Память: 0.49 MB
Время: 0.007 c
6-12846
w666w
2003-03-11 13:39
2003.05.05
Ip адрес в In_Addr


8-12833
arcoant
2003-01-29 15:25
2003.05.05
Equaliser & BitRate


1-12728
Rise
2003-04-23 11:36
2003.05.05
Событие OnClick


3-12647
SiJack
2003-04-16 09:44
2003.05.05
Копирование данных в Access


11-12677
Alexei Dragoner
2002-07-19 19:53
2003.05.05
Как быть с Timer ом?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский