Welcome

Welcome, thanks to look my blog

Wednesday, 27 January 2016

https://goo.gl/maps/hZxLTXqCcv42

https://goo.gl/maps/hZxLTXqCcv42

<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3960.043582089887!2d110.36018461477329!3d-7.004150994940444!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x2e708aeec631ef4f%3A0x647da4efb6562c9a!2sPT.+Sumber+Aji+Langgeng+Santoso!5e0!3m2!1sid!2sid!4v1453885046777" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>


https://www.google.co.id/maps/place/PT.+Sumber+Aji+Langgeng+Santoso/@-7.004151,110.3601846,17z/data=!3m1!4b1!4m2!3m1!1s0x2e708aeec631ef4f:0x647da4efb6562c9a

Monday, 18 January 2016

Printing listview items using fastreport in Delphi

2 down vote accepted
I am looking for a simple example or a reference to print items from a listview using fastreport. For example: I have a listview that has three columns: id, name and marks. The listview has n number items each containing id, name and marks of individual students. I need to print the whole listview using fastreport in a tabular format. I googled but couldn't find an exact sample for my scope. Similarly, I couldn't find any documentation regarding this in fastreport demo. I am using Delphi XE8 with default installed fastreport version.

For demonstration purposes.
Place on the form the following components:
  • TButton;
  • TListView;
  • frxReport;
  • frxUserDataSet;
Double click on frxReport. In the Fastreport designer do
insert ReportTitle, MasterData and PageFooter bands.
Press Report => Data menu items. Check frxUserDataSet check box and press OK button.
Assign MasterData band with frxUserDataSet as double click on MasterData band and select frxUserDataSet, then press 'OK' button.
In MasterData band insert Text object (Memo). In Memo write [element].
Designer should look like this :
enter image description here
Now we can write some code :
procedure TForm8.FormCreate(Sender: TObject);
var
  I: Integer;
  Li : TlistItem;
begin
  // Just to fill some data in ListView 
  for I := 1 to 10 do
   begin
    Li := ListView1.Items.Add;
    LI.Caption := 'Col ' + IntToStr(i);
   end;

end;
In frxReport1 OnGetValue event write for example :
procedure TForm8.frxReport1GetValue(const VarName: string; var Value: Variant);
begin
  if CompareText(VarName, 'element') = 0 then
    Value := ListView1.Items[frxUserDataSet1.RecNo].Caption;
end;
And now print data
procedure TForm8.Button1Click(Sender: TObject);
begin
  frxUserDataSet1.RangeEnd := reCount;
  frxUserDataSet1.RangeEndCount := ListView1.Items.Count;
  frxReport1.ShowReport();
end;
The result after Button1 is pressed:
enter image description here
Note : In this answer is used part of FastReport PrintStringList demo.

24 Hour format for Date time picker

24 Hour format for Date time picker

I use DateTimePicker component, Time mode. I want to set it's time format to 24 hour time format. How can I do this ?

//Uses Commctrl;

procedure TForm1.FormCreate(Sender: TObject);
begin
SendMessage(DateTimePicker1.Handle,DTM_SETFORMAT, 0,LongInt(PChar('HH:mm:ss')));

//The format strings are what Windows allows in the Regional
// Settings for Time -  "HH" is military (24h time) and
//"hh" is 12 hour, adding "tt" to the end gets you the "am" / "pm", etc.

end;

//or with date and am/pm also:
procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(DateTimePicker1.Handle,DTM_SETFORMAT, 0,LongInt(PChar('dd/MM/yyyy HH:mm:ss tt')));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Application.UpdateFormatSettings := False;
ShortTimeFormat := 'HH:mm:ss';
end;

sumber:http://www.experts-exchange.com/questions/10264999/24-Hour-format-for-Date-time-picker.html

Saturday, 9 January 2016

Cross-tab dengan mysql

Cross-tab atau cross tabulation adalah bentuk laporan statistik yang merupakan de-normalisasi dari data dab ditampilkan dalam bentuk kelompok (group) dari sebuah field dan kolomnya terdiri atas nilai-nilai yang berbeda dari suatu field lain.
Misalnya ada tabel mhs dengan isi sebagai berikut:
namaseksfakultas
JoniPBiologi
HardiPBiologi
AnitaWPsikologi
KadirPIlmu Budaya
BudimanPTeknik
HusinPPsikologi
LindaWBiologi
KartonoPTeknik
KartiniWPsikologi
SuciwatiWTeknik
LegimanPBiologi
KuntoroPTeknik
SusanWBiologi
AniatiWTeknik
Hasil cross-tab untuk kolom fakultas dan seks adalah:
fakultasPWtotal
Biologi325
Ilmu Budaya101
Psikologi123
Teknik325


Pembuatan cross-tab secara manual

Tabel cross-tab tersebut dapat diperoleh dengan memanfaatkan fasilitas
query yang ada pada MySQL. Namun sebelum melihat bentuk query-nya, kita lihat
dulu penyelesaian masalah tersebut secara manual.
Kita buat tabel dengan kolom fakultas, P, dan W. Setelah itu kita urut
satu persatu baris dalam tabel mhs. Setiap menemukan data fakultas yang belum
ada di tabel kita tulis nama fakultas tersebut pada kolom fakultas. Untuk setiap
baris kita tambahkan nilai 1 pada kolom P jika seks bernilai \’P\’ dan kita tambahkan
nilai 1 pada kolom W jika seks bernilai \’W\’. Hasil tabel sementara sebagai berikut:
fakultasPW
Biologi1+10+0
Ternyata mudah. Prinsipnya adalah jumlahkan ke kolom P jika bernilai \’P\’ dan
jumlahkan ke kolom W jika bernilai \’W\’.


Query I

Jika kata yang ditulis tebal pada kalimat sebelum ini diganti dengan Bahasa Inggris hasilnya
adalah: sum ke kolom P if bernilai ‘P’ dan sum ke kolom W
jika bernilai ‘W’. Atau dalam SQL menjadi:
mysql> SELECT fakultas, SUM(IF(seks=\'P\',1,0)) AS P,
    -> SUM(IF(seks=\'W\',1,0)) AS W
    -> FROM mhs
    -> GROUP BY fakultas;
Hasilnya:
fakultasPW
Biologi32
Ilmu Budaya10
Psikologi12
Teknik32
Bagaimana dengan kolom jumlah (total)? Mudah juga ubah sedikit SQL tersebut menjadi:
mysql> SELECT fakultas, SUM(IF(seks=\'P\',1,0)) AS P,
    -> SUM(IF(seks=\'W\',1,0)) AS W,
    -> COUNT(*) as total
    -> FROM mhs
    -> GROUP BY fakultas;
Hasilnya:
fakultasPWtotal
Biologi325
Ilmu Budaya101
Psikologi123
Teknik325
Mungkin timbul pertanyaan kenapa ingin mencacah baris/record menggunakan
sum bukan count? Ternyata count dan sum
cara kerjanya mirip dan bisa dikatakan sama untuk kasus tertentu. Coba SQL berikut:
mysql> SELECT COUNT(*) from mhs;
Hasilnya:
count(*)
24
Sekarang ganti \’count(*)\’ pada SQL tersebut dengan \’sum(1)\’:
mysql> SELECT SUM(1) from mhs;
Hasilnya:
sum(1)
24


Query II

Pada kasus tersebut nama kolom sudah diketahui sebelumnya yaitu \’P\’ dan \’W\’. Bagaimana jika
isi kolom tidak atau belum diketahui sebelumnya? Misalnya untuk kasus tersebut tetapi nama
kolom adalah nama fakultas sedang baris berisi seks.
Pertama kita ambil nama-nama fakultas dengan SQL:
mysql> SELECT distinct fakultas from mhs;
Hasilnya:
fakultas
Biologi
Psikologi
Ilmu Budaya
Teknik
Anda bisa menyusun SQL secara manual dengan memasukkan sum/if untuk setiap fakultas.
Namun demikian ada cara yang lebih baik. Ubah SQL tersebut menjadi:
mysql> SELECT distinct concat(\', sum(if(fakultas=\"\',fakultas,
    -> \'\",1,0)) as `\',fakultas,\'`\') from mhs;
Hasilnya:
concat(‘, sum(if(fakultas=\”\”‘,
, sum(if(fakultas=\”Biologi\”,1,0)) as `Biologi`
, sum(if(fakultas=\”Psikologi\”,1,0)) as `Psikologi`
, sum(if(fakultas=\”Ilmu Budaya\”,1,0)) as `Ilmu Budaya`
, sum(if(fakultas=\”Teknik\”,1,0)) as `Teknik`
Terlihat bahwa kita dapat menyusun kode SQL dengan SQL. Dengan cut and paste maka
dapat disusun SQL sesuai dengan keinginan yaitu:
mysql>select seks
    ->, sum(if(fakultas=\" Biologi\",1,0)) as  `Biologi`
    ->, sum(if(fakultas=\" Psikologi\",1,0)) as  `Psikologi`
    ->, sum(if(fakultas=\" Ilmu Budaya\",1,0)) as  `Ilmu Budaya`
    ->, sum(if(fakultas=\" Teknik\",1,0)) as  `Teknik`
    ->, count(*) as total
    ->from mhs
    ->group by seks
Hasilnya:
seksBiologiPsikologiIlmu BudayaTekniktotal
P31138
W22026


Berikut ini adalah sebuah contoh membuat Cross Tabulation pada MySQL dengan sebuah kasus tentang statistik jenis kelamin siswa di beberapa kelas.

1. Buatlah sebuah table siswa dengan struktur seperti dibawah ini.
CREATE TABLE `siswa` (
  `id` char(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `nama` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `kelamin` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,
  `kelas` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

2. Masukan data sample siswa seperti yang ditunjukan dibawah ini.
+------+-------------------+---------+---------+
| id   | nama              | kelamin | kelas   |
+------+-------------------+---------+---------+
| 0001 | DENDIE SANJAYA    | L       | KELAS 1 |
| 0002 | YULIANTI          | W       | KELAS 1 |
| 0003 | PITRASCHA ADITYIA | L       | KELAS 1 |
| 0004 | SRI HARTATI       | w       | KELAS 2 |
| 0005 | RIZKI PRIHANTO    | L       | KELAS 2 |
| 0006 | RIANO OSKAR       | L       | KELAS 2 |
| 0007 | HERU SASONGKO     | L       | KELAS 3 |
| 0008 | KHEDA GINANJAR    | L       | KELAS 3 |
| 0009 | MIFTAH KAMALUDIN  | L       | KELAS 3 |
+------+-------------------+---------+---------+

3. Membuat query untuk menghasilkan Cross Tabulations dengan variable/ faktor jenis kelamin dan kelas
select kelas, sum(if(kelamin='L',1,0)) as 'PRIA', sum(if(kelamin='W',1,0)) as 'WANITA', count(*) as TOTAL
from siswa
group by kelas
Berikut ini penjelasan dari bagian penting query diatas
  • sum(if(kelamin='L',1,0)) as 'PRIA' -> Mengartikan apabila menemukan data hurup L pada field KELAMIN maka lakukan penambahan sebanyak satu angka. kemudian simpan hasil perhitungannya di kolom bernama PRIA.
  • sum(if(kelamin='W',1,0)) as 'WANITA' -> Mengartikan apabila menemukan data hurup W pada field KELAMIN maka lakukan penambahan sebanyak satu angka. kemudian simpan hasil perhitungannya di kolom bernama WANITA.
  • count(*) as TOTAL -> Mengartikan melakukan perhitungan seluruh siswa baik yang berkelamin pria maupun wanita.
  • group by kelas -> mengartikan data akan di tampilkan secara berkelompok berdasarkan kelas.

4. Berikut ini adalah hasil dari query Cross Tabulations diatas.
+---------+------+--------+-------+
| kelas   | PRIA | WANITA | TOTAL |
+---------+------+--------+-------+
| KELAS 1 |    2 |      1 |     3 |
| KELAS 2 |    2 |      1 |     3 |
| KELAS 3 |    3 |      0 |     3 |
+---------+------+--------+-------+

sumber:http://yanto.staff.ugm.ac.id/?page_id=55
http://dendieisme.blogspot.co.id/2011/07/mysql-cross-tabulations.html

Constructing a cross-tab report

Constructing a cross-tab report


Now let's turn from theory to practice. We will construct a simple cross-tab report displaying employees’ salaries over four years. To do this we need the “crosstest” table, which is located in the FastReport “DEMOS\MAIN” folder. The table contains data like:

Name        Year        Salary
Ann        1999        3300
Ben        2002        2000
….

Create a new project in Delphi, place “TTable”, “TfrxDBDataSet” and “TfrxReport” components on the form and set their properties:

Table1:
DatabaseName = 'c:\Program Files\FastReport 4\Demos\Main'
TableName = 'crosstest.db'

the DatabaseName property, of course, must correspond to the path of your FastReport installation folder!

frxDBDataSet1:
DataSet = Table1
UserName = 'SimpleCross'

The “TfrxCrossObject” component _img169 from the FastReport component palette is used to design a cross-tab report. Just place it on the Delphi form, it does not need any properties to be changed. The “frxCross” unit, containing the cross-tab functionality, is added to the “uses” list when the Delphi application is compiled. 

Open the report designer. Firstly connect the data source using the “Report > Data…” menu item. Then select  the “DB cross-tab” object 159 from the designer's object toolbar and click on the design page to place the object there:

clip0017

All settings are made using the cross-tab editor. Open it by double-clicking on the object:

clip0032

Key to the items shown above:

1 – a drop-down list of available data sources
2 – the list of fields in the selected data source; the fields from this list can be dragged to the lists numbered 3, 4 or 5
3 – the list of fields which generate line (row) headers
4 – the list of fields which generate column headers
5 – the list of fields which generate table cells
6 – table structure preview
7 – structure options : display of titles, totals, etc

You can only use the mouse in this editor to make changes. For our example it is only necessary to drag fields from the list 2 to lists 3, 4 and 5 (in the diagram above). After that close the editor by clicking the ОК button. The cross-tab object now shows its structure:

clip0055


When the report is previewed you will see a table resembling this:

clip0153

sumber:https://www.fast-report.com/public_download/html/UserMan/index.html?construct_a_cross_report.htm

Monday, 4 January 2016

Cara Mengatasi “Error 0x00000709” saat Mengeset Default Printer

Cara Mengatasi “Error 0x00000709” saat Mengeset Default Printer

Selamat siang, pagi malam atau apapun...

Pada posting kali ini saya mau sharing tentang bagaimana cara ngatasin error saat mengeset default printer. Ya sekedar sharing pengalaman saya aja ya soalnya saya juga bukan ahli di bidang perkomputeran.

Pada saat itu komputer yang di pake OS-nya Windows 7 dan printernya Epson L300. Nah, waktu saya mau set tuh printer “set as default printer”, muncul tulisan “operation could not be completed (error 0x00000709). Double check the printer name and make sure that the printer is connected to the network” . Jadi printernya gak bisa di set defaultkan.

Kayak gini tampilannya:

Efeknya pada saat membuka Ms. Word, kemudian saya coba ngeprint, tab pilihan printernya kosong. Namun masih bisa dipake untuk cetak dokumen dengan klik tombol sebelah kanan kemudian cari printer yang sesuai. Parahnya klo mau ngeprint pake Ms. Excel. saya coba berulang kali tapi munculnya tulisan “printer not found”. Kan jadi gak nyaman kalau mau cetak dokumen dari Ms. Excel gagal terus. Nah, kalau begitu langsung aja saya kasih tau cara ngatasin errornya dengan beberapa Langkah berikut ini:

Langkah pertama:
Klik tombol Windows + tombol huruf R di keyboard PC agan, setelah itu ketik regedit kemudian klik oke.

Tampilannya seperti di bawah ini:

Setelah itu akan muncul jendela seperti berikut ini:

Langkah kedua:
Klik Folder HKEY_CURRENT_USER --> Software --> Microsoft --> Windows NT --> CurrentVersion --> Windows. Setelah itu akan tampil jendela seperti ini:

 Fokuskan perhatian pada tulisan “device” pada tab sebelah kanan. Kemudian blok “device” lalu klik kanan pilih modify. Langkah selanjutnya delete nama printer yang tertera lalu klik oke. Terakhir, restartlah computer agan dan masalah error pun terselesaikan. Apabila nama printer yang tertera tidak dapat di delete, pada registry editor pilih menu edit --> permissions --> kemudian chek list (√) allow pada Full Control, seperti gambar di bawah ini:


 Semoga bermanfaat

sumber:http://denarjamhuri.blogspot.co.id/2015/07/cara-mengatasi-error-0x00000709-saat.html