You are on page 1of 38

MSSQL 2000

01. Koneksi dari VFP

a=[driver=sql server;server=(local);database=contoh;uid=;pwd=;]
n=SQLSTRINGCONNECT(a)
?n

x=SQLEXEC(n,[select * from t_rencana],[hasil])


BROWSE

x=SQLEXEC(n,[select * from t_rencana where c_kode='001'],[hasil])


BROWSE

_kode = '002'
x=SQLEXEC(n,[select * from t_rencana where c_kode=?_kode],[hasil])
BROWSE

** jika koding melebihi panjang yg dibolehkan, 255 karakter


_kode='003'
TEXT TO cSQL NOSHOW
select * from t_rencana where c_kode=?_kode
ENDTEXT

=SQLEXEC(n,cSQL,[hasil])
BROWSE
USE IN SELECT('hasil')

**untuk diskonek
=SQLDISCONNECT(n)

Page 1 of 38
02. Latihan TRIGGER 1 untuk LOG pada proses insert, update, delete.

CREATE TRIGGER tulis_ke_histori ON [dbo].[t_transak]


FOR DELETE , INSERT
AS
begin
insert into dbo.t_histori(c_kode, vc_nama, c_tran) select c_kode, vc_nama, 'D' from deleted
insert into dbo.t_histori(c_kode, vc_nama, c_tran) select c_kode, vc_nama, 'I' from inserted

IF @@ERROR<> 0
begin
RAISERROR ('Insert gagal....', 16, 1)
end
end

CREATE TRIGGER tulis_ke_his_update ON [dbo].[t_transak]


FOR UPDATE
AS
begin
declare @kode char(10), @namalama varchar(50), @namabaru varchar(50)

select @kode=c_kode, @namalama = vc_nama from deleted


select @namabaru = vc_nama from inserted

insert into dbo.t_his_update(c_kode, vc_namalama, vc_namabaru) values (@kode, @namalama,


@namabaru)
end

CREATE TRIGGER tulis_ke_histor_enki ON [dbo].[t_transak]


WITH ENCRYPTION
FOR UPDATE
AS
begin
insert into dbo.t_histori(c_kode, vc_nama, c_tran) select c_kode, vc_nama, 'U' from inserted
end

Page 2 of 38
CREATE TRIGGER [del_transak] ON [dbo].[t_histori]
FOR DELETE
AS
begin
raiserror ('Tidak bisa hapus data',16,1)
end

Page 3 of 38
03. DEFAULTS value

Page 4 of 38
04. RULES

Page 5 of 38
05. FUCTIONS

CREATE FUNCTION [dbo].[tambah] (@bil1 int, @bil2 int)


RETURNS int AS
BEGIN
declare @jml int

set @jml = @bil1 + @bil2


return @jml
END

CREATE FUNCTION [dbo].[kurang] (@bil1 int, @bil2 int)


RETURNS int AS
BEGIN
return @bil1 - @bil2
END

Page 6 of 38
SELECT *, (CASE WHEN dbo.kurang(n_rencana, n_bayar) > 0 THEN dbo.kurang(n_rencana, n_bayar) ELSE 0
END) AS kur_byr FROM t_rencana

Page 7 of 38
06. Latihan TRIGGER 2 untuk proses insert, update, delete di VFP

CREATE TRIGGER [ins_rencana] ON [dbo].[t_bayar]


FOR INSERT
AS
begin
declare @vkode char(5), @vbayar numeric(18,0)

select @vkode = c_kode, @vbayar = n_jmlbyr from inserted


if exists(select c_kode from t_rencana where c_kode = @vkode)
begin
update t_rencana set n_bayar = n_bayar + @vbayar where c_kode = @vkode
end
else
begin
raiserror('Gagal update data !', 16, 1)
end
end

CREATE TRIGGER [del_rencana] ON [dbo].[t_bayar]


FOR DELETE
AS
begin
declare @vkode char(5), @vbayar numeric(18,0)

select @vkode = c_kode, @vbayar = n_jmlbyr from deleted


update t_rencana set n_bayar = n_bayar - @vbayar where c_kode = @vkode

if @@rowcount = 0
begin
raiserror('Gagal update data !', 16, 1)
end
end
Page 8 of 38
CREATE TRIGGER [upd_rencana] ON [dbo].[t_bayar]
FOR UPDATE
AS
begin
declare @vkode char(5), @vbayar numeric(18,0), @vbayar2 numeric(18,0)

select @vkode = c_kode, @vbayar = n_jmlbyr from deleted


select @vbayar2 = n_jmlbyr from inserted

update t_rencana set n_bayar = n_bayar - @vbayar + @vbayar2 where c_kode = @vkode

if @@rowcount = 0
begin
raiserror('Gagal update data !', 16, 1)
end
end

Page 9 of 38
LOAD EVENT :
SELECT 0
USE ve_bayar ALIAS vb
INDEX ON c_kode TAG kode
CURSORSETPROP("Buffering",5)

SELECT 0
USE ve_rencana ALIAS vr
SET RELATION TO c_kode INTO vb

thisform.Refresh

DESTROY EVENT :
USE IN SELECT('vr')
USE IN SELECT('vb')

ADD CLICK EVENT :


SELECT vb
APPEND BLANK
replace c_kode WITH vr.c_kode

this.Parent.grid2.refresh
This.Parent.grid2.setfocus
This.Parent.grid2.activatecell(ThisForm.grid2.activerow,3)

SAVE CLICK EVENT :


SELECT vb
TABLEUPDATE(.t.)
=REQUERY('vr')

thisform.grid1.Refresh
Page 10 of 38
DEL CLICK EVENT :
SELECT vb

IF EOF() OR BOF()
MESSAGEBOX('Pilih dulu record di detail yg akan dihapus !',16,'')
return
ELSE
mrecord=RECNO()
ENDIF

GO mrecord
SELECT vb
IF MESSAGEBOX('Yakin akan dihapus ?',36,'')=6
DELETE

=TABLEUPDATE(.t.)
=REQUERY('vr')

thisform.refresh
ENDIF
This.Parent.grid2.SetFocus
This.Parent.grid2.Refresh

REQUERY CLICK EVENT :


=REQUERY('vr')
thisform.Refresh

CLOSE CLICK EVENT :


Thisform.release

GRID1.RECORDSOURCE = vr
GRID2.RECORDSOURCE=vb

Page 11 of 38
07. Latihan STORE PROCEDURE untuk simulasi Auto Debet di VFP

**StoreProcedure Auto Debet


CREATE PROCEDURE [dbo].[AutoDB] AS
begin
declare @tglskr char(10), @nsaldo numeric(18,0), @jtempo char(10), @tagihan numeric(18,0), @vnorek
char(10)

set @tglskr = convert(char(10), getdate(), 103)

declare c_tagih cursor for (select norek, convert(char(10),jthtempo,103), tagihan from t_angsur where
convert(char(10),jthtempo,103) = @tglskr )

open c_tagih

fetch next from c_tagih into @vnorek, @jtempo, @tagihan

while @@fetch_status = 0
begin
set @nsaldo = 0
if exists(select saldo from t_bank where norek =@vnorek)
begin
set @nsaldo = (select saldo from t_bank where norek =@vnorek)

if @tagihan <= @nsaldo


begin
update t_angsur set bayar = bayar + @tagihan where norek = @vnorek and
convert(char(10),jthtempo,103) = @tglskr

if @@error=0
update t_bank set saldo = saldo - @tagihan where norek = @vnorek
end
Page 12 of 38
else
begin
update t_angsur set bayar = bayar + @nsaldo where norek = @vnorek and
convert(char(10),jthtempo,103) = @tglskr
if @@error=0
update t_bank set saldo = saldo - @nsaldo where norek = @vnorek
end
end

fetch next from c_tagih into @vnorek, @jtempo, @tagihan


end

close c_tagih
deallocate c_tagih
return
end
GO

LOAD EVENT :
SELECT 0
USE ve_bank ALIAS vb

SELECT 0
USE ve_angsur ALIAS vr

thisform.Refresh

Page 13 of 38
DESTROY EVENT :
USE IN SELECT('vr')
USE IN SELECT('vb')

GRID1.RECORDSOURCE = vb
GRID2.RECORDSOURCE=vr

CLOSE CLICK EVENT :


thisform.Release

TIMER INTERVAL = 500

TIMER EVENT :
IF thisform.check1.Value = 1
=REQUERY('vr')
=REQUERY('vb')

thisform.Grid1.Refresh
thisform.Grid2.Refresh
ENDIF

Page 14 of 38
Page 15 of 38
Page 16 of 38
Page 17 of 38
08. Back-Up database di MsSQL

Page 18 of 38
** Store Procedure untuk Back-Up, create di MASTER database.
CREATE PROCEDURE BackUp_IT
@dtb as sysname,@type AS nvarchar(1)
AS
Declare @cmd sysname
Declare @cmd1 sysname
Declare @filename nvarchar(50)
Declare @filepath nvarchar(100)
Declare @filestr nvarchar(150)
declare @tanNMfile nvarchar(20)

set @tanNMfile= cast(day(getdate()) as varchar(2)) +


cast(month(getdate()) as varchar(2)) +
cast(year(getdate()) as varchar(4)) + '.Bak'

set @cmd1 = 'C:\rar.exe a -df '


set @filepath = 'C:\backupdata\'

IF @type='1'
BEGIN
set @filename = 'B_' + @dtb + '_' + @tanNMfile
END

Page 19 of 38
ELSE
BEGIN
set @filename = 'M_' + @dtb + '_' + @tanNMfile
END

set @filestr = ltrim(rtrim(@filepath + @filename ))

EXEC sp_addumpdevice 'DISK', @filename, @filestr


BACKUP DATABASE @dtb TO @filename
EXEC sp_dropdevice @filename

SET @cmd = @cmd1 + @filepath + @filename + '.rar ' +@filestr


EXEC master..xp_cmdshell @cmd
GO

Page 20 of 38
09. EXPORT/IMPORT TABLE ke TABLE, dlm 1 server atau ke server lain-nya.

Page 21 of 38
Page 22 of 38
Page 23 of 38
Page 24 of 38
10. EXPORT TABLE ke XLS

Page 25 of 38
11. IMPORT XLS to TABLE

Page 26 of 38
UPDATE Salary SET tgl_lhr2 = CONVERT(smalldatetime, tgl_lhr, 103)

Page 27 of 38
12. LOKASI FILE DATABASE

Page 28 of 38
13. DETACH (melepaskan) FILE DATABASE

Page 29 of 38
14. ATTACH (mencantelkan) FILE DATABASE

Page 30 of 38
Page 31 of 38
15. BACK-UP (manual) FILE DATABASE

Page 32 of 38
Page 33 of 38
16. RESTORE (manual) FILE DATABASE, ke database baru atau database itu sendiri.

Page 34 of 38
Page 35 of 38
Page 36 of 38
Page 37 of 38
Page 38 of 38

You might also like