-->
Tampilkan postingan dengan label Database. Tampilkan semua postingan
Tampilkan postingan dengan label Database. Tampilkan semua postingan

03 April 2018

Mengubah Kolom Menjadi Baris Di SQL Server



Hi, Mas bro,....

Aku mau berbagi ilmu lagi nich mas bro,
mumpung aku inget ya...

Bagaimana caranya mengubah kolom menjadi baris di SQL Server  :)

Gini....ni..cara ngebuatnya mas bro :)

Langkahnya :
Buka SQL SERVER Editor, lalu Copy Paste Script dibawah ini mas bro

--Membuat table temporary
create table #Temp_Table
(
   id_customer int,
   book varchar(64),
   price int,
   qty int,
   tahun_terbit int
)

insert into  #Temp_Table  values ('1','SQL Backup','1200000','10','2016')
insert into  #Temp_Table  values ('2','Hosting SQL','1500000','20','2016')
insert into  #Temp_Table  values ('3','SQL Server Training','2000000','15','2016')
insert into  #Temp_Table  values ('4','Database Administrator','1000000','22','2016')
insert into  #Temp_Table  values ('5','Cloud Database','130000','31','2017')
insert into  #Temp_Table  values ('6','Cloud Database 1','130000','31','2017')
insert into  #Temp_Table  values ('7','Cloud Database 2','130000','31','2018')
insert into  #Temp_Table  values ('8','Cloud Database 3','130000','31','2018')
insert into  #Temp_Table  values ('9','Cloud Database 4','130000','31','2018')
insert into  #Temp_Table  values ('10','Cloud Database 5','130000','31','2018')

--Deklarasikan variabel-variabel yang diperlukan
DECLARE   @SQLQuery AS NVARCHAR(MAX)
DECLARE   @PivotColumns AS NVARCHAR(MAX)

--mendapatkan kolom yang akan di jadikan kunci pada pivot column  
SELECT   @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(tahun_terbit)
FROM (SELECT DISTINCT tahun_terbit FROM [dbo].[#Temp_Table]) AS PivotExample

 
--Membuat Query dinamis dengan semua nilai untuk kolom pivot pada waktu proses
SET   @SQLQuery = 
    N'SELECT DISTINCT id_customer,book,price, ' +   @PivotColumns + '
 FROM [dbo].[#Temp_Table] 
    PIVOT( sum(qty)
          FOR tahun_terbit IN (' + @PivotColumns + ')) AS P'

--Jalankan Query Dinamis yang tadi sudah di jabarkan
EXEC sp_executesql @SQLQuery

Ini Hasilnya :





Selamat mencoba Mas Bro :)




02 April 2018

Kompare Tabel Kolom Di Dua Database SQL Server



Hi, Mas bro,....

Aku mau berbagi ilmu lagi nich mas bro,
mumpung aku inget ya...

Bagaimana caranya Kompare Kolom yang ada di tabel  tetapi dari dua database menggunakan SQL Server :)

Gini....ni..cara ngebuatnya mas bro :)

Langkahnya :
Buka SQL SERVER Editor, lalu Copy Paste Script dibawah ini mas bro

DECLARE @Db1 NVARCHAR(MAX)
DECLARE @Table1 NVARCHAR(MAX)
DECLARE @Db2 NVARCHAR(MAX)
DECLARE @Table2 NVARCHAR(MAX)
DECLARE @Sql NVARCHAR(MAX)

SET @Db1 = '{Nama Database 1}'
SET @Table1 = '{Nama Tabel l}'
SET @Db2 = '{Nama Database 2}'
SET @Table2 = '{Nama Tabel 2}'
SET @Sql = ' ' +
' SELECT ''in ' + @Db1 + '.' + @Table1 + ' --- not in ' + @Db2 + '.' + @Table2 + ''' AS TITLE, a.TABLE_CATALOG, a.column_name ' +
' FROM ' + @Db1 + '.INFORMATION_SCHEMA.COLUMNS a ' +
' WHERE a.column_name NOT IN (SELECT column_name ' +
' FROM ' + @Db2 + '.INFORMATION_SCHEMA.COLUMNS b ' +
' WHERE b.table_name IN (''' + @Table2 + ''')) ' +
' AND a.table_name IN (''' + @Table1 + ''') ' +

' UNION ALL ' +

' SELECT ''in ' + @Db2 + '.' + @Table2 + ' --- not in ' + @Db1 + '.' + @Table1 + ''' AS TITLE, a.TABLE_CATALOG, a.column_name ' +
' FROM ' + @Db2 + '.INFORMATION_SCHEMA.COLUMNS a ' +
' WHERE a.column_name NOT IN (SELECT column_name ' +
' FROM ' + @Db1 + '.INFORMATION_SCHEMA.COLUMNS b ' +
' WHERE b.table_name IN (''' + @Table1 + ''')) ' +
' AND a.table_name IN (''' + @Table2 + ''') ' +
''

EXEC (@Sql)

Ini Hasilnya :





Selamat mencoba Mas Bro :)




Looping List Data Di SQL Server



Uda lama kaga buka-buka blogger nih mas bro,....

Aku mau berbagi ilmu lagi nich mas bro,
mumpung aku inget ya...

Bagaimana caranya Looping List Data didalam Database SQL Server :)

Sering kita binggung bagaimana memecah data dari yang berbentuk list menjadi data perbaris di SQL Server, contohnya :
Isi Data

X = Darwan,Leo,Nardo,Sitepu,

Kita inginkan menjadi :

Darwan
Leo
Nardo
Sitepu

Gini....ni..cara ngebuatnya mas bro :)

Langkahnya :
Buka SQL SERVER Editor, lalu Copy Paste Script dibawah ini mas bro

DECLARE @valueList varchar(8000)
DECLARE @pos INT
DECLARE @len INT
DECLARE @value varchar(8000)

SET @valueList = 'Darwan,Leo,Nardo,Sitepu,'

set @pos = 0
set @len = 0

WHILE CHARINDEX(',', @valueList, @pos+1)>0
BEGIN
    set @len = CHARINDEX(',', @valueList, @pos+1) - @pos
    set @value = SUBSTRING(@valueList, @pos, @len)
    PRINT @value
    set @pos = CHARINDEX(',', @valueList, @pos+@len) +1
END

Ini Hasilnya :





Selamat mencoba Mas Bro :)




25 Januari 2016

Mencari nama kolom / field di Database dengan SQL Server


Haiii Mas bro....

Aku mau berbagi ilmu lagi nich mas bro,
mumpung aku inget ya...

Bagaimana mencari Nama Kolom atau Nama Field didalam Database SQL Server :)

Sering kita binggung bagaimana mencari Nama Field atau Nama Kolom di dalam sebuah Database, apalagi database yang akan kita cari tabelnya buanyak buanget ya, hehehehe.

Disini saya ada sedikit tips atau info, bagaimana mencari Nama Kolom atau Field didalam database sql server jika kita hanya tahu, nama kolomnya akan tetapi tidak inget nama tabelnya.

Yuk mulai yuk......

Cara Kesatu :
Mencari Nama Tabel dari kolom yang kita mau

Jika kita ingat nama kolom / filednya, kita bisa menggunakan Query dibawah ini :
SELECT name FROM sysobjects WHERE id IN ( SELECT id FROM syscolumns WHERE name = 'Nama Kolom' )

Ini Hasilnya :


Atau
Jika kita tidak ingat nama kolom / fieldnya, kita bisa menggunakan Query dibawah ini :
SELECT name FROM sysobjects WHERE id IN ( SELECT id FROM syscolumns WHERE name like '%Nama Kolom%' )

Ini Hasilnya :


Cara Kedua :
Mencari Nama Tabel beserta detail nama kolom / fieldnya, kita bisa menggunakan Query dibawah ini :
select sysobjects.name AS NAMA_TABEL, syscolumns.name AS NAMA_KOLOM
from syscolumns
left join sysobjects on sysobjects.id = syscolumns.id
where syscolumns.name like '%user%' and sysobjects.xtype ='u'
order by sysobjects.name  

Ini Hasilnya :




Selamat mencoba Mas Bro :)


24 Januari 2016

Restore Database Dari file Zip Dengan Coldfusion



Hi, Mas bro.....
Salam hangat buat semuanya ya.

Disini saya hanya ingin menambahkan script ataupun fungsi restore database melalui bahasa pemrograman Coldfusion dari bacaan saya terdahulu mengenai "Backup Database Ke Dalam File Zip Dengan Coldfusion".

Dimana hasil Backup Database terdahulu menggunakan ekstensi zip dan disini saya akan memberikan script ataupun fungsi restore database dari file zip ke Database yang kita inginkan.

Langkah Pertama

Masukkan Source Code Dibawah ini kedalam editor yang mas bro punya.



<cffunction name="RestoreDatabase" returnType="string" output="false">
    <cfargument name="dbsource" type="string" required="true">
    <cfargument name="zFilePath" type="string" required="true">
    <cfargument name="Eksekusi" type="string" required="true">
    <cfzip action="read" file="#zFilePath#" entrypath="data.packet.xml" variable="wddxText" />
    <cfwddx action="wddx2cfml" input="#wddxText#" output="qDatabase" />
    <cfif arguments.Eksekusi EQ "view"> 
     <!--- View Table in Database --->        
        <cfset XtempFOrm = "<style type='text/css'>body{  font-family:Verdana, Arial, Helvetica, sans-serif;  padding:30px 80px 30px 80px;  text-align:left;  border-top:20px solid ##006699;  margin:0;}h1{  color:##006699;  font-size:16px;  font-weight:bold;}h2{  color:##006699;  font-size:12px;  font-weight:bold;}p, label{  color:##666666;  font-size:10px;}label.sys {  color:##CCCCCC}td {  width:50%;  vertical-align:top}</style><form action='#CGI.SCRIPT_NAME#' method='post'>">
        <cfset XtempFOrm = "#XtempFOrm#<table summary='restore' width='550'><tr><td>">        
        <cfloop list="#ListSort(StructKeyList(qDatabase), "text")#" index="table">
         <cfset XtempFOrm = "#XtempFOrm#<input type='checkbox' name='tablename' id='tablename_#table#' value='#table#' /><label for='tablename_#table#' class='#Left(table,3)#'>#table#</label><br />">                              
        </cfloop>
        <cfset XtempFOrm = "#XtempFOrm#</td><td><input type='checkbox' name='delete' id='delete' value='1' /><label for='delete'>Tick the box to show that you understand that the existing data will be deleted!</label><br /><input type='submit' name='submit' value='restore' /></td></tr></table></form>">            
        <cfreturn XtempFOrm>
        <!--- End View Table in Database --->
    <cfelseif arguments.Eksekusi EQ "restore">
     <!--- Restore Table in Database --->
        <cfset LstCekStatus ="CF_SQL_BIGINT,CF_SQL_DATE,CF_SQL_FLOAT,CF_SQL_FLOAT,CF_SQL_INTEGER,CF_SQL_MONEY,CF_SQL_NUMERIC,CF_SQL_REAL,CF_SQL_SMALLINT,CF_SQL_MONEY4,CF_SQL_TINYINT">
        <cfset lstStatus ="">
     <cfif StructKeyExists(form, "tablename")>
    <cfif Not StructKeyExists(form, "delete")>
           <cfset lstStatus ="<p>You didn't tick the delete box :)</p>">                       
          <cfelse>                                 
            <cfloop list="#StructKeyList(qDatabase)#" index="index">            
              <cfif ListFindNoCase(form.tablename, index) eq 0>
               <cfset lstStatus = "<p>Skipping #index# table</p><br />">                
              <cfelse>
               <cfset lstStatus = "<h2>Restoring #index# table</h2><br />">    
                <!---<cfdump var="#qDatabase[index].data#">--->
                <cfset qSchema = qDatabase[index].schema />
                <cfset qData = qDatabase[index].data />        
                <cfquery name="qDelete_#index#" datasource="#arguments.dbsource#">
                  DELETE FROM [#index#]
                </cfquery>                
                <cfif ListFindNoCase( ValueList(qSchema.type_name), "int identity" )>
                  <cfset bIdentityInsert = True />
                <cfelse>
                  <cfset bIdentityInsert = False />
                </cfif>                
                <cfif bIdentityInsert>
                  <cfquery name="qIDENTITY_INSERT_#index#_ON" datasource="#arguments.dbsource#">
                    SET IDENTITY_INSERT [#index#] ON
                  </cfquery>
                </cfif>                
                <cfloop from="1" to="#qData.RecordCount#" index="iCurrentrow">              
                  <cfquery name="qInsert_#index#_#iCurrentrow#" datasource="#arguments.dbsource#">
                    INSERT INTO [#index#] (
                      #ValueList(qSchema.column_name)#
                    )
                    VALUES (
                    <cfloop from="1" to="#qSchema.RecordCount#" index="iColumn">
                      <cfset columnName = qSchema["column_name"][iColumn] />
                      <cfset columnType = getCFDataType(qSchema["type_name"][iColumn]) />  
                      <cfif ListFindNoCase(LstCekStatus,columnType,",") NEQ 0 AND len(trim(qData[columnName][iCurrentrow])) EQ 0>
                       NULL
                      <cfelse>   
                       <cfqueryparam value="#qData[columnName][iCurrentrow]#" cfsqltype="#columnType#" />
                      </cfif>
                      <cfif iColumn lt qSchema.RecordCount>,</cfif>
                    </cfloop>  
                    )
                  </cfquery>              
                </cfloop>                
                <cfif bIdentityInsert>
                  <cfquery name="qIDENTITY_INSERT_#index#_OFF" datasource="#arguments.dbsource#">
                    SET IDENTITY_INSERT [#index#] OFF
                  </cfquery>
                </cfif>                
              </cfif>              
            </cfloop>
          </cfif>        
        </cfif>
        <cfreturn lstStatus>  
        <!--- End Restore Table in Database --->
    </cfif>
</cffunction>
<cffunction name="getCFDataType" returntype="string" hint="I return the cfsqltype for the cfqueryparam function">  
  <cfargument name="type" required="true" type="string" />  
  <cfset var private = StructNew() />  
  <cfswitch expression="#ListFirst(LCase(Trim(Arguments.Type)), ' ')#">
    <cfcase value="bigint">
      <cfset private.CFDataType = "CF_SQL_BIGINT" />
    </cfcase>
    <cfcase value="binary,image,sql_variant,sysname,varbinary">
      <cfset private.CFDataType = "" />
    </cfcase>
    <cfcase value="bit">
      <cfset private.CFDataType = "CF_SQL_BIT" />
    </cfcase>
    <cfcase value="char,nchar">
      <cfset private.CFDataType = "CF_SQL_CHAR" />
    </cfcase>
    <cfcase value="smalldatetime">
      <cfset private.CFDataType = "CF_SQL_DATE" />
    </cfcase>
    <cfcase value="decimal">
      <cfset private.CFDataType = "CF_SQL_FLOAT" />
    </cfcase>
    <cfcase value="float">
      <cfset private.CFDataType = "CF_SQL_FLOAT" />
    </cfcase>
    <cfcase value="int">
      <cfset private.CFDataType = "CF_SQL_INTEGER" />
    </cfcase>
    <cfcase value="money">
      <cfset private.CFDataType = "CF_SQL_MONEY" />
    </cfcase>
    <cfcase value="ntext,text">
      <cfset private.CFDataType = "CF_SQL_LONGVARCHAR" />
    </cfcase>
    <cfcase value="numeric,numeric()">
      <cfset private.CFDataType = "CF_SQL_NUMERIC" />
    </cfcase>
    <cfcase value="nvarchar,varchar">
      <cfset private.CFDataType = "CF_SQL_VARCHAR" />
    </cfcase>
    <cfcase value="real">
      <cfset private.CFDataType = "CF_SQL_REAL" />
    </cfcase>
    <cfcase value="smallint">
      <cfset private.CFDataType = "CF_SQL_SMALLINT" />
    </cfcase>
    <cfcase value="smallmoney">
      <cfset private.CFDataType = "CF_SQL_MONEY4" />
    </cfcase>
    <cfcase value="datetime,timestamp">
      <cfset private.CFDataType = "CF_SQL_TIMESTAMP" />
    </cfcase>
    <cfcase value="tinyint">
      <cfset private.CFDataType = "CF_SQL_TINYINT" />
    </cfcase>
    <cfcase value="uniqueidentifier">
      <cfset private.CFDataType = "CF_SQL_IDSTAMP" />
    </cfcase>
    <cfdefaultcase>
      <cfthrow message="#ListFirst(LCase(Trim(Arguments.Type)), ' ')#" />
    </cfdefaultcase>
  </cfswitch>
  <cfreturn Trim(private.CFDataType) />
</cffunction>


Lalu Simpan Source Code ini dengan nama file yang berakhiran ".cfm" misalkan "RestoreDatabase.cfm" kedalam direktori wwwroot Coldfusion yang sudah terinstal.

Langkah Kedua

Masukkan Source Code Dibawah ini kedalam editor yang mas bro punya (Masih didalam file "RestoreDatabase.cfm").


<cfoutput>
<!DOCTYPE html">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Import Database Tables</title>
</head>
<body>
<h1>Restore Data</h1>
<!---
 Restore a database dari zip file.
#RestoreDatabase("dbsource","DbFile","Action")#
 @param dbsource    Datasource (DNS). (Required)
 @param DbFile        Lokasi File dari backup database (dalam zip file).
 @ param Action       tindakan yang akan dilakukan (view = berfungsi untuk menampilkan isi dari Backup Database file yang ada, dan restore = untuk melakukan restore data dari data yang sudah dipilih)
 @author Darwan Leonardo Sitepu (dlns2001@yahoo.com) 
 @version 1, February 21, 2011 
--->
#RestoreDatabase("darwanlns.com","c:\ColdFusion9\wwwroot\BackupDatabase.zip","view")#

<cfif StructKeyExists(form, "tablename")>
#RestoreDatabase("darwanlns.com","c:\ColdFusion9\wwwroot\BackupDatabase.zip","restore")#
</cfif>

</body>
</html>
</cfoutput>

Keterangan :
darwanlns.com = Nama Datasource yang sudah dibuat di Coldfusion
c:\ColdFusion9\wwwroot\BackupDatabase.zip = Alamat dari file Database yang akan direstore
view = Menampilkan Isi dari database yang terdapat di zip file
restore = Melakukan restore database dari pilihan yang sudah dilakukan.


Langkah Ketiga :

Untuk Menjalankan Source code yang sudah mas bro punya, mas bro ketikkan saja alamat di browser mas bro misalkan.

http://localhost:8500/RestoreDatabase.cfm


Maka Contoh Hasil dari source code diatas akan seperti ini


Selamat Mencoba Mas Bro :) 

20 November 2012

Database Explorer Sistem Dengan Coldfusion


Hei Mas Bro,
Ketemu lagi nich....
Disini aku mau bagi-bagi ilmu, tentang bagaimana caranya membuat SQL Editor Database lengkap dengan struktur tablenya berbasis web menggunakan bahasa pemrograman Coldfusion,
Mungkin saya pernah juga merilis tulisan ini Membuat Query Editor Berbasis Web Dengan Coldfusion,
tapi disini beda mas bro, disini saya menambahkan beberapa fitur lainnya, mungkin mas bro bisa lihat dari gambar dibawah ini

 Tampilan Halaman Login

Halaman Utama

Tampilan Struktur Table & SQL Editor

Hasil Data Dari Query Yang Telah Dijalankan

Link Download : Database Explorer Sistem

Setelah Mas Bro download file diatas, mas bro langsung extrak saja ke dalam folder direktori "wwwroot" coldfusion,
Lalu tinggal di jalankan deh mas bro,
misalkan : http://localhost:8500/DatabaseExplorerSistem/

Hanya ada satu kata yang bisa saya ucapkan,

Selamat Mencoba & Rasakan Hasilnya Mas Bro :)

13 November 2012

Update Data Dari 2 Table Yang Berbeda Di SQL SERVER


Hey Mas Bro, ketemu lagi nich....
Mas Bro, aku mau bagi-bagi pengetahuan nich, tentang bagaimana caranya mengupdate data dari 2 Table yang berbeda.

Begini...nich caranya :


UPDATE dbo.[Tabel Tujuan]
SET [Field Table Tujuan] = dbo.[Table Sumber].[Field Table Sumber]
FROM dbo.[Table Sumber]
WHERE dbo[Tabel Tujuan].[Field Kunci Tujuan]=dbo.[Table Sumber].[Field Kunci Sumber] 


Contohnya dari penerapan Query Diatas adalah :


UPDATE dbo.DT_SO
SET TOTAL_PENGELUARAN=dbo.DT_TRANSAKSI.TOTAL_PENGELUARAN
FROM dbo.DT_TRANSAKSI

atau


UPDATE dbo.DT_SO
SET TOTAL_PENGELUARAN=dbo.DT_TRANSAKSI.TOTAL_PENGELUARAN
,PENGHASILAN_KONSUMEN = dbo.DT_TRANSAKSI.PENGHASILAN_KONSUMEN
FROM dbo.DT_TRANSAKSI

atau


UPDATE dbo.DT_SO
SET TOTAL_PENGELUARAN=dbo.DT_TRANSAKSI.TOTAL_PENGELUARAN
,PENGHASILAN_KONSUMEN = dbo.DT_TRANSAKSI.PENGHASILAN_KONSUMEN
FROM dbo.DT_TRANSAKSI
WHERE dbo.DT_SO.ID_SO=dbo.DT_TRANSAKSI.ID_SO


Untuk Mengetahui Hasilnya Silahkan Dicoba y Mas Bro.


Selamat Mencoba Mas Bro :)







12 November 2012

Delete Log Database di SQL Server


Ciank mas bro,
Mas Bro, aku mau bagi-bagi pengetahuan nich, tentang bagaimana caranya menghapus Log Database di SQL server,

Soalnya terkadang Log Database yang kita punya, bisa lebih besar berkali-kali lipat dari Data masternya,
jadi kalau kita tidak menghapus log datanya, maka lognya bisa ngebengkak mas bro.

Misalkan Database "dbDepkes.mdf" saya besarnya hanya 1 GB, tapi setelah saya lihat Log Databasenya "dbDepkes_log.ldf" besarnya bisa mencapai 476 GB.
Jadi Kalau begini caranya Hardisk Ane bisa langsung Abis nich mas bro....

Gini Nich cara menghapus Log Database SQL Server mas bro,

Langkah 1 :

* Mas Bro Buka SQL Server Management Studio Mas Bro,
* Lalu mas bro Klik Kanan Pada database yang dipilih.
* Lalu Pilih Task
* Lalu Pilih Detach

Lihat Gambar Dibawah ini


* Jika Ada Koneksi yag sedang aktif, Checklist Drop Connection, lalu tekan Ok Untuk Menutup Database yang sedang aktif

Langkah 2 :
Masuk Ke lokasi Folder Database yang ada di komputer mas bro,
Misalkan Ada di "D:\Data\Database", Lalu Rename File "dbDepkes_log.ldf" menjadi "dbDepkes_log_lama.ldf".

Langkah 3 :
Pada SQL Server Management Studio, Mas Bro Klik Kanan, Lalu Pilih Attach.



Setelah Itu Ikuti mas bro Klik tombol "Add",
Lalu Pilih Database yang yang mas bro mau, misalkan database "dbDepkes.mdf", Lalu Tekan OK



Lalu mas bro Klik pada File "dbDepkes.LDF" atau pada File Type yang tipenya adalah Log, Setelah mas bro klik, Lalu Tekan Tombol Remove.



Setelah Log Databasenya di hapus / remove sama mas bro, maka SQL Server akan secara otomatis membuat Log database baru setelah mas bro, menekan tombol OK.

Langkah 4 :
Setelah itu mas bro masuk ke lokasi Folder Database berada, lalu mas bro hapus Log database yang tadi sudah kita rubah namanya "dbDepkes_log_lama.ldf".

Nah Gitu dech mas bro, cara untuk menghapus data Log yang ada dan menggantinya dengan Data Log baru.

Selamat Mencoba Mas Bro :)

25 Oktober 2012

Backup Database Ke Dalam File Zip Dengan Coldfusion


Disini saya hanya ingin berbagi ilmu bagaimana cara membuat Backup Database kedalam Zip File dengan Bahasa Pemrograman Coldfusion,

Langkah Pertama :
Masukkan Source Code Dibawah ini kedalam editor yang mas bro punya.

<!---
 Back up a database to a zip file.

 @param dbsource      DNS. (Required)
 @return Returns a string. 
 @author Darwan Leonardo Sitepu (dlns2001@yahoo.com) 
 @version 1, February 21, 2011 
--->
<cffunction name="backupDatabase" returnType="string" output="false">
    <cfargument name="dbsource" type="string" required="true">
    <cftry>
        <cfdbinfo datasource="#arguments.dbsource#" name="tables" type="tables" />
        <cfsilent>
            <cfset data = StructNew() />
            <cfloop query="tables">  <!--- grab all data from table --->  
                <cftry>
                    <cfset data[Table_Name] = StructNew() />  
                    <cfdbinfo datasource="#arguments.dbsource#" table="#Table_Name#" name="qryTableFields" type="columns" />  
                    <cfset data[Table_Name].schema = qryTableFields />  
                    <cfquery name="getData" datasource="#arguments.dbsource#" debug="no" cachedwithin=#CreateTimeSpan(0,0,0,10)# >SELECT * FROM [#Table_Name#]</cfquery>    
                    <cfset data[Table_Name].data = getData />            
                <cfcatch></cfcatch>
                </cftry>
            </cfloop><!--- Now serialize into one ginormous string --->
        </cfsilent>
        <cfwddx action="cfml2wddx" input="#data#" output="packet" /><!--- file to store zip --->
        <cfset zfile = expandPath("./data.zip") /><!--- Now zip this baby up --->
        <cfzip action="zip" file="#zfile#" overwrite="true"><cfzipparam content="#packet#" entrypath="data.packet.xml" /></cfzip>
        <cfreturn "I retrieved #tables.recordCount# tables from datasource #datasource# and saved it to #zfile#.">
    <cfcatch>
        <cfreturn "Backup Database Is Failed..">
    </cfcatch>
    </cftry>
</cffunction>

Lalu Simpan Source Code ini dengan nama file yang berakhiran ".cfm" misalkan "BackupDatabase.cfm" kedalam direktori wwwroot Coldfusion yang sudah terinstal.

Langkah Kedua :
Masukkan Source Code Dibawah ini kedalam editor yang mas bro punya (Masih didalam file "BackupDatabase.cfm").

<cfoutput>
<cfsetting showdebugoutput="no">
#BackupDatabase("darwanlns.com")#
</cfoutput>

Keterangan :
darwanlns.com = Nama Datasource yang sudah dibuat di Coldfusion

Langkah Ketiga :
Untuk Menjalankan Source code yang sudah mas bro punya, mas bro ketikkan saja alamat di browser mas bro misalkan.

http://localhost:8500/BackupDatabase.cfm


Contoh Filenya bisa di download disini Backup Database


Selamat Mencoba Mas Bro :)

24 Oktober 2012

Membuat Query Editor Berbasis Web Dengan Coldfusion


Mungkin mas bro, sudah sering melihat pembuatan Query Editor berbasis Web, :)

Disini saya hanya ingin berbagi ilmu bagaimana cara membuat Query Editor Berbasis Web dengan Bahasa Pemrograman Coldfusion,

Langkah Pertama :
Masukkan Source Code Dibawah ini kedalam editor yang mas bro punya.

<cfoutput>
<cfscript>
ServiceFactory = CreateObject("java", "coldfusion.server.ServiceFactory");
</cfscript>
<title>SQL Runner / Coldfusion Version #ServiceFactory.LicenseService.getMajorVersion()#</title>
<cfparam name="convert_TO_Excell" default="NO">
<CFPARAM Name="Sort" Default="Entry">
<cftry>
<CFOBJECT ACTION="CREATE"
TYPE="JAVA"
CLASS="coldfusion.server.ServiceFactory"
NAME="factory">

<cfscript>
dsService=factory.getDataSourceService();
dsFull=dsService.getDatasources();
dsNames=StructKeyArray(dsFull);
DS_List=QueryNew("Entry,Value");
</cfscript>
<cfset tmp=arraysort(dsNames,"textnocase")>
<CFLOOP INDEX="i" FROM="1" TO="#ArrayLen(dsNames)#">
<cfset tmp="dsFull.#dsNames[i]#.driver">
<cfset mydriver=evaluate(tmp)>
<cfif listfindnocase("MSSQLServer",mydriver) or listfindnocase("Oracle",mydriver) or listfindnocase("ODBCSocket",mydriver)>
<cfset tmp=QueryAddRow(DS_List)>
<cfset tmp=QuerySetCell(DS_List,"Entry",dsNames[i])>
<cfif mydriver eq 'ODBCSocket'>
<cfset tmp=QuerySetCell(DS_List,"Value","ODBCSocket")>
<cfelse>
<cfset tmp=QuerySetCell(DS_List,"Value",mydriver)>
</cfif>
</cfif>
</CFLOOP>
<cfcatch>
<CFREGISTRY ACTION=GETALL NAME="DS_List" TYPE="ANY" SORT="#Sort#" BRANCH="HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources">
</cfcatch>
</cftry>
<cfset DSList = valuelist(DS_LIST.Entry)>
<cfset DSDriver = valuelist(DS_LIST.Value)>
<cfscript>
function getDSNs() {
var factory = createObject("java","coldfusion.server.ServiceFactory");
return factory.getDataSourceService().getNames();
}

function dumpVarList(variable) {
    var delim="#Chr(13)##Chr(10)#";
    var var2dump=arguments.variable;
    var label = "";
    var newdump="";
    var keyName="";
    var loopcount=0;
 
    if(arrayLen(arguments) gte 2) delim=arguments[2];
    if(arrayLen(arguments) gte 3) label=arguments[3];
 
    // THE VARIABLE IS A SIMPLE VALUE, SO OUTPUT IT
    if(isStruct(var2dump)) {
   
        for(keyName in var2dump) {
            if(isSimpleValue(var2dump[keyName])) {
if (keyname contains "DRIVER")writeOutput(var2dump[keyName]);              
            }
        }
    }      
    return;
}
</cfscript>
<cfform name="frmSQL" action="#CGI.Script_Name#?#CGI.Query_String#" method="post" preservedata="true">
<table width="100%">
<cfinput type="hidden" name="convert_TO_Excell" value="#convert_TO_Excell#">
<tr>
<td>Select DataSource</td>
<td>&nbsp;:&nbsp;</td>
<td>
<cfparam name="reqsess_dsn" default="">
<cfselect name="reqsess_dsn">
<cfloop array=#getDSNs()# index="name">
<option value="#name#" <cfif reqsess_dsn Eq name>selected</cfif>>#name#<!--- &nbsp;[#dumpVarList(getdsn(name))#]--->
</cfloop>
</cfselect>
</td>
</tr>
<tr>
<td>View Output By</td>
<td>&nbsp;:&nbsp;</td>
<td>
<cfparam name="view_output" default="applet">
<cfselect name="view_output">
<option value="table" title="Semua Browser Support (KONEKSI CEPAT)" <cfif view_output Eq "table">selected</cfif>>Table
<cfif val(ServiceFactory.LicenseService.getMajorVersion()) GT 7>
<option value="applet" title="Browser Harus Support Dengan Java (KONEKSI CEPAT)" <cfif view_output Eq "applet">selected</cfif>>Applet
<option value="flash" title="Browser Harus Support Dengan Flash (KONEKSI SEDANG)" <cfif view_output Eq "flash">selected</cfif>>Flash
<option value="html" title="Semua Browser Support (KONEKSI SEDANG)" <cfif view_output Eq "html">selected</cfif>>Html
</cfif>
</cfselect>
</td>
</tr>
<tr><td  colspan="5">Query</td></tr>
<tr><td  colspan="5"><cftextarea name="txtSQL"  rows="20" cols="100%" style="width: 100%; height: 280px;; font-family: courier;" class="codepress sql linenumbers-off" id="sql"></cftextarea></td></tr>
<tr><td nowrap colspan="5">
<cfinput type="Button" name="cmdProcess" value="Process Query" onclick="javascript:process_query();">&nbsp;&nbsp;<cfinput type="Button" name="cmdConvert_Excell" value="Convert To Excell" onclick="javascript:convert_excell();">
</td></tr>
</table>
<Script>
function convert_excell()
{
document.frmSQL.convert_TO_Excell.value ="YES";
document.frmSQL.submit();
}
function process_query()
{
document.frmSQL.convert_TO_Excell.value ="NO";
document.frmSQL.submit();
}
</Script>
</cfform>
<br><br>
<cfform name="Frm_Query" enablecab="yes" format="html">

<cfif isdefined("txtSQL")>
<Cfset TxtRunSql = "#evaluate(DE(preservesinglequotes(txtSQL)))#">
<cftry>
<cfquery name="qRes" datasource="#reqsess_dsn#">
#evaluate(DE(preservesinglequotes(TxtRunSql)))#
</cfquery>

<cfif isdefined("txtSQL") and (lcase(left(txtSQL,6)) Neq "insert" OR lcase(left(txtSQL,6)) Neq "update" OR lcase(left(txtSQL,6)) Neq "delete")>
<cfif IsDefined("qRes.recordcount")>
#qRes.recordcount# found<br><br>
<cfif qRes.recordcount>
<cfif convert_TO_Excell NEQ "YES">
<cfif ServiceFactory.LicenseService.getMajorVersion() GT 7>
<Cfif UCASE(TRIM(view_output)) NEQ "TABLE">
<cfinclude template="cfgrid.cfm">
<Cfelse>
<cftable query="qRes" colspacing="2" border="1" htmltable colheaders>
<cfloop index="iFld" list="#qRes.columnlist#"><cfcol header = "<b>#iFld#</b>" align = "Center" text= "#evaluate("qRes.#iFld#")# &nbsp;"></cfloop>
</cftable>
</Cfif>
<cfelse>
<cftable query="qRes" colspacing="2" border="1" htmltable colheaders>
<cfloop index="iFld" list="#qRes.columnlist#"><cfcol header = "<b>#iFld#</b>" align = "Center" text= "#evaluate("qRes.#iFld#")#"></cfloop>
</cftable>
</cfif>
<cfelse>
<cfheader name="content-disposition" value="inline; filename=QUERY_TO_EXCELL[#DateFormat(now(),"ddmmyyyy")#].xls">
<cfcontent type="application/msexcel">
                            <style>
                             .XLSNIP
                            {mso-style-parent:style0;
                            color:black;
                            font-size:8.0pt;
                            font-family:Verdana, sans-serif;
                            mso-font-charset:0;
                            mso-number-format:"\@";
                            vertical-align:top;
                            border-top:none;
                            border-right:none;
                            background:white;
                            mso-pattern:auto none;
                            white-space:normal;}
                            </style>
<table border="1" cellspacing="0" cellpadding="0">
<tr>
<cfloop index="iFld" list="#qRes.columnlist#">
<td bgcolor="##C0C0C0">#iFld#</td>
</cfloop>
</tr>
<cfloop query="qRes">
<cfset icur=qRes.currentrow>
<tr>
<cfloop index="iFld" list="#qRes.columnlist#">
<cfif IsDate(evaluate("qRes.#iFld#[#icur#]"))>
<td>#dateformat(evaluate("qRes.#iFld#[#icur#]"),"dd/MMM/yyyy")#</td>
<cfelse>
<td class="XLSNIP">#evaluate("qRes.#iFld#[#icur#]")#</td>
</cfif>
</cfloop>
</tr>
</cfloop>
</table>
<cfinput type="hidden" name="convert_TO_Excell" value="NO">
</cfif>
</cfif>
</cfif>
</cfif>
<cfcatch>
<cfrethrow>
<cfloop collection = #cfcatch# item = "c"> <br><cfif IsSimpleValue(cfcatch[c])>#c# = #cfcatch[c]#</cfif> </cfloop>
</cfcatch>
</cftry>
</cfif>
</Cfform>
</cfoutput>


Langkah Kedua :
Simpan Source Code yang sudah mas bro buat dengan nama misalkan QueryEditor.cfm, Lalu mas bro jalankan file yang sudah mas bro simpan. misalkan dengan mengetikkan alamat browsernya seperti ini http://localhost:8500/QueryEditor.cfm

Maka Hasilnya akan seperti ini




Contoh Filenya Bisa Di Download Di Sini Query Editor

Selamat Mencoba Mas Bro... :)