Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.11.11;
Скачать: CL | DM;

Вниз

conversion from string   Найти похожие ветки 

 
Blunder ©   (2002-10-18 21:22) [0]

IB 5
Проблема в следующем. было поле для хранения дат типа VARCHAR(10)
с помощью
update RDB$FIELDS set
RDB$FIELD_TYPE = 35,
RDB$FIELD_LENGTH = 8,
RDB$CHARACTER_LENGTH = NULL,
RDB$CHARACTER_SET_ID = NULL
where RDB$FIELD_NAME = "RDB$106"
превратил это поле в DATE,всё прошло успешно, но как выяснилось в этом поле хранились некорректные данные для некоторых записей типа "31.02.2002" или "20.14.2000"
в DATE все преобразовалось, но DATE с такими косяками естественно не дружит и теперь при любом обращении к записям с таким косяком естественно вылазит invalid conversion from string.
Что делать таким же способом в VARCHAR(10) переделать тоже не дает видимо по той же причине.


 
Anatoly Podgoretsky ©   (2002-10-18 21:43) [1]

Определи эти записи и запиши в них нормальные даты


 
Blunder ©   (2002-10-18 21:56) [2]

не могу, записи определил, при любой попытке обращения к ним говорит conversion from string.


 
Anatoly Podgoretsky ©   (2002-10-18 22:00) [3]

А ты пробовал для этой записи сделать UPDATE


 
Blunder ©   (2002-10-18 22:07) [4]

обижаешь :)) конечно пробовал пишет всё ту же фразу, если бы не это я бы в форум не писал бы, может можно как то его обратно к варчару привести исправить и вернуть ???


 
Anatoly Podgoretsky ©   (2002-10-18 22:09) [5]

Тогда попытка удаления или скажем ремонта базы, вроде бы есть такая утилита.


 
Blunder ©   (2002-10-19 00:01) [6]

ни фига с этим полем не делается кроме drop :(((


 
Johnmen ©   (2002-10-19 01:54) [7]

Это называется "Доигрался хрен на скрипке" !
Вот ответь, какого ... тебя понесло в системные таблицы ?
Что, по-хорошему не мог решить проблему ?


 
Anatoly Podgoretsky ©   (2002-10-19 11:54) [8]

Делаем резюме
Просмотреть нельзя
Изменить нельзя
удалить нельзя
ремонту не поддается

Делаем вывод
таблицу или поле в могилу

Причина
Johnmen © (19.10.02 01:54)


 
kaif ©   (2002-10-19 20:28) [9]

Напиши специальное приложение, которое одну за другой запрашивает записи из этой таблицы (по одной). Для тех записей, что прочитались - копирует дату в нормальное поле даты (создай его). Для тех, что дали сбой при чтении в секции try-except-end обходи эту ошибку, чтобы цикл не вылетал. Если у тебя даже миллион записей, то за час машина справится с такой задачей.
Затем удали старое поле с помощью DROP.

Приложение пишется за 5 минут. Овчинка выделки стоит.


 
Blunder ©   (2002-10-21 19:46) [10]

я уже почти так и сделал, только я UDF написал которая получает дату, проверяет её на правильность и если правильная то возвращает, а если не то присваивает значение 01.01.1000 и
потом сделал alter table FOLDERS add TMP date computed by (datecorr(FOLDER_date));

DATECORR это UDF.
Вобщем всё получилось, большое спасибо за подсказки.


 
kaif ©   (2002-10-22 12:04) [11]

Ты нашел более красивое решение.



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

Текущий архив: 2002.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
1-34112
NeyroSpace
2002-10-31 17:15
2002.11.11
Как убить событие OnClick и OnDblClick?


8-34133
ALFA
2002-07-19 19:55
2002.11.11
Как программно нарисовать стрелку


3-33863
Kislyak
2002-10-21 09:41
2002.11.11
кнопка не работает


4-34315
Anonimus
2002-10-02 12:10
2002.11.11
Как обновить панель задач..???


7-34267
BiJi
2002-06-28 14:03
2002.11.11
Как послать <CR> на модем ( или сотовый)