Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.029 c
1-1097156631
vikoz
2004-10-07 17:43
2004.10.24
Манифест не работает


4-1095768486
Aleksandr.
2004-09-21 16:08
2004.10.24
Будет ли форма получать и обрабатывать сообщения при ожидании?


1-1097353713
saNat
2004-10-10 00:28
2004.10.24
Количество символов в Memo


14-1096919355
Gero
2004-10-04 23:49
2004.10.24
Программа для локалки


1-1097521677
DronVelikii
2004-10-11 23:07
2004.10.24
Передача динамического массива в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский