Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-1081680805
Boyza
2004-04-11 14:53
2004.05.02
Виснет при проверке Чекбокса


1-1081997359
an-na2002
2004-04-15 06:49
2004.05.02
лишняя пустая строка


1-1081755029
Morgan
2004-04-12 11:30
2004.05.02
Распознавание ч/б рисунков


6-1078420166
Delpher_Gray
2004-03-04 20:09
2004.05.02
Склеивание пакетов, избежание при этом ошибок


1-1082036673
Ruslan
2004-04-15 17:44
2004.05.02
Как в ListView закрасить строки разным цветом?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский