Terima kasih Mr.Kid atas pencerahannya.

Kelihatannya tebelnya dibuat pake Excel....

Saya akan coba googling lagi file aslinya.

Terima kasih.

Salam,
HK


Sent from Samsung Mobile

<div>-------- Original message --------</div><div>From: "'Mr. Kid' 
[email protected] [belajar-excel]" <[email protected]> 
</div><div>Date:05/10/2015  02:34  (GMT+07:00) </div><div>To: BeExcel 
<[email protected]> </div><div>Subject: Re: Fw: [belajar-excel] 
Perintah SQL untuk menggabungkan data sekaligus menjumlahkan </div><div>
</div>wkwkkwk...

Pak HK,

Hukum Dasar :
Setiap kolom pasti hanya punya 1 datatype.
Antar kolom dalam satu tabel (misal N kolom) bisa jadi kolom1 berdatatype yang 
berbeda dengan kolom2 dst... tetapi bisa juga sama
 
Apakah hal berikut melanggar hukum dasar di atas ?
Mengapa dengan Account data type yang "tidak sama" kolom Debits dan Credits 
masih bisa "dijumlahkan" (SUM) dengan "GROUP BY Account, Description".



Jadi,
Setiap KOLOM yang digunakan dalam suatu query PASTI memiliki 1 datatype saja. 
Jadi, isinya (field) di kolom tersebut mau tidak mau harus yang berdatatype 
sama dan sesuai dengan datatype kolom tersebut.
Kolom ke-1 bisa jadi tidak sama datatype-nya dengan kolom ke-2. Tapi kolom ke-2 
PASTI memiliki 1 datatype saja. Jadi, isi data di kolom ke-2 tersebut mau tidak 
mau harus yang berdatatype sama dan sesuai dengan datatype kolom ke-2.

Contoh : tabel A berisi kolom Account dan Nilai
Account         Nilai
ABC               100
100                 500
D1Y                   0
(lihat, Account 100 adalah rata kiri alias bertipe text)


TIDAK MUNGKIN terjadi :
Account         Nilai
ABC                100               -> Nilai 100 rata kanan alias bertipe 
numerik ? TIDAK MUNGKIN
100             ABC
D1Y            XYZ
(lihat, Account 100 adalah rata kiri alias bertipe text)

yang mungkin terjadi adalah :
TIDAK MUNGKIN terjadi :
Account           Nilai
ABC            100                     -> menjadi bertipe text (lihat, rata 
kiri)
100             ABC
D1Y            XYZ

Tabel berkaidah database tidak peduli nilai datanya apa....
Tabel berkaidah database hanya peduli DATATYPE si nilai data sesuai dengan 
datatype si kolom atau tidak.

Contoh : 
> Tabel B memiliki 2 kolom, Nama_Negara dan Nilai
Nama_Negara      Nilai
Indonesia              100
Jerman                 200

> Tabel C memiliki 2 kolom, Ket_Invoice dan Qty_Penjualan_in_pcs
Ket_Invoice                Qty_Penjualan_in_pcs
Invoice no Y12RT                   1
Lunas Inv K98YT                   12

Saya bisa membuat tabel D berisi 2 kolom Kolom1 dan Kolom2 yang menampung tabel 
B dan C
Kolom1                        Kolom2
Indonesia                       100
Jerman                          200
Invoice no Y12RT               1
Lunas Inv K98YT              12

Tabel berkaidah database tidak peduli, apakah data itu sebenarnya data nilai 
per negara atau data informasi qty per invoice
Asal datatypenya sama (Kolom1 bertipe text, Kolom2 bertipe numerik) maka bisa 
masuk.









2015-10-04 22:50 GMT+07:00 hendrik karnadi [email protected] 
[belajar-excel] <[email protected]>:
 
Terima kasih Mr. Kid.
Maaf Mr. Kid telah merepotkan.....

Ternyata hanya Account Data Type dari salah satu file sumber (Expenditures) 
yang berupa Text, lainnya Numerik.

Setelah Account data type pada semua file sumber saya jadikan text memang 
macronya bisa jalan.

Masih ada satu pertanyaan yang masih belum bisa saya jawab...
Mengapa dengan Account data type yang "tidak sama" kolom Debits dan Credits 
masih bisa "dijumlahkan" (SUM) dengan "GROUP BY Account, Description".

Terima kasih.

Salam,
HK



From: "'Mr. Kid' [email protected] [belajar-excel]" 
<[email protected]>
To: BeExcel <[email protected]> 
Sent: Sunday, 4 October 2015, 21:25

Subject: Re: Fw: [belajar-excel] Perintah SQL untuk menggabungkan data 
sekaligus menjumlahkan

 
Data type yang digunakan kolom Account apa ?
Kalau bukan string (char atau varchar), maka ndak perlu pakai ", kalau bertipe 
datetime, berarti bisa jadi perlu #, dsb.
Silakan disabarkan untuk bisa benar-benar memahami datatype dan seluruh 
karakteristik setiap datatype.

Regard,
Kid


2015-10-04 20:51 GMT+07:00 hendrik karnadi [email protected] 
[belajar-excel] <[email protected]>:


 
Terima kasih Mr. Kid.
Tadi penulisannya kurang "s", pada kolom Debit dan Kredit..
seharusnya
sSQL = sSQL & "Select Account, Description, Debits, Credits From " & 
oLr.Range(1) & vbCr & "WHERE Account = ""240"""

Namun sekarang muncul error message "Data type mismatch in criteria expression"
Mohon petunjuk lebih lanjut.

Terima kasih.

Salam,
HK


From: "'Mr. Kid' [email protected] [belajar-excel]" 
<[email protected]>
To: BeExcel <[email protected]> 
Sent: Sunday, 4 October 2015, 16:06
Subject: Re: Fw: [belajar-excel] Perintah SQL untuk menggabungkan data 
sekaligus menjumlahkan

 
Pak HK,

Error description berbunyi No Value given for one or more required parameters
biasanya karena ada nama kolom yang disebut di bagian select dalam query yang 
tidak dapat ditemukan dan dianggap sebagai sebuah variabel tertentu yang akan 
diberi suatu nilai konstanta.

Coba periksa kembali nama-nama kolom bagian select dan cocokkan dengan dataset 
sumbernya. 

Regard,
Kid



2015-10-04 7:14 GMT+07:00 hendrik karnadi [email protected] 
[belajar-excel] <[email protected]>:


 
Mr. Kid,
Mau nanya sedikit lagi tentang penulisan datatype string di Macro.

Masih dengan contoh kasus yang sama, untuk merekap Debits dan Kredits.
Bagaimana penulisan macronya bila yang ingin ditampilkan adalah details dari 
Account tertentu ?
Saya coba seperti ini (dengan dua apostroph mengapit Account yang menjadi 
Criteria),
sSQL = sSQL & "Select Account, Description, Debit, Credit From " & oLr.Range(1) 
& vbCr & "WHERE Account = ""240"""

Tapi ketika dijalankan ada error mesaage "No Value given for one or more 
required parameters"

Untuk lebih jelasnya saya lampirkan kembali .zip filenya 
(Consolidate(Detail_ERR) beserta file2 sumbernya), yang macronya telah saya 
ubah seperti di atas.
Mohon dapat diberikan petunjuk lebih lanjut.

Terima kasih.

Salam,
HK



----- Forwarded Message -----
From: "'Mr. Kid' [email protected] [belajar-excel]" 
<[email protected]>
To: BeExcel <[email protected]> 
Sent: Thursday, 1 October 2015, 11:19
Subject: Re: [belajar-excel] Perintah SQL untuk menggabungkan data sekaligus 
menjumlahkan

 
loh...

kan tentang datatype string ada disini. Mulai dari cara penyimpanan data teks 
(string) ke sebuah variabel, menggabungkan (concatenate) banyak data teks 
(string), menggabungkan (concatenate) variabel bertipe string dengan suatu data 
teks, dan berbagai contoh lainnya. Termasuk untuk datatype lainnya.

sedangkan untuk penambahan Description, adalah sekedar mengikuti logika.

Coba deh dibayangkan, ada data produk dan tahun pembuatannya, beserta nilai 
penjualannya.
Produk      Th_Prod        Nilai
A                1990           100
A                1990           500
A                2000           300
B                1990           250
B                2015           350
B                2015           150
C                2014             30
C                2014             10

1. Bagaimana hasil total nilai per produk ?
2. Bagaimana hasil total nilai per tahun pembuatan ?
3. Bagaimana hasil total nilai per produk per tahun pembuatan ?
4. Coba buat tabel outputnya secara manual, apa beda dari ke-3 output di atas ?

5. Bisakah menampilkan total nilai per produk soal nomor 1 di atas tapi 
disertai informasi tahun pembuatannya yang per record output nomor 1 hanya 
memuat 1 nilai tahun pembuatan tertentu ?

6. Kenapa pada kasus Anda ditambahkan Description ?

dari alur logika di atas, maka muncullah struktur query group by yang dengan 
tegas menyatakan bahwa bagian group by diisi dengan 
your_key_columns_without_columns_aliasses dan bukan your_tables_or_views_keys

Regard,
Kid



2015-10-01 11:02 GMT+07:00 hendrik karnadi [email protected] 
[belajar-excel] <[email protected]>:


 
Terima kasih Mr. Kid.

Berhasil....
Jadi harus ada tambahan tanda &, ""(string) dan Description (untuk grupnya).

Salam.
HK

From: "'Mr. Kid' [email protected] [belajar-excel]" 
<[email protected]>
To: BeExcel <[email protected]> 
Sent: Thursday, 1 October 2015, 10:42

Subject: Re: [belajar-excel] Perintah SQL untuk menggabungkan data sekaligus 
menjumlahkan

 
Pak HK,

sSQL = sSQL & "Select Account, Description, Sum(Debits) as Total_Debit, 
Sum(Credits) as Total_Credit From " & oLr.Range(1) & vbCr & "GROUP BY 
Account,Description"

Regard,
Kid



2015-10-01 10:11 GMT+07:00 hendrik karnadi [email protected] 
[belajar-excel] <[email protected]>:


 
Mr. Kid,

Terima kasih atas penjelasannya.

Saya coba ganti perintah :
sSQL = sSQL & "Select * From " & oLr.Range(1)

dengan

sSQL = sSQL & "Select Account, Description, Sum(Debits) as Total_Debit, 
Sum(Credits) as Total_Credit From " & oLr.Range(1) & vbCr
GROUP BY Account

Ketika macro dijalankan keluar message "Syntax Error" pada huruf yang berwarna 
merah. Dimana salahnya ya ?

Terima kasih.

Salam,
HK


From: "'Mr. Kid' [email protected] [belajar-excel]" 
<[email protected]>
To: BeExcel <[email protected]> 
Sent: Thursday, 1 October 2015, 8:58
Subject: Re: [belajar-excel] Perintah SQL untuk menggabungkan data sekaligus 
menjumlahkan

 
Hai Pak HK,

1. Query dasar agregat yang memiliki keys (agregat per anything) tanpa filter 
terhadap hasil agregat
SELECT your_key_columns, your_aggregat_ecpression
FROM your_source
GROUP BY your_key_columns_without_columns_aliasses

contoh : total penjualan per tahun (berdasar tanggal invoice) per produk
SELECT  produk_id, year(tgl_invoice) as tahun, sum(penjualan) as total_jual
FROM dataINV
GROUP BY produk_id, year(tgl_invoice)          --> tanpa aliasses

2. Query dasar UNION [ALL]
Query1
UNION [ALL]
Query2
UNION [ALL]
.
.
UNION [ALL]
QueryN

dengan setiap Query# berupa select query yang memiliki susunan sesuai kebutuhan.
Urutan kolom dan tipe datanya dari setiap Query# adalah tetap, dengan definisi 
kolom di Query1 yang menjadi nama kolom output

3. Susunan select query dasar
SELECT your_columns [, your_aggregate_expressions]
FROM your_source
[
    [JOIN your_join1 ON your_join1_relations]
    .
    .
    [JOIN your_joinN ON your_joinN_relations]
]
[
    WHERE your_filter_expressions
]
[
    GROUP BY your_columns_except_aggregate_expressions_without_columns_aliasses
    [HAVING your_aggregate_filter_expressions]     --> berisi filter terhadap 
kolom-kolom agregat, dan bukan terhadap key columns
]

[
     UNION [ALL]
     your_another_query2
     .
     .
     UNION [ALL]
     your_another_queryN
]
[
    ORDER BY your_sort_expressions
]

gunakan klausa ORDER BY secara bijak dan usahakan dihindari kecuali penting 
sekali diseakhir mungkin suatu proses, karena klausa ORDER BY termasuk computer 
resources eater

4. source dari query lain (subquery di bagian FROM)
SELECT your_dataset_alias#.your_columns
FROM 
     (
         queryS
     ) as your_dataset_alias1
[another query clauses]

queryS bisa berisi select query dasar seperti di-nomor 3 tanpa klausa ORDER BY
subquery suatu query seperti queryS juga bisa diletakkan pada bagian sumber 
data yang di-JOIN
setiap Query# dalam UNION [ALL] bisa berisi subquery suatu query seperti queryS

-----------------------
Prinsip dasar ber-query :
1. ketahui sumber data yang akan diproses
2. pahami alur komputasi yang dibutuhkan
3. susun query berdasar 1 dan 2
-----------------------

Jadi, menggabungkan data hasil agregat adalah hal yang berbeda dengan 
mengagregat hasil gabungan data
> menggabungkan data hasil agregat 
SELECT your_key_columns, your_aggregate_expressions
FROM your_source1
GROUP BY your_key_columns_without_columns_aliasses

UNION [ALL]
SELECT your_key_columns, your_aggregate_expressions
FROM your_source2
GROUP BY your_key_columns_without_columns_aliasses
.
.
UNION [ALL]
SELECT your_key_columns, your_aggregate_expressions
FROM your_sourceN
GROUP BY your_key_columns_without_columns_aliasses

hasilnya bisa jadi ada your_columns yang sama dengan nilai your_aggregate apa 
saja jika dengan [ALL] atau ada hasil aggregate yang hilang jika tanpa [ALL]

> mengagregat hasil gabungan data
SELECT your_key_columns, your_aggregate_expressions
FROM
       (

SELECT your_key_columns
FROM your_source1

UNION [ALL]
SELECT your_key_columns
FROM your_source2
.
.
UNION [ALL]
SELECT your_key_columns
FROM your_sourceN

        ) as your_dataset_alias
GROUP BY your_key_columns_without_columns_aliasses

Regard,
Kid





On Wed, Sep 30, 2015 at 5:36 PM, hendrik karnadi [email protected] 
[belajar-excel] <[email protected]> wrote:
 
Dear Be-Excelers,

Berikut adalah perintah Macro yang saya dapat dari internet (file terlampir) 
untuk menggabungkan data (non unique) dari beberapa file yang ada dalam satu 
folder (Path),

Sub Consolidate()

    Dim sSQL As String      'SQL String
    Dim oLr  As ListRow     'Worksheets Row
    Dim cn   As Object      'Connection
    Dim rs   As Object      'Recordset

'   Create SQL
    For Each oLr In Sheet1.ListObjects("Worksheets").ListRows
        If sSQL <> "" Then sSQL = sSQL & vbCr & "Union All" & vbCr 'tidak unik
        sSQL = sSQL & "Select * From " & oLr.Range(1)
    Next
    sSQL = Replace(sSQL, "<Path>", ThisWorkbook.Path)
    
'   Create Connection Objects
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & ThisWorkbook.FullName & ";" & _
            "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
    rs.Open sSQL, cn
    Debug.Print sSQL

    If Sheet1.ListObjects.Count > 1 Then Sheet1.ListObjects(2).Delete
    Sheet1.ListObjects.Add( _
        SourceType:=xlSrcQuery, _
        Source:=rs, _
        Destination:=Sheet1.Range("C6")).QueryTable.Refresh

    rs.Close
    cn.Close

    Set rs = Nothing
    Set cn = Nothing

End Sub

Yang ingin saya tanyakan adalah bagaimana bunyi perintah SQL nya (warna biru) 
jika yang ingin ditampilkan adalah total per no rek (bukan detailnya).

Terima kasih.

Salam,
HK

















Kirim email ke