Форум: "Основная";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Внизформат даты Найти похожие ветки
← →
SveT © (2006-03-09 22:50) [0]Подскажите пожалуйста, как добиться вывода даты в формате
01(02-09) января 2006 г. Главное чтобы перед цифрами от 1 до 9 стоял "0". Это необходимо для печатной формы в банк. Печатаем через FastReport 2.47.
Спасибо!
← →
Жуков Олег (2006-03-09 23:20) [1]FormatDateTime("dd mmmm yyyy", Date); - но в этом варианте месяц всегда будет в именительном падеже. Если нужно и месяц склонять, тогда наверно делать свою специальную функцию для преобразования даты в строку (по крайней мере я встроенных таких функций не знаю)
function MyDateToStr(const ADate: TDateTime): string;
const
MonthNames: array[1..12] of string = (
"Января",
"Февраля",
"Марта",
"Апреля",
"Мая",
"Июня",
"Июля",
"Августа",
"Сентября",
"Октября",
"Ноября",
"Декабря"
);
var
Day, Month, Year: WORD;
begin
DecodeDate(Now, Year, Month, Day);
Result := FormatFloat("00", Day) + " " + MonthNames[Month] + " " + IntToStr(Year);
end;
← →
Fay © (2006-03-10 00:37) [2]> function MyDateToStr(const ADate: TDateTime): string;
> DecodeDate(Now, Year, Month, Day);
Забавно 8)
> FormatFloat("00", Day) + " " + MonthNames[Month] + " " + IntToStr(Year);
Можно просто
Format("%.2d %s %.4d", [Day, MonthNames[Month], Year])
← →
Германн © (2006-03-10 02:17) [3]
> Fay © (10.03.06 00:37) [2]
>
> > function MyDateToStr(const ADate: TDateTime): string;
> > DecodeDate(Now, Year, Month, Day);
> Забавно 8)
Забавно. Ну и что? Возможно просто, что ответивший взял кусок из своей программы, которая кроме перевода даты в строку, ещё и сообщает сколько дней, часов, минут и секунд осталось до наступления MyDate! :)))
← →
antonn © (2006-03-10 06:05) [4]formatdatetime("dd mmmm yyyy",now); //или mmmmmm
← →
antonn © (2006-03-10 06:05) [5]хи-хи, стормозил
← →
Svet © (2006-03-10 08:48) [6]to Жуков Олег
Спасибо за идею. Но я не знаю как подцепить эту функцию к списку функций FR.
Если не затруднит, то прошу Вас пояснить
Спасибо!
← →
begin...end © (2006-03-10 08:56) [7]Ничего не понял. Дату в строку преобразовать, чтобы месяц в родительном падеже был? Тогда API-функция GetDateFormat поможет. Или что?
← →
Svet © (2006-03-10 09:01) [8]to begin...end
Жуков Олег верно подсказал. Теперь вопрос как подцепить ее к функциям FR.
← →
Жуков Олег (2006-03-10 10:14) [9]
> как подцепить ее к функциям FR.
- Не знаю. Я про Fast Report вообще мало знаю. Может быть до того, как отправлять данные в Fast Report провести преобразование?
← →
Morgoth_ (2006-03-10 13:14) [10]Зачем тебе ее подцеплять к функциям FastReporta? У него есть внутренняя функция FormatDateTime(<formatstr>, <value>), формат задается также как и в Дельфи.
А можешь вообще передать строку в отчет через переменную, для этого в отчете в тексте пишешь в квадратных скобках [vDate], а потом на событие OnGetValue пишешь:
if ParName = "vDate" then
ParValue := "строка с датой";
← →
Svet © (2006-03-11 14:31) [11]
- Не знаю. Я про Fast Report вообще мало знаю. Может быть до того, как отправлять данные в Fast Report провести преобразование?
Значений с датами при подготовке отчетов "бесконечно много", а форматы требуются разные в зависимости от требуемого доумента. Единственная проблема с данным форматом даты для конкретного документа. И оптимальным я считаю, преобразовать ее только при подготовке конкретного отчета. Теперь буду ломать голову как ее преобразовать до.
← →
SveT © (2006-03-11 14:51) [12]Кто-нибудь поможет передать в отчет.
Вот мой код на событие при подготовке печати:
DMFrm.QueryOper.Close;
DMFrm.QueryOper.SQL.Clear;
DMFrm.QueryOper.SQL.Add("SELECT RS.*, P.*, B.* FROM "RS.DB" AS RS, "SHOP-SKLAD.DB" AS P, "BANK.DB" AS B");
DMFrm.QueryOper.SQL.Add("WHERE RS.ORGDEP=P.KOD AND RS.BANK=B.KOD");
DMFrm.QueryOper.SQL.Add("ORDER BY "+FNAME);
DMFrm.QueryOper.Open;
DMFrm.QueryOpen.Close;
DMFrm.QueryOpen.SQL.Clear;
DMFrm.QueryOpen.SQL.Add("SELECT DISTINCT FRFNAME FROM "FRF.DB"");
DMFrm.QueryOpen.SQL.Add("WHERE GRUP=35 AND DEF=TRUE");
DMFrm.QueryOpen.Open;
if FileExists(ExtractFilePath(Application.ExeName)+"Reports\"+DMFrm.QueryOpen.FieldByName("FRFNAME").AsString) then begin
TRF_PRINTFRPREW.frDBDataSet1.DataSet := DMFrm.QueryOper;
TRF_PRINTFRPREW.frReport1.LoadFromFile(ExtractFilePath(Application.ExeName)+"Reports\"+DMFrm.QueryOpen.FieldByName("FRFNAME").AsString);
DMFrm.QueryOpen.Close;
DMFrm.QueryOper.DisableControls;
TRF_PRINTFORM.Tag := 35;
if TRF_PRINTFRPREW.frReport1.PrepareReport then
TRF_PRINTFRPREW.frReport1.ShowPreparedReport;
TRF_PRINTFRPREW.frPreview1.Zoom := 100;
DMFrm.QueryOper.EnableControls;
end
else ShowMessage(" ... !");
TRF_PRINTFORM.Tag := 35;
TRF_PRINTFRPREW.ShowModal;
Из таблицы ras.db берется значение даты
С уважением,
← →
Svet © (2006-03-11 14:53) [13]ошибка - не ras.db а rs.db
← →
Жуков Олег (2006-03-11 18:26) [14]Svet, "до" - это же не значит что прямо в базе данных менять. Конечно же только в памяти, и только у набора данных, который выводится в отчёт, но до формирования отчёта. Може быть ClientDataset использовать либо Calculated Field. А почему [10] не подходит?
← →
Svet © (2006-03-11 20:00) [15]to Жуков Олег!
Если честно ;- не знаю как это реализовать. Субъективно - знаний не хватает. Но если есть у Вас возможность поделиться кодом - буду признательна.
С уважением,
← →
Svet © (2006-03-11 20:17) [16]Правильно ли я передаю переменную
procedure TTRF_PRINTFRPREW.frReport1GetValue(const ParName: String;
var ParValue: Variant);
Var s, p: string;
i : integer;
begin
if ParName="vDate" then ParValue := .............;
← →
Жуков Олег (2006-03-11 23:54) [17]Svet, наверное правильно, для уверенности надо справку по FastReport читать.
Не знаю как работает FastReport, но могу предположить, что во время построения отчёта он пробегается по подключенному датасету, меняя ему текущую запись. И, значит вместо точек в [16] можно подставить MyDateToString(ПодключенныйДатасет.FieldByName(ИмяПоляСДатой).AsDateTime). Это только предположение, надо проверять.
← →
QwertyKz © (2006-03-12 12:46) [18]
> Правильно ли я передаю переменную
Можно так:
frxReport.Variables["MyVar"] := 10;
Если строковая переменная:
frxReport.Variables["MyVar"] := """" + "Текст" + """";
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.04.16;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.042 c