![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
"Мусор" в полях типа text на БД Sybase [D7, Sybase]
Alex Kryuchkov © (2005-08-31 14:15:00)Здравствуйте!
Работаю в Delphi7BDESybase Adaptive Server Anywhere 8.0
При записи данных в поле типа text в нём кроме собственно введенного текста оказывается и всякий "мусор" - лишние символы (абсолютно разные).
Запись ведется из объекта TStringList в БД следующей командой:
S: TStringList;
Q: TQuery;
begin
........
Q.FieldByName('SomeTextField').AsString:=Trim(S.Text);
........
end;
Если, например, записываем значение "Мама мыла раму", то потом в таблице может оказаться нечто типа "Мама мыла раму МММММММююьбъх.,.//,"
Подскажите, в чем может быть проблема и как её обойти.
Заранее спасибо.
Reindeer Moss Eater (2005-09-01 14:08:00) [1]Как обычно, наверное, в момент Post еще не убит экземпляр стрима.
Val (2005-09-01 12:28:00) [2]?
> На Оракле работало и без потока
тип поля разный в самой бд, судя по тому, что вы говорите.
размер потока соответсвует размеру содержимого мемо? как читаете все-таки?
Alex Kryuchkov (2005-09-01 11:46:00) [3]С помощью стрима пишем так:
tmpStream:=TBlobStream.Create(TBlobField(QQ.FieldByName('SQLText')), bmReadWrite);
//для очистки потока (на всякий случай)
tmpStream.Seek(0, soFromBeginning);
tmpStream.Truncate;
//собственно запись в поле
DBMemo.Lines.SaveToStream(tmpStream);
На Оракле работало и без потока
Val (2005-08-31 19:01:00) [4]как пишем и читаем с помощью стрима?
Alex Kryuchkov (2005-08-31 18:37:00) [5]Отвечаю на оба вопроса.
1. При трассировке в S.Text имеем тот текст, который был введен пользователем. (S - это поле Lines объекта TMemo). Т.е. "мусора" там нет - только то, что ввели плюс разделители строк.
2. Поле text - это поле, которое может сожержать символьные данные неограниченной длины. Запись через БлобСтрим не помагает - мусор всё равно появляется. Кроме того, это же приложение абсолютно корректно работает на Оракле.
Мне кажется, что проблема связана либо с ОДБС-драйвером либо собственно с Сибейзом.
Johnmen (2005-08-31 14:52:00) [6]Что собой представляет поле типа text в сибейсе ?
Если это то, что я думаю, то проблема в методе записи в это поле, используя БДЕ. Надо писать не так, а через поток в блобфиелд.
Val (2005-08-31 14:30:00) [7]что, при трассировке, в S.Text, при этом?