Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» FastReport

Автор: Man_Without_Face
Дата сообщения: 16.06.2010 09:29
jonikDk
Распишу чуть поподробней: Есть BDEQuery1 он должен быть в бенде MasterData. Еще есть BDEQuery2 и BDEQuery3 они должны быть в DetailData1 и DetailData2. У самих бендов никаких свойств для связи я не нашел. В документации к FR соединения происходят через компонент Table, у которого есть свойства MasterSource и MasterFields. В BDEQuery есть только свойство Master. Вот если у BDEQuery2 и BDEQuery3 выставляю BDEQuery1 и запускаю отчет то вываливается сплошной текст без группировки мастер-детеил.


Добавлено:
Все равно должно быть свойство, для указания по какому полю будет соединение...такого нигде нету.
Автор: jonikDk
Дата сообщения: 16.06.2010 11:20

Цитата:
и в запросе в секции where прописывешь условие соединения where поле_мастер_таблицы = :поле_детэйл_таблицы

твою дивизию ... это я напутал sorry. Наоборот у BDEQuery2 и BDEQuery3 проставляешь свойство Master = BDEQuery1 и в запросе пишешь
where поле_детэйл_таблицы = :поле_мастер_таблицы
Извини перепутал порядок
Автор: Man_Without_Face
Дата сообщения: 16.06.2010 11:58
jonikDk
Можно поподробнее:

Цитата:
и в запросе пишешь

В каком (каких) ВDEQuery1 или ВDEQuery2,3.


Цитата:
:поле_мастер_таблицы

Я так понимаю идет как переменная, тогда в Params какой тип данных выбрать?





Добавлено:
jonikDk
Спасибо большое, разобрался...вроде работает.
Автор: sldaac
Дата сообщения: 21.07.2010 08:53
приветствую всех
Надо реализовать редактирование некоторых данных в просмотре отчета. В доке есть описание, в общем сделал, использовал Inputquery. Но не очень красиво, форма с полем для редактирования получается маленькая и неудобно для редактирования данных. Попробовал задействовать диалоговую ворму из самого отчета, все работает, но только в дизайнере. Если скомпилить проект, то в просмотре, при клике на данные, вылетает ошибка, ну и соответственно нучего не работает.
Чем можно заменить InputQuery или как решить проблему с диалоговой формой самого отчета?
Спсб.
Автор: salexn1
Дата сообщения: 21.07.2010 09:36
sldaac
Выложи код, а лучше простенький пример того, как реализовано
Автор: sldaac
Дата сообщения: 21.07.2010 10:41
salexn1
Вот так все работает, а то что закоментировано, вылетает ошибка. Форма DP_kkl в отчете, visible=false, что-бы не показывалась в момент открытия отчета

procedure TTN_KlientOnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
var valueT : string;
begin
valuet:= TfrxMemoView(Sender).text;

if InputQuery('Редактирование данных', 'Грузополучатель:',valueT) then
begin
TfrxMemoView(Sender).text:=valuet ;
Modified := True;
end;

{

Memo17.lines.Clear;
memo17.lines.Add(TfrxMemoView(Sender).text);

if DP_kkl.ShowModal = mrOk then
begin
TfrxMemoView(Sender).text:=Memo17.Lines.Text ;
Modified := True;
end;
}

end;
Автор: salexn1
Дата сообщения: 21.07.2010 17:15
sldaac
тут похоже все делать придеться ручками, т.е.
создавать в коде и форму и memo.
Типа так:
var
aForm: TForm;
aNotes: TMemo;

procedure fOnPreviewClick(Sender: TfrxView; Button: TMouseButton; Shift: Integer; var Modified: Boolean);
begin
aForm:=TForm.Create(nil);
with aForm do
begin
Position:=poScreenCenter;
BorderStyle:=bsDialog;
Caption:='XXXX';
end;

aNotes:=TMemo.Create(aForm);
with aNotes do
begin
Parent:=aForm;
Top := ...
end;

.... Созаем бутоны ОК,Cancel
aNotes.Lines.Text:=TfrxMemoView(Sender).Text;
try
if aForm.ShowModal = mrOK then
begin
TfrxMemoView(Sender).Text:=aNotes.Lines.Text;
Modified := True;
end;
finally
aForm.Release;
end
end;
Автор: sldaac
Дата сообщения: 21.07.2010 17:28
salexn1
Это
Цитата:
тут похоже все делать придеться ручками, т.е.

конечно можно, но почему стандартная форма вылетает ошибка, а в дизайнере все работает.
Вот и задался вопросом, может какие-то тонкости или......
Если-бы в дизайнере нельзя было или то-же была ошибка, я бы и вопроса не задавал.
Хотел хелп поновее по фасту глянуть, так на офиц. сайте он за 2009г., хотя по версиям компонентов есть отличия.
Автор: salexn1
Дата сообщения: 21.07.2010 17:38
Потому что PreviewPages уже ничего и не знает про данную форму.
З.Ы. Только не aForm.Release; а aForm.Free;
Автор: SIgor33
Дата сообщения: 03.08.2010 11:56
вопрос касается совместного использования fastcube и fastreport
кидаю на форму fcCube, fcSlice, frcComponents В дизайнере fastreport выбираю соответственно frcCrossView вот у него в свойства (cube) хочу выбрать свой куб в fastreport а его нет. Если положить на форму fcGrid и frcGrid то в дизайнере fastreport frcCrossView в свойства (Grid) можно выбрать Grid для анализа , а cube как не было так и нет скажите что надо сделать чтобы я мог подключить свой куб
Автор: colt2
Дата сообщения: 10.08.2010 05:47
Необходимо построить одностраничный отчет, в виде списка машин, ремонтируемых по времени
типа так:



Ну и до 17:00 соответственно.

Сейчас я сделал так:


но получается вот что:


как дополнить строки MasterData1 до 5 шт. как показано на первом рисунке?
Как печатать даже те часы посещений в которые машины не записаны?
Автор: jonikDk
Дата сообщения: 10.08.2010 09:18
colt2
я бы предложил все это сделать через запрос, чтобы запрос всегда возращал по 5 записей на каждое значение времени
Автор: salexn1
Дата сообщения: 10.08.2010 11:41
Если нужно просто скрыть повторяющееся время - то можно воспользоваться параметром - скрывать дублирующие значения. Если же нужно выводить по 5 записей на каждое время, то либо запрос, либо запрос + какой-нить MemoryDataSet или ClientDataSet
Автор: Man_Without_Face
Дата сообщения: 10.08.2010 11:45
Доброго времени суток. Есть текстовое поле, которое по событию onAfterData заполняется каким-либо текстом. Вопрос: как сделать чтобы первая буква была заглавная (может есть какое то свойство у поля). Спасибо.
Автор: salexn1
Дата сообщения: 10.08.2010 12:07
Man_Without_Face
Написать код заполнения:
var
aLen := Length(Source);
Result := Source;
if (aLen > 0) then
Result := AnsiUpperCase(Copy(Source, 1, 1)) + Copy(Source, 2, aLen);
Автор: Man_Without_Face
Дата сообщения: 10.08.2010 12:29
salexn1
Спасибо, только AnsiUpperCase ошибку выдает. А через UpperCase все ок (FastReport 4.8).
Автор: Tantos
Дата сообщения: 11.08.2010 03:54
Man_Without_Face, UpperCase может некорректно работать с русскими символами. Какую ошибку-то выдает?
Автор: X11
Дата сообщения: 11.08.2010 09:08
colt2, а ты не смотрел в сторону диаграмм Ганта?
Автор: colt2
Дата сообщения: 11.08.2010 10:36
jonikDk
это некрасиво получится, хотя может и будет работать, хотелось бы раскидывать полученные данные из проги а не делать лишние запросы...

X11
а каким образом их можно тут использовать?
Автор: X11
Дата сообщения: 11.08.2010 10:56
colt2, может тебе просто стоит немного пересмотреть внешний вид отчёта?



или что-то похожее

Добавлено:
И кстати, может можно выводить время не в левой колонке в вверху группы записей (это в твоём случае с FR)?

Добавлено:
очепятка, правильно так:
выводить время не в левой колонке, А в вверху группы записей.
Автор: salexn1
Дата сообщения: 11.08.2010 11:11
Tantos
функции UpperCase просто нет в FastScript.
Автор: Tantos
Дата сообщения: 12.08.2010 03:17
salexn1
Ну подключи внешнюю - проблем-то?
Автор: salexn1
Дата сообщения: 12.08.2010 09:25
Tantos
так мне не нужно
ну а UpperCase в FastScript на самом деле вызывает функцию AnsiUppercase... Так что все у него будет ок
Автор: krapotkin
Дата сообщения: 12.08.2010 10:15
colt2
Тебе нужно создать UserDataset. MasterData привязать именно к нему.
В отчете в textviews вписать не поля БД, а некие переменные, которые надо создать там же в отчете.
Далее по GetFirst и GetNext анализировать, есть ли в БД данные для след. строки, и либо заполнять переменные этими данными, либо присваивать им пустые значения
все пойдет под ручным контролем...
Автор: Sanprof
Дата сообщения: 20.10.2010 10:36
Здравствуйте, помогите решить одну проблему есть два датасета с одинаковым набором и названием полей, только в первом находятся данные Status (0 или 1), а во втором Value (0-MaxInt). Из первого датасета мне нужно отобразить поля с 10 по 20 запись статусов(остальные просто отбрасываются), из второго все остальные (1-9, 21-53) - все на одном бенде. Т.к. у MasterData есть только одно поле датасет вот и стал на этом.
P.S.
Одним запросом вызвать не подходит, т.к. у меня есть процедура формирования XML-файла, которую я вызываю из скрипта, а потом делаю ADOQuery.LoadFromFile('File'), тоесть по моему случаю сначала формирую XML статусов, потом для значений.
Автор: krapotkin
Дата сообщения: 20.10.2010 15:07
как-то сумбурно...
попробуйте объяснить еще раз
может с примером, что из чего должно получиться?
Автор: kvazars
Дата сообщения: 20.10.2010 18:18
Sanprof, можеь использовать у ADoQuery - свойство Filter?
Автор: nunyutka
Дата сообщения: 28.10.2010 09:51
Здравствуйте... Помогите пожалуйста... Непойму в чем дело... Создаю двухуровневый отчет. как только заполняю данные во втором уровне все что было в первом не выводится вообще никак...Если есть кто то кто готов помочь брошенке на произвол судьбы в дальнейшем своими знаниями буду очень рада( Так сказать на попечение и обучение)
Автор: krapotkin
Дата сообщения: 29.10.2010 19:11
nunyutka
и опять непонятно:
как заполняете данные. какие компоненты используете?
лучше всего пример привести...
Автор: nunyutka
Дата сообщения: 01.11.2010 09:03
Спасибо за внимание krapotkin...за выходные медленно но верно сама дошла...

Добавлено:
а можно наладить с вами какой то более быстрый канал обмена информацией?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859

Предыдущая тема: CBuilder и копирование файла


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.