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

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

Не обновляется поле в базе [D6]


Маша ©   (2003-05-21 10:59:00) 

Уважаемые Мастера, не соображу почему так.
Есть база данных ORACLE. В одной таблице есть поле типа NUMBER.
Надо разобрать текстовый файл и конвертнуть определенную позицию в файле в данное поле таблицы. Содержимое может быть и пустым и числом.
Написала код:
C4:string;
s4:integer;
....
c4:=Trim(Copy(stlist[i],22,2));
s4:=strToInt(c4);
Даллее SQL-запрос с Update. Содержимое s4 заносится в поле Number.
При выполнении программы выходит ошибка - "" is not integer type.
Что не так написала?
Помогите , пожалуйста.


Val   (2003-05-21 15:03:00) [1]

>Маша (21.05.03 14:50)
да погодите вы с параметрами, проверьте сначала то, что советует Sergey13 © (21.05.03 11:16)
P.S. Либо форум в последнее время оживляется женским коллективом, либо кто-то стал использовать хитрые маскировки :)


Маша   (2003-05-21 14:50:00) [2]

s4 в Parameters не прописывала, но попробовала поставить Data Type=ftInteger. Результат тот же- "" is not is valid integer value.:-(


KoluChi   (2003-05-21 13:49:00) [3]

у ADOQuery1 параметр s4 какого типа?
тип поля port числовой?


Маша   (2003-05-21 12:12:00) [4]

А код Запроса такой:

ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add("update Route");
ADOQuery1.SQL.add("set port=:s4");
ADOQuery1.SQL.add("where comm_id=:c1 and name=:c3");
ADOQuery1.Parameters.ParamByName("s4").Value:=s4;
и т.д......


Vigo   (2003-05-21 11:53:00) [5]

Функция StrToInt не может получать пустого значения в качестве аргумента. В вашем случае при передачи в Trim пустой строки, или строки, состоящей из пробелов в StrToInt передается nil.
Следует проверять c4 на пустоту. В случае, когда c4 = "", самостоятельно присваивать s4 0:

c4 := Trim(ля-ля-ля)

if c4="" then s4 := 0 else c4 := StrToInt(c4);

А вообще-то для таких целей в комплекте Oracle поставляется специальный инструмент SQL*Loader, который как раз и занимается загрузкой данных из текстовых файлов различного форматов и DBASE таблиц.


KoluChi   (2003-05-21 11:32:00) [6]

>Даллее SQL-запрос с Update. Содержимое s4 заносится в поле >Number.

Код, пожалуйста


Sergey13   (2003-05-21 11:16:00) [7]

Ошибка Оракла или приложения? Похоже на второе.
Проверь отладчиком что получается в с4, может там и правда is not integer type


Наверх

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