![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
fkCalculated ??? [D6]
barkot © (2004-09-27 14:06:00)Есть некий DataModule. В нем есть Query у которого SQL = 'select * from table'. В таблице table есть мемо поле fMemo.
Нужно в данном query создать вычисляемое поле(или какое-либо другое) чтобы получить из fMemo 50 первых символов. Как?
В каких свойствах и методах TField что писать?
З.Ы. никогда не пользовался вычисляемыми полями, всегда все решал посредством sql-запросов, а тут пришлось залесть в чужие дебри.
Johnmen (2004-09-29 12:11:00) [1]>sniknik © (29.09.04 10:59) [13]
>но это догадки, игра в телепатов ;о)).
Ну да. Именно игра:)
Ещё сильная фишка с моей стороны: >В таблице table есть мемо поле
msguns (2004-09-29 10:59:00) [2]Насколько я понял, надо мемо как-то показать в визуальном контроле (к примеру, в гриде). Для этого никаких Calc-полей в датасет добавлять не надо и тем более тискать, как солдат толстую титьку, беззащитный SQL-запрос, попутно выясняя к чему (серверу или лок.БД) он сделан. "Собачка" зарыта в обработчике OnGetText соотв.полевого объекта (TField), который "прикручен" к TDataSet`у - папаньке большинства компонент доступа.
А вообще попутно (чтоб нне засорять форум хилыми отростками):
в каких случаях вообще-то надо пользоваться мемо ? Я, например, бегу от него как черт от ладана, заменяя везде где можно простым CHAR/VARCHAR. Хотя, конечно, если там надо романы Л.Н.Толстого запоминать.. А серьезно, практически любой список (мемо удобно именно для спископодобных данных в том числе) можно запихнуть в достаточно длинный стринг. А мемо - это куча доп. и не очень приятных приключений.
Во всяком случае у меня сложилось впечатление, что многие часто-густо юзают это самое мемо безо всякой на то нужды. Или я неправ ?
А как думают мастера ?
sniknik (2004-09-29 10:59:00) [3]> Johnmen © (29.09.04 09:18) [5]
несогласен.
скорее бы об этом говорило бы Query, table (без приставок ADO) и само то что неуказан используемая база (начинающие обычно полагают что то с чем они столкнулись единственно возможное, а сталкиваются естественно с BDE, парадокс, дбейс)
но это догадки, игра в телепатов ;о)).
а с полем ftMemo ...
вот например использую
procedure TMainForm.ShowMemo;
var TitName, RecNo, RecSize: string;
i, Size: integer;
Buf: array of byte;
ChBuf: String;
Stream1: TStream;
begin
if not DBGrid.DataSource.DataSet.Active then Exit;
case DBGrid.SelectedField.DataType of
ftMemo, ftFmtMemo: begin
if not Assigned(MemEdit) then begin
Application.CreateForm(TMemEdit, MemEdit);
MemEdit.Left:= MemEditPos.Left;
MemEdit.Top:= MemEditPos.Top;
MemEdit.Width:= MemEditPos.Width;
MemEdit.Height:= MemEditPos.Height;
end;
MemEdit.DBMemo1.Font.Assign(DBGrid.Font);
....
работает это в ADO, процедура(начало) отображения различных типов полей.
прога для тестов практически всех провайдеров ADO (те которые к базам относятся), на всех это работает, тип распознается, независимо sql сервер это или движок локальной базы.
(если я правильно понял твою мысль)
serg128 (2004-09-29 10:58:00) [4]OnGetText, извиняюсь
только не говори, что его тоже нет
Johnmen (2004-09-29 10:54:00) [5]>serg128 (29.09.04 10:45) [9]
Здесь дельферы живут, однако...:)
>OnDataRead там у поля (TField) обработчик есть.
Тебе показалось...
serg128 (2004-09-29 10:45:00) [6]> Johnmen
Substr, Которая подстроку возвращает (сорри за неточность, я пишу C++)
OnDataRead там у поля (TField) обработчик есть.
Johnmen (2004-09-29 10:34:00) [7]>Substr
Чё за ф-ия ?
>serg128
Вдумчиво читаем пост [3].
Johnmen (2004-09-29 10:32:00) [8]>OnDataRead
Это откуда ?
serg128 (2004-09-29 10:16:00) [9]Делаешь так:
1) Заводишь в своём Query поле типа fkCalculated
2) В его обработчике OnDataRead пишешь: Text := Substr(Query.FieldByName('fld').AsString, 1, 50);
Всё.
Johnmen (2004-09-29 09:18:00) [10]>sniknik © (28.09.04 20:16) [4]
Упоминание fMemo весьма недвусмысленно говорит о Парадоксе/Дибейсе. Так что сервера нету...:)
sniknik (2004-09-28 20:16:00) [11]Johnmen © (28.09.04 18:24) [3]
а почему бы не предположить что в какомто из sql серверов запрос рабочий?
раз в вопросе неуказана база/sql сервер, имеем же право. ;о)) вопрос в общем - ответ в частном случае, неуказано там зачем указывать здесь? пусть вычисляет.
p.s. как минимум один скуль сервер поддерживает данную форму запроса -> [2] (счас только проверил)
Johnmen (2004-09-28 18:24:00) [12]Иногда очень полезно перед ответом испробовать его на себе. Или, в кр. случае, на кошечках...:)
IZON (2004-09-28 18:15:00) [13]select cast(memo as varchar(50)) from table
Денис (2004-09-28 11:08:00) [14]А вроде можно в SQL запросе задать длину получаемых данных с Memo