powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Разочеровался в InterBase'e
8 сообщений из 8, страница 1 из 1
Разочеровался в InterBase'e
    #32400348
Rini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это наверно закон подлости.
Испытывал новый 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
Разочеровался в InterBase'e
    #32400391
Фотография Alexey Kovyazin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э, матчасть надо учить.

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

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

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

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

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

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

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

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

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

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
Разочеровался в InterBase'e
    #32400514
EvgErmak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Разочеровался в InterBase'e
    #32402869
Karioth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
function StrToSQL(SQL: String): String;
begin
Result:=StringReplace('''', '''''', SQL, [rfReplaceAll]);
end;


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


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