Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
ВнизfkCalculated ??? Найти похожие ветки
← →
barkot (2004-09-27 14:06) [0]Есть некий DataModule. В нем есть Query у которого SQL = "select * from table". В таблице table есть мемо поле fMemo.
Нужно в данном query создать вычисляемое поле(или какое-либо другое) чтобы получить из fMemo 50 первых символов. Как?
В каких свойствах и методах TField что писать?
З.Ы. никогда не пользовался вычисляемыми полями, всегда все решал посредством sql-запросов, а тут пришлось залесть в чужие дебри.
← →
Денис (2004-09-28 11:08) [1]А вроде можно в SQL запросе задать длину получаемых данных с Memo
← →
IZON (2004-09-28 18:15) [2]select cast(memo as varchar(50)) from table
← →
Johnmen © (2004-09-28 18:24) [3]Иногда очень полезно перед ответом испробовать его на себе. Или, в кр. случае, на кошечках...:)
← →
sniknik © (2004-09-28 20:16) [4]Johnmen © (28.09.04 18:24) [3]
а почему бы не предположить что в какомто из sql серверов запрос рабочий?
раз в вопросе неуказана база/sql сервер, имеем же право. ;о)) вопрос в общем - ответ в частном случае, неуказано там зачем указывать здесь? пусть вычисляет.
p.s. как минимум один скуль сервер поддерживает данную форму запроса -> [2] (счас только проверил)
← →
Johnmen © (2004-09-29 09:18) [5]>sniknik © (28.09.04 20:16) [4]
Упоминание fMemo весьма недвусмысленно говорит о Парадоксе/Дибейсе. Так что сервера нету...:)
← →
serg128 (2004-09-29 10:16) [6]Делаешь так:
1) Заводишь в своём Query поле типа fkCalculated
2) В его обработчике OnDataRead пишешь: Text := Substr(Query.FieldByName("fld").AsString, 1, 50);
Всё.
← →
Johnmen © (2004-09-29 10:32) [7]>OnDataRead
Это откуда ?
← →
Johnmen © (2004-09-29 10:34) [8]>Substr
Чё за ф-ия ?
>serg128
Вдумчиво читаем пост [3].
← →
serg128 (2004-09-29 10:45) [9]> Johnmen
Substr, Которая подстроку возвращает (сорри за неточность, я пишу C++)
OnDataRead там у поля (TField) обработчик есть.
← →
Johnmen © (2004-09-29 10:54) [10]>serg128 (29.09.04 10:45) [9]
Здесь дельферы живут, однако...:)
>OnDataRead там у поля (TField) обработчик есть.
Тебе показалось...
← →
serg128 (2004-09-29 10:58) [11]OnGetText, извиняюсь
только не говори, что его тоже нет
← →
msguns (2004-09-29 10:59) [12]Насколько я понял, надо мемо как-то показать в визуальном контроле (к примеру, в гриде). Для этого никаких Calc-полей в датасет добавлять не надо и тем более тискать, как солдат толстую титьку, беззащитный SQL-запрос, попутно выясняя к чему (серверу или лок.БД) он сделан. "Собачка" зарыта в обработчике OnGetText соотв.полевого объекта (TField), который "прикручен" к TDataSet`у - папаньке большинства компонент доступа.
А вообще попутно (чтоб нне засорять форум хилыми отростками):
в каких случаях вообще-то надо пользоваться мемо ? Я, например, бегу от него как черт от ладана, заменяя везде где можно простым CHAR/VARCHAR. Хотя, конечно, если там надо романы Л.Н.Толстого запоминать.. А серьезно, практически любой список (мемо удобно именно для спископодобных данных в том числе) можно запихнуть в достаточно длинный стринг. А мемо - это куча доп. и не очень приятных приключений.
Во всяком случае у меня сложилось впечатление, что многие часто-густо юзают это самое мемо безо всякой на то нужды. Или я неправ ?
А как думают мастера ?
← →
sniknik © (2004-09-29 10:59) [13]> 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 сервер это или движок локальной базы.
(если я правильно понял твою мысль)
← →
Johnmen © (2004-09-29 12:11) [14]>sniknik © (29.09.04 10:59) [13]
>но это догадки, игра в телепатов ;о)).
Ну да. Именно игра :)
Ещё сильная фишка с моей стороны: >В таблице table есть мемо поле
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.046 c