Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизГлюк в IBSQL Найти похожие ветки
← →
Zn (2004-04-02 15:01) [0]Ув. мастера! Подскажите! С помощью IBSQL вставляю в таблицу строку (INSERT INTO TABLE1 VALUES(...)).
На некоторых символьных полях выдаёт сообщение, что в строке обнаружен символ EOF.
Запускаю тот же INSERT в IBExpert - работает.
В чём прикол?
← →
Johnmen © (2004-04-02 15:06) [1]... - всё дело в этом
← →
Zn (2004-04-02 15:12) [2]
> Johnmen © (02.04.04 15:06) [1]
> ... - всё дело в этом
Ясно, что в этом. Почему в IBExpert работает без вопросов?
← →
sniknik © (2004-04-02 15:16) [3]потому что там у тебя этого "..." не было. было чтото другое
← →
Zn (2004-04-02 15:24) [4]Что может быть? В отледчике дохожу до IBSQL.ExecQuery, беру строки из IBSQL.SQL, сформированные динамически, и вставляю в IBExpert или IBConsole, и там этот запрос работает.
← →
Johnmen © (2004-04-02 15:30) [5]>Zn
>Что может быть?
М.б. неправильный синтаксис...
Приводи код.
← →
Zn (2004-04-02 15:46) [6]Код такой:
while not VKDBFNTX1.Eof do
begin
ibRow.Clear;
ibRow.Add("INSERT INTO SPLAT VALUES(");
for i:=0 to VKDBFNTX1.FieldCount-1 do
if VKDBFNTX1.Fields[i].IsNull then ibRow.Add("NULL,")
else
case VKDBFNTX1.DBFFieldDefs[i].field_type of
"N","F": ibRow.Add(VKDBFNTX1.Fields[i].AsString+",");
"C","D","M": ibRow.Add(""""+VKDBFNTX1.Fields[i].AsString+""""+",");
"L":
if VKDBFNTX1.Fields[i].AsBoolean then
ibRow.Add(""""+"T"+""""+",")
else
ibRow.Add(""""+"F"+""""+",");
end;
ibRow[ibRow.Count-1]:=LeftStr(ibRow[ibRow.Count-1],Length(ibRow[ibRow.Count-1])-1)+")";
IBSQL1.SQL.Clear;
IBSQL1.SQL:=ibRow;
IBSQL1.Prepare;
IBSQL1.ExecQuery;
VKDBFNTX1.Next;
end;
VKDBFNTX1 - это аналг TTable (доступ к dbf без BDE).
Что интересно, на некоторых таблицах работает, на некоторых - нет.
← →
Соловьев © (2004-04-02 15:49) [7]
> IBSQL1.SQL:=ibRow;
а как это?
← →
Johnmen © (2004-04-02 15:52) [8]>IBSQL1.SQL:=ibRow;
???
← →
Zacho © (2004-04-02 15:54) [9]2 Zn:
Не майся дурью с динамическим формированием запроса, а сделай параметризированный запрос. Наверняка проблема сразу исчезнет
← →
Zn (2004-04-05 18:49) [10]
> Zacho © (02.04.04 15:54) [9]
Извините, что долго не отвечал. Попробовал параметризированный запрос - всё тоже. Но закралось подозрение, что вываливает на украинские буквы - Ї, Є. У кого-то были такие проблеммы?
← →
Соловьев © (2004-04-05 18:51) [11]у меня украинская БД - никаких проблем не было
← →
Соловьев © (2004-04-05 18:58) [12]Не работал с Delphi 7 - у меня 6. Но я ставил update Попробуй -http://www.ibase.ru/v6/ibx708del.zip
← →
sniknik © (2004-04-05 19:05) [13]тебе же сказали почему - [7] [8], скорее всего
(для приличия хотябы
IBQuery1.SQL.Assign(ibRow);
сделал, или
IBQuery1.SQL.Text:= ibRow.Text;)
хотя может и это не поможет, уверен что там нормальный запрос получается? без кавычек в строках или пустышек в числах? делаеш то на основании данных другого запроса (данные то юзерские?).
← →
Zn (2004-04-05 19:16) [14]
> sniknik © (05.04.04 19:05) [13]
Это я убрал. У меня прямо работает с IBSQL.SQL.
> уверен что там нормальный запрос получается?
Нормальный, потому что затыкается только на определённой таблице. Ошибка "Cannot transliterate character between character set" - именно на полях с украинскими буквами. А может на апострофы или кавычки - сейчас попробую.
← →
Zacho © (2004-04-05 21:56) [15]
> Zn (05.04.04 19:16) [14]
Мне сейчас всё равно делать нехрен. Если хочешь - вышли мне gbk своей базы и примеры запросов.
← →
Zn (2004-04-06 11:46) [16]
> Zacho © (05.04.04 21:56) [15]
Спасибо за предложение, но я уже кое до чего докопался.
В общем, всё дело в кодировке. У меня DBF в кодировке 866, БД InterBase: CharSet - WIN1251, Font Characters Set - RUSSIAN_CHARSET. При такой раскладке - выдаёт ошибку, если поле DBF-файла содержит символы кириллицы. Напомню, что если этот запрос выполнять в IBExpert или IBConsole, то всё работает.
Делал в InterBase комбинации Font Characters Set - ANSI_CHARSET, OEM_CHARSET, CharSet - WIN1251 - ошибки не выдаёт, но вместо русских букв заносит решётки.
Подскажите, чего ему не хватает?
← →
Zacho © (2004-04-06 12:08) [17]Нифига не понял.. Какое отношение dbf имеет к IB ???
Font Characters Set - это где ? Нету в IB такого, и быть не может.
> заносит решётки.
Кто ? Куда ?
"Заносит" или всё-таки "отображает" в чём-то ? Разные вещи вообще-то, очень разные.
← →
Zn (2004-04-06 12:20) [18]
> Font Characters Set - это где ? Нету в IB такого, и быть
> не может.
В IBExpert в Database Registration Info (DataBase Propeties).
← →
Zacho © (2004-04-06 12:31) [19]
> Zn (06.04.04 12:20) [18]
И что ? Мало ли что есть в IB Expert, IB Manager, IBConsole ... и т.п. Собственно к IB это почти не относится.
В общем, наконец-то нормальмо и полностью опиши свою проблему - тогда есть большая вероятность на получение полезного ответа.
Кстати, думаю не помешает прочитать http://www.ibase.ru/devinfo/ibrusfaq.htm
← →
Zn (2004-04-06 13:13) [20]
> Zacho © (06.04.04 12:31) [19]
Я выслал на E-mail исходники и БД.
Буду благодарен за помощь!
("Размеры моей благодарности не будут иметь границ в пределах разумного" (С. Альтов)).
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.035 c