Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выташить инфу из TMemoField [D6, Paradox]


ArhAngeL2 ©   (2002-08-13 16:33:00) 

у меня проблема есть поле TMemoField. Мне нужно его обработать. Пытаюсь выташить строку через (поле).AsString или через (поле).Varible на этой строке выдаеться ошибка:
Cannot access field "text" in a filter
Таблица Paradox
Посоветуйте как мне выташить оттуда инфу...


ArhAngel2   (2002-08-14 21:07:00) [1]

Не получается все тажа самая ошибка...
Наверное Table блокирует memo во время фильтрации...
Вне этого события все нормально но именно в этой процедуре глючит...
Пришлось немного схитрить. Чтобы отфильтровать таблицу я добавил поле TBooleanField и если запись удовлетворяет условию то True иначе False
и поставил стандартную фильтрацию (таблица).Filter="(поле)=Trye"
и перебераю по каждой записи.
Потерял в производительности и в размере БД,но зато работает
ЕСЛИ КТО-ТО ЗНАЕТ ЕЩЕ СПОСОБ, ПОЖАЛУЙСТА, НАПИШИТЕ!!!


Ig Li   (2002-08-14 12:07:00) [2]

Отобразить МЕМО поле вобщем то не проблема. Как отфильтровать таблицу.
Ситуация такая:
Есть поле Мемо,например "Характеристика", как отобрать все данные в "Характеристике" которых встречается слово, например "Спокойный".


Igel   (2002-08-14 11:20:00) [3]

У меня была схожая ситуация...
Нужно было в DBGrid-e отразить содержимое поля МЕМО. Решил так:

1. Событие GetText поля TTable(думаю и TQuery пойдет)

procedure TDM_telefone.GetTextFieldMemo(Sender: TField;
var Text: String; DisplayText: Boolean);
begin
//Меняем возвращаемое полем значение
Text:=GrabMemoAsString(TmemoField(sender));
end;


2. Функция описана выше... :)) Преобразует в строку

function GrabMemoAsString(TheField:TmemoField):string;
var stream:TADOBlobStream;
MemSize:integer;
Buffer: PChar;
begin
if TheField.IsNull then Result:="" else
begin
{создаем поток от поля
Я использовал компоненты АДО, поэтому использовал
TADOBlobStream. Базовый пример был с TBlobStream
}
stream:=TADOBlobStream.Create (TheField, bmread);
with stream do
try
//Память, занимаемая потоком (размер потока)
MemSize := Size;
//На свободную
inc(MemSize);
// выделяет область памяти и возвращаем указатель
Buffer := AllocMem(MemSize);
try
//Читаем данные из потока в выделенную область памяти
Stream.Read(Buffer^, MemSize);
//Возвращаем в строковом виде
result:=string(Buffer);
finally
FreeMem(Buffer, MemSize);
end;
finally
free;
//Меняем спец символы на пробелы.
while Pos(#10, result)> 0 do result[Pos(#10, result)]:=" ";
while Pos(#13, result)> 0 do result[Pos(#13, result)]:=" ";
end;
end;
end;


З.Ы. Из базового примера кроме идеи ничего нет... Сначала не врубался пока не обратил внимания на конструкцию:
procedure TDM_telefone.GetTextFieldMemo(Sender: TField;
varText: String;DisplayText: Boolean);
Тогда понял, как текст возвращается преобразованный ... :))
Учимся потихоньку!! :))


Mike Kouzmine   (2002-08-14 09:26:00) [4]

Так приведи код, что спрашивать?


Виталий Панасенко   (2002-08-14 08:51:00) [5]

Попробуй передать его компонету TMemo и обрабатывай


Ig Li   (2002-08-13 21:48:00) [6]

Кто-нибудь даст дельный совет, а то одни эмоции.


3JIA9I CyKA   (2002-08-13 19:16:00) [7]

Тады ку-ку.


ArhAngel2   (2002-08-13 19:14:00) [8]

Assign не ку


3JIA9I CyKA   (2002-08-13 18:35:00) [9]

Assign ку или не ку?


ArhAngel2   (2002-08-13 18:12:00) [10]

Я ищу строку в поле memo. Хочу отфильтровать таблицу.
Это происходит в OnFilterRecord TTable


3JIA9I CyKA   (2002-08-13 17:38:00) [11]

Assign
Ку?


SaS13   (2002-08-13 16:45:00) [12]

ArhAngeL2 © (13.08.02 16:33)
А НД отфильтрован?


Mike Kouzmine   (2002-08-13 16:39:00) [13]

Что значит вытащить и что значит обработать? Приведи текст


Наверх

Титульная страница Поиск, карта сайта Написать письмо