Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
1-34048
oomneeq
2002-10-29 18:38
2002.11.11
Как среагировать на (гор) прокрутку TMemo ...


14-34214
duce
2002-10-22 14:41
2002.11.11
А-а-а-а! Некуда бежать...


1-34078
Sania
2002-10-30 16:06
2002.11.11
Не хочу я это видеть!!!


4-34293
SP
2002-10-01 11:23
2002.11.11
RichEdit 2.0/3.0


1-34094
KMZ
2002-10-31 13:56
2002.11.11
Привет всем, подскажите пожалуйста




   Наверх