🖨️
Panduan ini menjelaskan perbedaan tanda [ ] dan < >, cara menulis rumus, fungsi yang tersedia, fungsi agregat, serta cara mengatasi pesan error.
⭐ Feat Desktop ⭐ Feat Professional ⭐ Feat Enterprise ⭐ Feat ERP
[ ] menandai bagian teks yang harus dihitung; yang berada di luar kurung siku dicetak apa adanya. (2) < > dipakai di dalam rumus untuk mengambil nilai field. (3) Pada isian yang sudah pasti berupa rumus (kondisi Highlight, Group, script), tidak dipakai [ ], tetapi < > tetap dipakai.Tanda [ ] sebagai Batas Ekspresi
| Anda mengetik | Dicetak |
|---|---|
Nomor: [frData."NO FAKTUR"] | Nomor: 14 |
[frData."KOTA"] [frData."KODE POS"] | Nilai kota, spasi, nilai kode pos (satu objek boleh memuat beberapa [ ]) |
frData."NO FAKTUR" (tanpa [ ]) | Dicetak sebagai teks biasa, tidak diganti nilai |
Tanda < > untuk Mengambil Nilai Field di Dalam Rumus
Di dalam [ ] terdapat dua bentuk penulisan:
- Bentuk A (hanya menampilkan field): tulis nama field tanpa
< >, misalnya[frData."JUMLAH HARGA"]. - Bentuk B (ada rumus, fungsi, atau perbandingan): setiap field wajib dibungkus
< >.
[<frData."JUMLAH HARGA"> * 2]
[iif(<frData."JUMLAH"> > 10, 'Banyak', 'Sedikit')]
[<frData."KODE BARANG"> + ' - ' + <frData."NAMA BARANG">]Mengapa demikian? Isi rumus dibaca sebagai script PascalScript. Tanda < > mengubah nama field menjadi nilainya. Tanpa tanda tersebut, FastReport mengira seluruh isi [ ] adalah satu nama field dan mencarinya.
Perbandingan Hasil Nyata
Contoh berikut diuji pada faktur dengan JUMLAH HARGA = 2.500.000.
| Ditulis di Text object | Hasil | Keterangan |
|---|---|---|
[frData."JUMLAH HARGA"] | 2500000 | Bentuk A: menampilkan field |
[<frData."JUMLAH HARGA">*2] | 5000000 | Bentuk B yang benar |
[frData."JUMLAH HARGA" * 2] | 0 dan muncul pesan error | Salah. Tanpa < >, FastReport mencari field yang tidak ada |
[frData."JUMLAH HARGA"] * 2 | 2500000 * 2 | * 2 berada di luar [ ], sehingga hanya dicetak sebagai teks |
[<frData."JUMLAH HARGA"> * 0.11] | 275000 | Angka desimal di dalam rumus memakai titik |
[iif(<frData."JUMLAH HARGA">>1000000,'Besar','Kecil')] | Besar | Perbandingan dengan iif. Teks dalam rumus memakai tanda petik tunggal |
[UpperCase(<frData."NAMA REKAN">)] | USM, PT | Fungsi huruf besar |
[FormatDateTime('dd mmmm yyyy',<frData."TANGGAL FAKTUR">)] | 13 May 2015 | Mengatur format tanggal. Nama bulan mengikuti bahasa Windows |
[SUM(<frData."JUMLAH HARGA">,MasterData1)] | 4000000 | Jumlah seluruh baris data (total) |
[COUNT(MasterData1)] | 2 | Banyak baris data |
Aturan Penulisan Nama Field
- Bentuknya
NamaDataset."NAMA FIELD", misalnyafrData."JUMLAH HARGA". - Tanda petik ganda wajib bila nama field mengandung spasi. Nama field di Feat umumnya huruf besar semua dan sering memakai spasi.
- Nama field dan nama dataset tidak membedakan huruf besar dan kecil, tetapi sebaiknya ditulis sama seperti yang tampak di Data Tree.
- Teks (string) di dalam rumus memakai tanda petik tunggal:
'Besar'. - Angka desimal di dalam rumus memakai titik:
0.11, bukan0,11.
Di Mana Memakai [ ], Di Mana Tidak?
| Isian | Pakai [ ]? | Contoh |
|---|---|---|
| Text object | Ya | [<frData."JUMLAH"> * 2] |
| Highlight › Condition | Tidak | <frData."JUMLAH HARGA"> > 1000000 |
| Group Header › Condition | Tidak | frData."NO FAKTUR" |
| Script (tab Code) | Tidak | if <frData."TOTAL"> = 0 then ... |
| Expression Editor | Tidak | <frData."JUMLAH HARGA"> > 5000000 |
[ ] hanya ada di dalam teks yang dicetak. Pada tempat yang memang berisi rumus, [ ] tidak diperlukan.Operator
| Jenis | Operator |
|---|---|
| Hitung | + - * / |
| Bagi bulat dan sisa | div mod |
| Perbandingan | = <> < > <= >= |
| Logika | and or not |
Fungsi yang Sering Dipakai
Seluruh daftar fungsi ada pada Data Tree › tab Functions. Klik dua kali nama fungsi atau tarik ke dalam teks untuk memasukkannya.
| Kategori | Fungsi |
|---|---|
| Mathematical | Abs, Int, Round, Sqrt, Power, MaxValue, MinValue, Trunc |
| Aggregate | SUM, MIN, MAX, AVG, COUNT |
| Conversions | IntToStr, FloatToStr, DateToStr, StrToInt, StrToFloat, StrToDate |
| String | Copy, Length, Lowercase, Uppercase, NameCase, Pos, Trim |
| Other | IIF, ValidDate, ValidFloat, VarIsNull, dan lain-lain |
| Feat functions | Terbilang, TerbilangInggris, RoundTo, LeftStr, RightStr, ReplaceStr, ReplaceText, EscapeXML, CSVGetValue, JSONGetValue, JSONArrayGetValue |
| Date and Time | Date, Now, DayOf, MonthOf, YearOf, DaysInMonth, EncodeDate |
| Formatting | Format, FormatDateTime, FormatFloat, FormatMaskText |
Kategori Feat functions adalah fungsi tambahan khusus dari Feat. Contoh penggunaan yang sudah diuji:
| Penulisan | Hasil |
|---|---|
[Terbilang(SUM(<frData."JUMLAH HARGA">,MasterData1))] | tujuh juta lima ratus ribu (huruf kecil, tanpa kata “rupiah”) |
[NameCase(Terbilang(<frData."JUMLAH HARGA">))] | Dua Juta |
[RoundTo(<frData."JUMLAH HARGA"> / 3, -2)] | 666666,67 |
[LeftStr(<frData."NAMA REKAN">, 3)] | Tiga huruf pertama nama rekan |
[FormatFloat('#,##0.00', <frData."JUMLAH HARGA">)] | 2.000.000,00 (mengikuti pengaturan regional Windows) |
Fungsi Agregat (Total, Hitung, Rata-rata)
SUM(<frData."JUMLAH HARGA">, MasterData1)- SUM = jumlah, MIN = terkecil, MAX = terbesar, AVG = rata-rata, COUNT = banyak baris.
- Argumen kedua adalah nama band data yang dihitung (lihat nama band pada Report Tree).
- Argumen ketiga bersifat pilihan: 1 = hitung juga band yang disembunyikan, 2 = total berjalan (running total), 3 = keduanya.
Cara mudah dengan dialog Insert Aggregate:
- Klik dua kali Text object di band total (misalnya Group Footer).
- Pada tab Text, klik tombol Σ (Insert Aggregate).
- Pilih Function, Data band, DataSet, dan DataField.
- Klik OK. Teks
[SUM(<frData."JUMLAH HARGA">,MasterData1)]masuk ke objek.
Hasil agregat bergantung pada letak band tempat teks berada:
| Letak teks | Menghitung |
|---|---|
| Group Footer | Hanya baris di grup itu (subtotal) |
| Footer atau Report Summary | Seluruh baris laporan (total keseluruhan) |
| Page Footer | Tidak disarankan untuk total. Pada formulir Feat, gunakan field siap pakai seperti TOTAL TRANSAKSI |
Terbilang dan Script
Cetakan faktur Feat memuat baris seperti “Terbilang: tujuh juta lima ratus ribu rupiah”. Cara termudah adalah memakai fungsi Terbilang:
Terbilang: [Terbilang(<frData."TOTAL TRANSAKSI">)] rupiahKata “rupiah” ditulis di luar [ ] karena fungsi hanya menghasilkan kata bilangannya. Untuk huruf awal kapital, bungkus dengan NameCase.
Untuk kebutuhan yang tidak tercakup rumus, tersedia tab Code berisi script PascalScript. Pada script, field diambil dengan < > tanpa [ ]:
procedure Memo1OnBeforePrint(Sender: TfrxComponent);
begin
if <frData."TOTAL TRANSAKSI"> = 0 then
TfrxMemoView(Sender).Text := 'nol rupiah';
end;Pertanyaan Umum
❓ Apa perbedaan tanda kurung siku dan kurung sudut pada rumus Feat?
Kurung siku menandai bagian teks yang harus dihitung. Kurung sudut dipakai di dalam rumus untuk mengambil nilai field. Pada kolom yang sudah pasti berupa rumus, seperti kondisi Highlight, kurung siku tidak dipakai.
❓ Mengapa muncul pesan Field not found saat Preview?
Penyebab umumnya field di dalam rumus tidak dibungkus kurung sudut, misalnya ditulis frData."JUMLAH HARGA" * 2. Tulis sebagai [<frData."JUMLAH HARGA"> * 2] dan periksa ejaan nama field pada Data Tree.
❓ Mengapa hasil rumus tampil 0 pada Preview di dalam designer?
Preview di dalam designer tidak berisi data. Periksa hasil sebenarnya lewat Preview pada transaksi untuk formulir, atau lewat Daftar, Semua Laporan untuk laporan.
