![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выташить инфу из 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]Что значит вытащить и что значит обработать? Приведи текст