powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
10 сообщений из 10, страница 1 из 1
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32222283
Cnupum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никакой реакции на следующий текст:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
var
 t: TfrMemoView;
begin
 FrReport1.LoadFromFile('FR_end.frf');
 t := TfrMemoView(frReport1.FindObject('Memo1'));
 if t.Memo.Text='0' then
 t.Memo.Text := 'Здесь нуль';
// или так:
 if t.Prop['Memo']='0' then
 t.Prop['Memo'] := 'Здесь нуль';

FrReport1.ShowReport;
end;


зато вот это заменяет все записи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var
 t: TfrMemoView;
begin
 t := TfrMemoView(frReport1.FindObject('Memo1'));

 if t <> nil then
   t.Memo.Text := 'FastReport';
// или так:
 if t <> nil then
   t.Prop['Memo'] := 'FastReport';
end;


что не так ?
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32222517
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:

Код: plaintext
1.
if t.Memo[ 0 ] = '0' then
 t.Memo.Text := 'Здесь нуль';


И еще... Хотя вряд ли это влияет, я использую TfrView.
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32222556
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и еще в догонку:
Может тебе и не надо для таких простых вещей как "Если = 0, то Здесь нуль" зашивать все это в Дельфу? В Фаст репорте есть свой интерпретатор, достаточно неплохой, он такие вещи делает играючи, на лету...

А если "Здесь нуль" как пример простой, то тогда может и не подойдет мое решение - но в любом случае я бы посмотрел, может можно решить вопрос не программируя жестко.
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32223198
Cnupum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значит так ...есть Master Data, на нем Memo1. текст в мемо береться из БД ..соответсвенно, тип: дата.. но по умолчанию заполняется как STRING (ну и пофиг пускай хоть так) если же дата пустая то в memo заполняется 0 . вот мне и надо этот ноль заменить на нужное мне слово. (можно конечно поставить "HIDE ZEROS" но мне это не надо)
в FR пишу простой скрипт:
Код: plaintext
1.
2.
begin
text:='Тескт какой то'
end;


и вообще никакой реакции...
быть может он и заполняет мемо этим текстом, но потом еще раз заполняет но из БД ... скорее всего так и происходит.. значит надо писать на событие, которое идет после того как заполнилось мемо из БД а че это за событие ?
OnBeginDoc туда я все это и пишу.... так написал..
Код: plaintext
1.
2.
if t <> nil then
   t.Memo.Text := 'FastReport';

работает (уух) .. а вот то что мне действительно нужно-нет...

Код: plaintext
1.
2.
 if t.Memo.Text='0' then
 t.Memo.Text := 'Здесь нуль';

так что вариант со скриптами отпадает, они (скорее всего) выполняются до загрузки из БД...
интересно почему не выполняется условие... ведь тип: строка. ноль в кавычках одинарных...
Код: plaintext
1.
2.
if t.Memo[ 0 ] = '0' then
 t.Memo.Text := 'Здесь нуль';

тоже пробовал... нифига
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32223309
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то все просто.

Попробуй так, я недописал в первый раз:
Код: plaintext
if t.Memo[ 0 ] = '0' then t.Memo[ 0 ] := 'Здесь нуль';

Правда непонятно в какой обработчик событий это пихать, чтобы работало правильно.

И второе:
Надо не скрипт писать в Фастрепорте, а использовать ФУНКЦИИ встроенные, которые выполняются в процессе развертывания отчета непосредственно в каждом объекте. Конкретно тебе нужна функция IF. Даю пример, что должно быть в Мемо твоего компонента в режиме дизайнера в ФастРепорте:

[IF([Table1."Adress"] = '', 'Человек БОМЖ', [Table1."Adress"])]

Т.е. Если Поле Adress таблицы Table1 равно пустой строке (или нулю в твоем случае), то присвоить значение Memo равное "Человек БОМЖ", а если нет, то отобразить адрес.
Т.е. теперь при развертывании списка людей, те у кого нет адреса будут подписаны как бродяги. Советую посмотреть HELP на русском - там много интересных функций, которые облегчат работу.
Можно зашивать в модуль Дельфи такой код, но это не совсем гибко и муторно и тем более - я вот щас подумал, это невозможно. В обработчик OnBeginBand или там еще какой все это помещать неправильно и при усложнении задачи есть вероятность получать неактуальные данные.

Удачи.
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32223624
Cnupum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я кстати на обед ща ехал и мысль пришла, что надо обращаться не к FR данным а к БД-шным.......
Код: plaintext
[IF(FORMATDATETIME('dd,mm,yyyy', [Query_end. "query_per.БЭ СРД" ])='', 'Не сдает', [Query_end. "query_per.БЭ СРД" ])]


вот такую строчку я составил, что не канает... т.е. до синтаксиса не докапывается а сам ни че не делает...
я в кавычки уже и '0' ставил и '29.07.2003' такая дата там есть и все равно нифига......null и nil пытался......

кстати.... тупой вопрос... в Text Editor, (когда два раза по мемо щелкаешь) . Дам два поля одно, где автоматически подставилось имя поля из БД [Query_end."query_per.БЭ СРД"] и другое где begin end. Вот этот весь [IF(..)] где писать ... я правда пробовал везде, но не знаю где правильно ;-\
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32223647
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IF писать там где текст, т.е. "где автоматически подставилось имя поля из БД [Query_end."query_per.БЭ СРД"]".
Только я что-то не понял - если безо всяких условий, даты выводятся нормально? FORMATDATETIME ('dd,mm,yyyy') - вот тут я не понял почему запятые в качестве сепаратора? По идее общепринятые либо точка ".", либо как у америкосов - слэш "/". Т.е. тут скорее всего в сепараторе дело. Надо посмотреть что функция возвращает.

Дальше. Если сравнивать даты, то тогда не надо форматировать ее в текст, хотя иногда может это и правильно. Если сравнивать не переводя в текст, то надо следить за временем (т.е. за временной составляющей даты) - его часто не видно, но оно в условии может присутствовать.

Вообщем у меня все работает по такой схеме на ура. :)

Чего и Вам желаю.
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32223664
Cnupum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если без условий то FR сам переводит в строку...
...... ура дошло .......... ура ......
0 если перевести в дату это будет 30.12.1899 .... вот тогда вот это надо :
Код: plaintext
[IF(FORMATDATETIME('dd/mm/yyyy', [Query_end. "query_per.БЭ СРД" ])='30.12.1899', 'Не сдает', [Query_end. "query_per.БЭ СРД" ])]
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32223671
Cnupum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо Gluck99 .....реально шаришь я тебе скажу
...
Рейтинг: 0 / 0
НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
    #32224159
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не за что. Хотя вообще-то ФастРепорт хоть и хорошая штука, но кривоватая.
:(
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / НЕМОГУ ДОСТАТЬ ЗАПИСЬ В FASTREPORT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]