Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разочеровался в InterBase'e / 8 сообщений из 8, страница 1 из 1
06.02.2004, 10:25
    #32400348
Rini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Это наверно закон подлости.
Испытывал новый back_up службу на серваке соответственно остановил
старый добрый способ back_up через диспетчер задач.

У меня чуть небыло инфаркта когда комне пришел пользователь и сказал
что неможет найти не одной записи физических лиц по фамилии.

Вобщем глюк такой. следующая sql команда в InterBase6.0.
Приводит к тому что все записи в таблице стали одинаковыми.

UPDATE FIZLICA
SET
NAME = '-',
FAMIL = 'АКУДЕ'НЕФТЧЕ'', <- вот оно это место пользователь обновил
OTCHE = '-', запись внеся такую фамилию с апострафами.
ADRES = '-',
TEL = '-',
DOC = '-',
INN = '-',
INDEKC = '-',
GRKO = '-',
RAION = '-',
PREF_NASEL = 'Г.',
NASEL = '-',
STREET = '-',
CORPUS = '-',
HOUSE = '-',
FLAT = '--',
BIRTHDAY = '01.01.1950'
WHERE ID_FIZLICA = 100009697

Итог работы идентичен

UPDATE FIZLICA
SET
NAME = '-',
FAMIL = 'АКУДЕ';
...
Рейтинг: 0 / 0
06.02.2004, 10:45
    #32400391
Alexey Kovyazin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Э, матчасть надо учить.

UPDATE FIZLICA
SET
NAME = '-',
FAMIL = 'АКУДЕ'НЕФТЧЕ'',

Надо квотить символ апострофа в середине строки двойным апострофом.

Чем ты выполнял этот запрос? Небось IBX? Да, у него дерьмовый парсер SQL и он жестоко отсекает все, по его мнению, лишнее. И, замечу, ни к Интербейз ни к Файерберд IBX отношения не имеет.

Ругать можешь только себя - это засада давным давно известная
- не проверил ты все известные варианты.

Далее - ИБ6. Уж сколько раз твердили миру, что кушать несвежее опасно для здоровья. Нужно бесплатное - бери Firebird и не парься.

А разочаровываться в чем-либо из-за своей же ошибке или недосмотра - странно, по меньшей мере.

With best regards,
Alexey Kovyazin
http://]www.ibsurgeon.com
...
Рейтинг: 0 / 0
06.02.2004, 10:56
    #32400413
Rini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Мда.
Основную массу востановил. по старому бекапу.

Все верно использую IBX
но проект больно большой все переписывать шас пока нет времени

может можно сылочку где можно узать про все глюки IBX
...
Рейтинг: 0 / 0
06.02.2004, 11:04
    #32400432
Kull Damned
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Это не глюки, блин! Используйте параметрические запросы - и будет вам счастье...
...
Рейтинг: 0 / 0
06.02.2004, 11:05
    #32400435
EvgErmak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Сочувствую, может это утешит...

function StrToSQL(cStr:String):String;
var
nI : Integer;
nLen : Integer;
begin
nI := Pos('''',cStr);
// Добавление к строке 2ых кавычек

if nI <> 0 then begin
nI := 1;
Result := '''';
nLen := Length(cStr);
while nI <= nLen do
// Условие выхода из цикла
// Конец строки или следующий символ не '
if cStr[nI] = '''' then begin
if nI + 1 > nLen then Break;
if cStr[nI+1] <> '''' then Break;
Result := Result + '''';
nI := nI + 2;
end
else begin
Result := Result + cStr[nI];
nI := nI + 1;
end;
Result := Result + '''';
end
else
Result := ''''+cStr+'''';

end;
...
Рейтинг: 0 / 0
06.02.2004, 11:44
    #32400514
EvgErmak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Sorry, не то скопировал

function StrToSQL(cStr:String):String;
var
nI : Integer;
nLen : Integer;
begin
nI := Pos('''',cStr);
// Добавление к строке 2ых кавычек
if nI <> 0 then begin
nI := 1;
Result := '''';
nLen := Length(cStr);
while nI <= nLen do begin
if cStr[nI] = '''' then
Result := Result + ''''''
else
Result := Result + cStr[nI];
nI := nI + 1;
end;
Result := Result + '''';
end
else
Result := ''''+cStr+'''';

end;
...
Рейтинг: 0 / 0
09.02.2004, 14:53
    #32402869
Karioth
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
function StrToSQL(SQL: String): String;
begin
Result:=StringReplace('''', '''''', SQL, [rfReplaceAll]);
end;


...
SQL:='select * from table1 where name='''+StrToSQL(SomeoneName)+'''';
...
...
Рейтинг: 0 / 0
09.02.2004, 16:05
    #32403041
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разочеровался в InterBase'e
Чем QuotedStr не катит?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разочеровался в InterBase'e / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]