Rabu, 24 Juli 2013

Cara Mengatasi Masalah Komputer Tidak Bisa Masuk Ke Windows

Dalam postingan ini saya akan coba membahas tentang mengapa komputer gagal masuk ke Windows.
Ketika komputer baru menyala dan tidak mau masuk ke windows dengan tulisan error atau hanya menampilkan blue screen, bisa disebabkan oleh banyak hal, antara lain :

1. Ada file dalam Sistem operasi Windows yang tidak sengaja terhapus
2. Ada virus, spyware atau trojan yang ikut ‘loading’ ketika komputer startup
3. Ada file (driver) rusak yang rusak, dan ketika dibaca oleh Windows gagal
4. Ada kerusakan pada hardware, terutama pada memori komputer atau harddisk
5. Sistem operasi Windows rusak atau belum selesai diinstalasi
6. Ada setting BIOS yang di-setting tidak benar atau baru diubah
Berikut adalah solusi untuk menghadapi masalah-masalah di atas yang bisa anda lakukan.
1. Startup dengan menggunakan metode ’safe mode’ (tekan F8 atau F5 ketika komputer pertama kali mau masuk ke Windows, lalu pilih ’safe mode’). Kalau komputer berhasil masuk ke Windows berarti ada ‘loading’ yang tidak bisa dibaca oleh Windows secara benar. Matikan ‘loading’ tersebut dengan menggunakan perintah ‘msconfig’ pada bagian startup (panggilnya di start>run>msconfig)
2. Kalau komputer tidak bisa masuk ke Windows, cara termudah adalah repair Windows. Caranya adalah masukkan CD instalasi Windows, lalu ubah BIOS untuk startup lewat CD/DVD-ROM, setelah instalasi masuk ke bagian install Windows, pilihan opsi repair Windows. Anda bisa menginstall ulang Windows ke folder baru atau menformat harddisk bila ternyata repair Windows gagal.
3. Pastikan bahwa Anda tidak mengubah setting BIOS sebelumnya, kalau ada Anda sebaiknya mengembalikannya seperti semula, kalau lupa sebaiknya pilih opsi ‘Loading BIOS default’.
4. Bila langkah-langkah di atas gagal semua, kemungkinan ada kerusakan pada hardware. Kerusakan pada umumnya terletak pada memori dan harddisk. VGA dan mainboard mungkin juga bisa rusak, tapi kemungkinannya sangat kecil.
5. Kerusakan driver VGA card bisa juga menyebabkan Windows tidak bisa masuk. Kalau hal itu terjadi, Anda harus startup di mode ’safe mode’ lalu uninstall driver VGA yang rusak terlebih dahulu, dan baru install kembali driver VGA yang benar ketika masuk ke Windows secara normal.
Itulah langkah-langkah pertama yang bisa anda lakukan untung mengatasi error saat masuk windows baik itu blue screen atau yang lainnya. Jika masih saja bermasalah yang bisa anda lakukan adalah install ulang windows atau bawa ke tukang service.

Minggu, 21 Juli 2013

FUNGSI STRING PADA PASCAL

Pascal adalah sebuah bahasa pemograman tempo dulu. Mungkin itu saja yang dapat
saya definiskan, karena saya yakin pembaca lebih tahu mengenai definisi lengkap dari
Pascal. Saya ingin berbagi ilmu walaupun cuma sedikit tentang pemograman dengan
Pascal.
Melalui tulisan ini, saya mencoba untuk mengulas program, prosedur dan fungsi
menarik yang bisa Anda coba dan terapkan dalam pemograman Pascal.
Beberapa yang dapat saya sampaikan, diantaranya:
1. Fungsi-fungsi String
2. Fungsi-fungsi Date
3. Fungsi-fungsi Konversi
4. Program Permainan
Semoga bahasan ini menjadi menarik dan bermanfaat untuk Anda semua.
FUNGSI-FUNGSI STRING
Berikut ini adalah fungsi-fungsi untuk memanipulasi data String. Jalankan aplikasi
Pascal Anda, ketikkan kode berikut:
PROGRAM MANIPULASISTRING;
USES CRT;
a. Lower Case
Fungsi ini akan mengubah string yang diinputkan menjadi Lower Case (huruf kecil).
Ketikkan fungsi berikut ini:
b. Upper Case
Fungsi ini akan mengubah string yang diinputkan menjadi Upper Case (huruf besar).
Ketikkan fungsi berikut ini:
c. Proper Case
Fungsi ini akan mengubah string yang diinputkan menjadi Proper Case (huruf besar
untuk huruf awal setiap kata). Ketikkan fungsi berikut ini:

FUNCTION LCASE(S:STRING):STRING;
VAR I:INTEGER;
BEGIN
FOR I:= 1 TO LENGTH(S) DO
IF (S[I] >= 'A') AND (S[I] <= 'Z') THEN
INC(S[I], 32);
LCASE := S;
END;
FUNCTION UCASE(S:STRING):STRING;
VAR I:INTEGER;
BEGIN
FOR I:= 1 TO LENGTH(S) DO
IF (S[I] >= 'a') AND (S[I] <= 'z') THEN
DEC(S[I], 32);
UCASE := S;
END;

Untuk mencoba fungsi-fungsi di atas, ketikkan program utama sebagai berikut:
{program utama}
BEGIN
CLRSCR;
WRITE(LCASE('Created By vian sastra '));
WRITE(UCASE('Created By vian sastra '));
WRITE(PCASE('Created By vian sastra '));
READLN;
END.

Lihatlah tampilan pada layar monitor Anda!
Baris pertama, tiap kata ditulis dengan huruf kecil, baris ke-2 tiap kata ditulis dengan
huruf besar, dan baris ke-3, tiap kata hanya huruf awal saja yang ditulis dengan huruf
besar.
FUNCTION PCASE(S:STRING):STRING;
VAR I, J:INTEGER;
BEGIN
IF (S[1] >= 'a') AND
(S[1] <= 'z') THEN
DEC(S[1], 32);
FOR I:= 2 TO LENGTH(S) DO
IF (S[I] >= 'A') AND
(S[I] <= 'Z') THEN
INC(S[I], 32);
FOR I:= 2 TO (LENGTH(S)-1) DO
IF (S[I] = ' ') THEN
BEGIN
J := I;
IF (S[J + 1] >= 'a') AND
(S[J + 1] <= 'z') THEN
DEC(S[J + 1], 32);
END;
PCASE := S;
END;

FUNGSI-FUNGSI DATE
Berikut ini adalah fungsi-fungsi untuk memanfaat sistem date dari unit Dos, untuk
menampilkan tanggal atau hari sesuai data pada sistem komputer. Jalankan aplikasi
Pascal Anda, ketikkan kode berikut:

PROGRAM TAMPILTANGGAL;
USES CRT, DOS;
(* FUNGSI UNTUK MENGKONVERSI
NILAI INTEGER MENJADI STRING *)
FUNCTION INTTOSTR(I: LONGINT): STRING;
VAR
S: STRING[12];
BEGIN
STR(I, S);
INTTOSTR := S;
END;

a. Menampilkan Tanggal Sistem
Fungsi ini akan menampilkan tanggal dari sistem komputer Anda.
b. Menampilkan Nama Hari
Fungsi ini akan menampilkan tanggal dari sistem komputer Anda.

FUNCTION TANGGAL:STRING;
VAR
Y, M, D, DOW : Word;
BEGIN
GETDATE(Y,M,D,DOW);
TANGGAL := INTTOSTR(D) + '-'
+ INTTOSTR(M) + '-' + INTTOSTR(Y);
END;
FUNCTION HARI_INI:STRING;
CONST
DAYS : ARRAY [0..6] OF STRING[9] =
('MINGGU','SENIN','SELASA',
'RABU','KAMIS','JUMAT',
'SABTU');
VAR
Y, M, D, DOW : Word;
BEGIN
GETDATE(Y,M,D,DOW);
HARI_INI := 'HARI INI : ' + DAYS[DOW] + ', ';
END;

Untuk mencoba fungsi-fungsi di atas, ketikkan program utama sebagai berikut:
(* program utama *)
BEGIN
CLRSCR;
WRITELN(HARI_INI, TANGGAL);
READLN;
END.
Lihatlah tampilan pada layar monitor Anda!

FUNGSI-FUNGSI KONVERSI
Berikut ini adalah fungsi-fungsi untuk mengkonversi suatu nilai ke nilai lain. Jalankan
aplikasi Pascal Anda, ketikkan kode berikut:

PROGRAM KONVERSI;
USES CRT, STRINGS;
VAR MASUKAN : INTEGER;
(* FUNGSI UNTUK MENGKONVERSI
NILAI {INTEGER} MENJADI STRING *)
FUNCTION INTTOSTR(I: LONGINT): STRING;
VAR
S: STRING;
BEGIN
STR(I, S);
INTTOSTR := S;
END;

a. Konversi Desimal ke Angka Romawi
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke angka Romawi. Contoh:
1234 menjadi: MCCXXXIV.
(* FUNGSI UNTUK MENGKONVERSI
BILANGAN DESIMAL MENJADI ANGKA ROMAWI*)
FUNCTION CONVROMAN(INTANGKA : INTEGER): STRING;
VAR
I: INTEGER;
INTSERIBU, INTLIMARATUS : INTEGER;
INTSERATUS, INTLIMAPULUH : INTEGER;
INTSEPULUH, INTLIMA, INTSATU : INTEGER;
STRSERIBU, STRLIMARATUS :STRING;
STRSERATUS, STRLIMAPULUH : STRING;
STRSEPULUH, STRLIMA, STRSATU : STRING;
STRROMAWI : STRING;
BEGIN
I := 0;
STRROMAWI :='';INTSERIBU := 0;
INTLIMARATUS := 0;INTSERATUS := 0;
INTLIMAPULUH := 0;INTSEPULUH := 0;
INTLIMA := 0;INTSATU := 0;
STRSERIBU :='';STRLIMARATUS :='';
STRSERATUS :='';STRLIMAPULUH :='';
STRSEPULUH :='';STRLIMA :='';
STRSATU :='';
(*===============================*)
INTSATU := INTANGKA;
INTSERIBU := INTANGKA DIV 1000;
INTSATU := INTSATU - (INTSERIBU * 1000);
INTLIMARATUS := INTSATU DIV 500;
INTSATU := INTSATU - (INTLIMARATUS * 500);
INTSERATUS := INTSATU DIV 100;
INTSATU := INTSATU - (INTSERATUS * 100);
INTLIMAPULUH := INTSATU DIV 50;
INTSATU := INTSATU - (INTLIMAPULUH * 50);
INTSEPULUH := INTSATU DIV 10;
INTSATU := INTSATU - (INTSEPULUH * 10);
INTLIMA := INTSATU DIV 5;
INTSATU := INTSATU - (INTLIMA * 5);
(*=================================*)
FOR I := 0 TO INTSERIBU-1 DO
STRSERIBU := STRSERIBU + 'M';
IF INTSERATUS <> 4 THEN
FOR I := 0 TO INTLIMARATUS-1 DO
STRLIMARATUS := STRLIMARATUS + 'D';
FOR I := 0 TO INTSERATUS-1 DO
STRSERATUS := STRSERATUS + 'C';
IF INTSERATUS = 4 THEN
IF INTLIMARATUS = 1 THEN
STRSERATUS := STRROMAWI + 'CM'
ELSE
STRSERATUS := STRROMAWI + 'CD';
IF INTSEPULUH <> 4 THEN
FOR I := 0 TO INTLIMAPULUH-1 DO
STRLIMAPULUH := STRLIMAPULUH + 'L';
FOR I := 0 TO INTSEPULUH-1 DO
STRSEPULUH := STRSEPULUH + 'X' ;
IF INTSEPULUH = 4 THEN
IF INTLIMAPULUH = 1 THEN
STRSEPULUH := STRROMAWI + 'XC'
ELSE
STRSEPULUH := STRROMAWI +'XL';
IF INTSATU <> 4 THEN
FOR I := 0 TO INTLIMA-1 DO
STRLIMA := STRLIMA + 'V';
FOR I := 0 TO INTSATU-1 DO
STRSATU := STRSATU + 'I' ;
IF INTSATU = 4 THEN
IF INTLIMA = 1 THEN
STRSATU := STRROMAWI + 'IX'
ELSE
STRSATU := STRROMAWI +'IV';
STRROMAWI := STRSERIBU + STRLIMARATUS
+ STRSERATUS + STRLIMAPULUH
+ STRSEPULUH + STRLIMA + STRSATU;
CONVROMAN := STRROMAWI;
END;
b. Konversi Desimal ke Binear
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke basis Binear. Contoh:
123 menjadi: 1111011.
FUNCTION BINEAR(INTANGKA : INTEGER): STRING;
VAR
INTNILAI :LONGINT;
INTLEN :INTEGER;
J :INTEGER;
STRHASIL :STRING;
STREND :STRING[1];
STRSUB : STRING;
BEGIN
STRHASIL := '';
STREND := '';
STRSUB := '';
REPEAT
INTNILAI := INTANGKA MOD 2;
INTANGKA := INTANGKA DIV 2;
STRHASIL := STRHASIL + IntToStr(INTNILAI);
UNTIL INTANGKA = 1;
INTLEN := LENGTH(STRHASIL);
STREND := IntToStr(INTANGKA);
FOR J := INTLEN DOWNTO 1 DO
STRSUB := STRSUB + COPY(STRHASIL, J, 1);
BINEAR := STREND + STRSUB;
END;
c. Konversi Desimal ke Hexadecimal
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke basis Hexadecimal.
Contoh: 123 menjadi: 7B.
FUNCTION HEXADEC(INTANGKA : INTEGER): STRING;
VAR
INTNILAI :LONGINT;
INTLEN :INTEGER;
J :INTEGER;
STRHASIL :STRING;
STRHEXA :STRING;
STREND :STRING[1];
STRSUB :STRING;
BEGIN
STRHASIL := '';
STRHEXA := '';
STRSUB := '';
STREND := '';
REPEAT
INTNILAI := INTANGKA MOD 16;
INTANGKA := INTANGKA DIV 16;
CASE INTNILAI OF
10: STRHEXA := 'A';
11: STRHEXA := 'B';
12: STRHEXA := 'C';
13: STRHEXA := 'D';
14: STRHEXA := 'E';
15: STRHEXA := 'F';
ELSE
STRHEXA := IntToStr(INTNILAI);
END;
STRHASIL := STRHASIL + STRHEXA;
UNTIL INTANGKA < 16;
INTLEN := LENGTH(STRHASIL);
STREND := IntToStr(INTANGKA);
FOR J := INTLEN DOWNTO 1 DO
STRSUB := STRSUB + COPY(STRHASIL, J, 1);
HEXADEC := STREND + STRSUB;
END;
d. Konversi Desimal ke Nominal
Fungsi ini akan mengkonversi suatu nilai bilangan (decimal) ke huruf nominal. Contoh:
123 menjadi: Seratus duapuluh tiga.
Function DlmHuruf(Var nHuruf:String):String;
Begin
If nHuruf ='1' Then DlmHuruf:='satu' Else
If nHuruf ='2' Then DlmHuruf:='dua' Else
If nHuruf ='3' Then DlmHuruf:='tiga' Else
If nHuruf ='4' Then DlmHuruf:='empat' Else
If nHuruf ='5' Then DlmHuruf:='lima' Else
If nHuruf ='6' Then DlmHuruf:='enam' Else
If nHuruf ='7' Then DlmHuruf:='tujuh' Else
If nHuruf ='8' Then DlmHuruf:='delapan' Else
If nHuruf ='9' Then DlmHuruf:='sembilan' Else
DlmHuruf:=' ';
End;
{-------------------------------------------}
Function Terbilang(Angka:LongInt):String;
var
ChrS : Array[1..10] of String;
StrT : Array[1..10] of String;
Huruf:String;Indeks,Panjang:Integer;
Begin
Huruf:=''; Panjang:=0;
For Indeks := 1 to 10 do begin
ChrS[Indeks]:='';
StrT[Indeks]:='';End;
Panjang:=Length(IntToStr(Angka));
For Indeks := 1 to Panjang do
ChrS[Indeks] :=
Copy(IntToStr(Angka),
(Panjang-(Indeks-1)),1);
If ChrS[8] ='0' Then
Begin
StrT[8] :='';
StrT[7]:=DlmHuruf(ChrS[7]) + 'juta ';
End
Else If ChrS[8] ='1' Then
Begin
StrT[8]:='';
If ChrS[7] = '0' Then
StrT[7]:='Sepuluh juta ' Else
If ChrS[7] = '1' Then
StrT[7]:='Sebelas juta ' Else
StrT[7]:= DlmHuruf(ChrS[7]) +
'belas juta';
End
Else If ChrS[8] >'1' Then
Begin
StrT[7]:=DlmHuruf(ChrS[7]) + 'juta ';
StrT[8]:=DlmHuruf(ChrS[8]) + 'puluh ';
End;
Begin
End;
If ChrS[6] = '0' Then
StrT[6]:=''
Else
Begin
If ChrS[6] <> '1' Then
StrT[6]:=DlmHuruf(ChrS[6]) + 'ratus '
Else
StrT[6]:='Seratus ';
End;
If ChrS[5] = '0' Then
Begin
StrT[5]:='';
If ChrS[4] = '1' Then
StrT[4]:= 'Seribu '
Else
StrT[4] := DlmHuruf(ChrS[4]) + 'ribu ';
End
Else If ChrS[5] = '1' Then
Begin
StrT[5]:='';
If ChrS[4] = '0' Then
StrT[4]:='Sepuluh ribu ' Else
If ChrS[4] = '1' Then
StrT[4]:='Sebelas ribu ' Else
StrT[4]:= DlmHuruf(ChrS[4]) +
'belas ribu ';
End
Else
Begin
StrT[4]:=DlmHuruf(ChrS[4]) + 'ribu ';
StrT[5]:=DlmHuruf(ChrS[5]) + 'puluh ';
End;
If ChrS[3] = '0' Then
StrT[3]:=''
Else If ChrS[3] ='1' Then
StrT[3]:='Seratus '
Else If ChrS[3] > '1' Then
StrT[3]:=DlmHuruf(ChrS[3]) + 'ratus ';
{========================================}
If ChrS[2] = '0' Then
Begin
StrT[2]:='';
StrT[1]:=DlmHuruf(ChrS[1]);
End
Else If ChrS[2] ='1' Then
Begin
StrT[2]:='';
If ChrS[1] = '0' Then
StrT[1]:='Sepuluh' Else
If ChrS[1] = '1' Then
StrT[1]:='Sebelas' Else
StrT[1]:= DlmHuruf(ChrS[1]) +'belas';
End
Else If ChrS[2] > '1' Then
Begin
StrT[1]:=DlmHuruf(ChrS[1]);
StrT[2]:=DlmHuruf(ChrS[2])+'puluh ';
End;
For Indeks := 1 to 8 Do
If Panjang <= Indeks Then
StrT[Indeks + 1] :='';
For Indeks := 8 DownTo 1 Do
Huruf:=Huruf + StrT[Indeks];
Terbilang := Huruf;
Untuk mencoba fungsi-fungsi di atas, ketikkan program utama sebagai berikut:
(* program utama *)
BEGIN
CLRSCR;
WRITE ('MASUKAN ANGKA : ');
READLN(MASUKAN);
WRITELN('ROMAWI = ', CONVROMAN(MASUKAN));
WRITELN('BINEAR = ', BINEAR(MASUKAN));
WRITELN('HEXA = ','&H', HEXADEC(MASUKAN));
WRITELN('TERBILANG = ', TERBILANG(MASUKAN));
READLN
END.
Tampilan akhir program seperti gambar di bawah ini:

PROGRAM PERMAINAN
Berikut ini adalah contoh pembuatan sebuah program permainan, sulap angka. Program
ini akan menebak sebuah angka yang dipilih oleh seorang pemain, setelah menempuh
beberapa wizard. Jalankan Pascal dan ketikkan kode yang banyak ini:
PROGRAM SULAPANGKA;
USES CRT;
VAR I, J, K, L: INTEGER;
YT: CHAR;
NILAI:INTEGER;
FUNCTION CSTR(I: INTEGER): STRING;
VAR
S: STRING[11];
BEGIN
STR(I, S);
CSTR := S;
END;
PROCEDURE TULIS(POSISI:INTEGER; TEKS:STRING);
VAR A, B, C: INTEGER;
BEGIN
A := POSISI;
B := POSISI MOD 10;
C := 1;
IF B = 0 THEN
BEGIN B := 10;C := 0; END;
GOTOXY(B * 8 - 5,
(A DIV 10 + C) * 3 + 1);
WRITE(TEKS);
END;
(* Untuk symbol-symbol seperti : ÉÍÍ,
dapat Anda ganti dengan symbol: # atau lainnya *)
PROCEDURE BIKIN_KOTAK(KOLOM, BARIS: INTEGER);
BEGIN
CLRSCR;
FOR I:= 1 TO KOLOM DO
BEGIN
FOR J := 1 TO BARIS DO
BEGIN
GOTOXY (J * 8 - 7, (I * 3));
WRITE('ÉÍÍÍÍ»');
GOTOXY (J * 8 - 7, (I * 3 + 1));
WRITE('º º');
GOTOXY (J * 8 - 7, (I * 3 + 2));
WRITE('ÈÍÍÍͼ');
END;
END;
END;
PROCEDURE WIZARD7;
BEGIN
CLRSCR;
WRITELN('ANGKA YANG ANDA PILIH = ', NILAI);
WRITELN;
WRITE('INGIN MENGULANG (Y/ESC.)? ');READKEY;
YT := READKEY;
END;
PROCEDURE WIZARD6;
BEGIN
BIKIN_KOTAK(2, 10);
FOR I := 1 TO 19 DO
TULIS(I, CSTR(I + 31));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 32;
WIZARD7;
{===============================}
END;
PROCEDURE WIZARD5;
BEGIN
BIKIN_KOTAK(2, 10);
FOR I := 1 TO 16 DO
TULIS(I, CSTR(I + 15));
FOR J := 17 TO 19 DO
TULIS (J, CSTR(J + 31));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
{===============================}
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 16;
WIZARD6;
END;
PROCEDURE WIZARD4;
BEGIN
BIKIN_KOTAK(3, 10);
FOR J := 0 TO 2 DO
FOR I := 1 TO 8 DO
TULIS(J * 8 + I, CSTR(J * 16 + I + 7));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 8;
WIZARD5;
{===============================}
END;
PROCEDURE WIZARD3;
BEGIN
BIKIN_KOTAK(3, 10);
FOR J := 0 TO 5 DO
FOR I := 1 TO 4 DO
TULIS(J * 4 + I, CSTR(J * 8 + I + 3));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T'];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 4;
WIZARD4;
{===============================}
END;
PROCEDURE WIZARD2;
BEGIN
BIKIN_KOTAK(3, 10);
J:=0;
FOR J := 0 TO 12 DO
FOR I := 1 TO 2 DO
TULIS(J * 2 + I, CSTR(J * 4 + I + 1));
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := NILAI + 2;
WIZARD3;
{===============================}
END;
PROCEDURE WIZARD1;
BEGIN
BIKIN_KOTAK(3, 10);
L:= 1;
REPEAT
TULIS ((L + 1) DIV 2,CSTR(L));
L:= L + 2;
UNTIL L > 50;
GOTOXY (5, 15);
WRITE('APAKAH ANGKA YANG ANDA PILIH',
' ADA PADA DERETAN ANGKA DI ATAS (Y/T) ');
REPEAT
YT := READKEY;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
IF UPCASE(YT) = 'Y' THEN
NILAI := 1;
WIZARD2;
{===============================}
END;
PROCEDURE TULIS_NOMOR;
BEGIN
BIKIN_KOTAK(5, 10);
FOR K:= 1 TO 50 DO
TULIS(K, CSTR(K));
GOTOXY(1, 20);
WRITE ('PILIH SEBUAH ANGKA, ',
'TEKAN: Y, KALO MAU TERUS! ');
WRITE ('TEKAN ESC UNTUK KELUAR ');
REPEAT
YT := READKEY;
IF UPCASE(YT) = 'Y' THEN
BEGIN
NILAI := 0;
WIZARD1;
END;
UNTIL YT IN ['y', 'Y', 't', 'T', #27];
{===============================}
END;
(* Program Utama *)
BEGIN
CLRSCR;
TEXTATTR := $1F;
REPEAT
TULIS_NOMOR;
UNTIL YT = #27;

END.

3 BENTUK PERULANGAN DAN PENYELEKSIAN

Bab 3 Bentuk Perulangan & Penyeleksian Kondisi
Materi
1. Bentuk – bentuk Perulangan
Dalam hampir setiap program yang kompleks mutlak memerlukan suatu perulangan dan percabangan. Tujuan perulangan disini adalah untuk mengulang statement atau blok statement berulang kali sesuai
sejumlah yang ditentukan pemakai. Dalam materi ini akan memberikan gambaran konsep dasar dari pengertian diatas.

a) Perulangan For.
Perulangan dengan statemen For digunakan untuk mengulang statemen atau suatu blok statemen berulang kali. Perulangan dengan statemen For dapat berupa perunlangan positif dan perulangan negatif.

• Perulangan For positif
contoh : perulangan positif untuk satu statement :
Uses Crt;
Var
i : Integer;
Begin
For i := 1 To 5 Do Writeln ('I Love Dinda’);
END.
Maka bila program diatas dicompile
hasilnya :
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
Penjelasan : Berati statemen I Love Dinda akan diulang sebanyak 5 kali yaitu dengan menghitung nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5.

# Contoh dengan menggunakan blok statement: cara penulisannya dengan pada awal blok diawali dengan Begin dan pada akhir blok diakhiri dengan End;
Uses Crt;
Var
i : Integer;
Begin
For i:= 1 To 10 Do
Begin
Writeln ('I Love Dinda'); { blok statement }
End;
End.
Hasil yang akan didapat akan sama dengan contoh yang pertama, tapi yang harus diingat disini untuk penggunaan blok pada perulangan For biasanya mempunyai banyak statement [lebih dari 1 statement]
# Contoh 3 : Penggunaan perulangan For dalam blok statement untuk membuat tabel
Uses Crt;
Var
a,b,c : Integer;
bagi : Real;
Begin
Writeln('----------------------------------------------');
Writeln(' a a*a a*a*a 1/a ');
Writeln('----------------------------------------------');
For a := 1 To 10 Do
Begin
b:= a*a;
c:=a*a*a;
bagi := 1/a;
Writeln(a:4,c:10,d:10,bagi:12:3);
End;
Writeln ('----------------------------------------------');
End.
maka hasilnya :
----------------------------------------------
a a*a a*a*a 1/a
----------------------------------------------
1 1 1 1.000
2 4 8 0.500
3 9 27 0.333
4 16 64 0.250
5 25 125 0.200
6 36 216 0.167
7 49 343 0.143
8 64 512 0.125
9 81 729 0.111
10 100 1000 0.100
----------------------------------------------
• Perulangan For negatif : Perulangan negatif adalah perulangan dengan menghitung (counter) dari besar ke kecil.

Statement yang digunakan adalah For-DownTo-Do
contoh :
Uses Crt;
Var
i : Integer;
Begin
For i := 10 DownTo 1 Do Write (i:3);
End.
Hasil :
10 9 8 7 6 5 4 3 2 1

• Perulangan For tersarang
Perulangan For tersarang adalah perulangan For yang berada pada perulangan yang lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari nilai awalnya dan seterusnya.
Contoh :
Var
a,b : Integer;
Begin
For a := 1 To 3 Do
Begin
For b := 1 To 2 Do Write (a :4,b:2);
Writeln;
End;
End.
Hasil :
1 1 1 2
2 1 2 2
3 1 3 2

• Perulangan While - Do
Penyeleksian kondisi digunakan untuk agar program dapat menyeleksi kondisi, sehingga program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari kondisi yang diseleksi tersebut. Perulangan While – Do tidak dilakukan jika kondisi tidak terpenuhi.
Contoh :
Uses Crt;
Var i : Integer;
Begin
i := 0;
While < 5 do
Begin
Write (i:3);
Inc (i); { sama dengan i:=i+1 }
End;
End.
Hasilnya :
0 1 2 3 4
• Perulangan While – Do tersarang
Perulangan While – Do tersarang (nested While - Do) merupakan perulangan While – Do yang satu di dalam perulangan While – Do yang lainnya.
Contoh :
Uses Crt;
Var
a, b : Integer;
Begin
ClrScr;
a:=1;
b:=1;
While a < 4 Do{ loop selama a masih lebih kecil dari 4 }
Begin
a := a+1;
While b < 3 Do{ loop selama b masih lebih kecil dari 3 }
Begin
Write (a:3,b:2);
b:=b+1;
End;
End;
Readln;
End.

• Perulangan Repeat - Until.
Repeat – Until digunakan untuk mengulang statement-statemen atau blok statement sampai (Until) kondisi yang diseleksi di Until tidak terpenuhi.
Sintak dari statement ini adalah :
Contoh :
Var
i : Integer;
Begin
i:=0;
Repeat
i:= i+1;
Writeln (i);
Until i=5;
End.
hasil :
1
2
3
4
5

• Repeat – Until tersarang
Repeat – Until tersarang adalah suatu perulangan Repeat - Until yang satu berada didalam perulangan Repeat – Until yang lainnya.
Contoh :
Var
a,b,c : Real;
Begin
Writeln('========================================');
Writeln(' sisi A sisi B Sisi C ');
Writeln (' =======================================');
a:= 1;
Repeat { perulangan luar }
b := 0;
Repeat{ perulangan dalam }
c:=Sqrt (a*a+b*b);
Writeln (a:6:2, b:9:2, c:9:2);
b:=b+5;
Until b>25; { berhenti jika b lebih besar dari 5 untuk
perulangan dalam }
a:=a+1;
Until a>3; { berhenti jika a lebih besar dari 3 untuk
perulangan luar }
Writeln(' =======================================');
End.

• Percabangan

If - Then
Bentuk struktur If – Then adalah sebagai berikut :
If Kondisi Then Statement
Ungkapan adalah kondisi yang diseleksi oleh statement If. Bila kondisi yang diseleksi terpenuhi, maka statement yang mengikuti Then akan diproses, sebaliknya bila kondisi tidak terpenuhi, maka yang akan diproses statement berikutnya.
Misalnya :
If Pilihan = 2 Then
Begin{ jika kondisi terpenuhi, Yaitu jika pilihan = 2 }
......
......
End
Else{ jika kondisi tidak terpenuhi, yaitu jika pilhan tidak sama dengan 2}
Begin
.......
.......
End;
Contoh Program :
Uses Crt;
Var
Nilai : Real;
Begin
Write ('Jumlah Nilai :');
Readln (nilai); { Pemasukan data }
If nilai > 60 Then { seleksi kondisi variabel nilai }
Writeln('Lulus') { Dilaksanakan jika nilai lebih besar dari 60 }
Else
Writeln('Tidak lulus'); { Dilaksanakan jika variabel nilai lebih kecil dari 60 }
End.
Hasil :
Jika kita Memasukan 40 pada varibel nilai, Maka program diatas akan mencetak Tidak lulus.

 If tersarang (nested If)
Struktur If tersarang merupakan bentuk dari suatu statement If berada di dalam lingkungan statemen If yang lainya. Bentuk statement If tersarang sebagai berikut :

If kodisi1 Then atau If Kondisi1 Then
If kondisi2 Then Begin
statemen1 IF kondisi2 Then
Else statemen1
statemen2; Else
statemen2
End;

 Case - Of
Struktur Case – Of mempunyai suatu ungkapan logika yang disebut dengan selector dan sejumlah statemen yang diawali dengan suatu label permasalahan (case label) yang mempunyai tipe sama dengan selector.
Statement yang mempunyai case label yang bernilai sama dengan case label yang bernilai sama dengan nilai selector akan diproses sedang statemen yang lainya tidak.
Bentuk struktur dari Case - Of:
Case Variabel Kondisi Of
Case – Label 1; Statement 1;
Case – Label 2; Statement 2;
Case – Label 3; Statement 3;
Case – Label 4; Statement 4;
........
........
Case – Label n ; Statement n ;
End ; { end dari case }

Daftar Case label dapat berupa konstanta, range dari konstanta yang bukan bertipe real.
Contoh program ;
Program nilai;
Var
nil : Char ;
Begin
Write ('Nilai Numerik yang didapat :');
Readln (nil);
Case nil Of
'A': Writeln ('Sangat Baik’);
'B': Writeln('Baik’);
'C': Writeln('Cukup');
'D': Writeln('Kurang');
'E': Writeln('Sangat Kurang');
End;
End.
hasil : Nilai Numerik yang didapat : B Input Baik
Contoh Listing Program untuk Dicoba
1. Program input data dengan array.
Program Pemakaian_Array_Untuk_10_data_dengan_menggunakan_For;
Uses Crt;
Const
garis='------------------------------------------------------';
Var
nil1,nil2 : Array [1..10] Of 0..100; {Array dgn Type subjangkauan}
npm : Array [1..10] Of String [8];
nama : Array [1..10] Of String [15];
n,i,bar : Integer;
jum : Real;
tl : Char;
Begin
ClrScr;
{ pemasukan data dalam array }
Write ('Mau Isi Berapa Data:');
Readln (n);
For i:= 1 To n Do
Begin
ClrScr;
GotoXY(30,4+1); Write('Data Ke-:',i:2);
GotoXY(10,5+i); Write('NPM :'); Readln (npm[i]);
GotoXY(10,6+i); Write('Nama :'); Readln (nama[i]);
GotoXY(10,7+i); Write('Nilai 1 :'); Realdn(nil 1[i]);
GotoXY(10,8+i); Write('Nilai 2 :'); Readln(nil 2[i]);
End;
{ proses data dalam array }
ClrScr;
GotoXY(5,4); Write(Garis);
GotoXY(5,5); Write ('No');
GotoXY(9,5); Write ('NPM');
GotoXY(18,5); Write ('Nama');
GotoXY(34,5); Write ('Nilai 1');
GotoXY(41,5); Write ('Nilai 2');
GotoXY(47,5); Write ('Rata');
GotoXY(54,5); Write ('Abjad’);
GotoXY(5,6); Write (Garis);
{ proses Cetak isi array dan seleksi kondisi }
bar := 7;
For i:= 1 To n Do
Begin
jum:=(nil1[i]+nil2[i])/2;
If jum>= 90 Then tl:='A'
Else
If jum>80 Then tl:='B'
Else
If jum>60 then tl:='C'
Else
If jum 50 Then tl:='D'
Else
tl:='E';
{ cetak hasil yang disimpan di array dan hasil }
{ penyeleksian kondisi }
GotoYX(5,bar); Writeln(i:2);
GotoYX(9,bar); Writeln (NPM[i]);
GotoYX(18,bar); Writeln (NAMA[i]);
GotoYX(34,bar); Writeln (NIL1[i]:4);
GotoYX(41,bar); Writeln (NIL2[i]:4);
GotoYX(47,bar); Writeln (jum:5:1);
GotoYX(54,bar); Writeln (tl);
bar:=bar+1;
End;
GotoXY(5,bar+1);Writeln(garis);
Readln;
End.
2. Program jendela bergerak.
Program Window_Bergerak_dgn_delay;
Uses Crt;
Var i : Integer;
Begin
For i:=1 To 15 Do
Begin
Sound (i*100);
Delay (100);
NoSound;
End;
TextBackGround(black);
ClrScr;
For i := 1 To 9 Do
Begin
TextBackGround(white);
Window (42-i*4,10-i,38+i*4,15+i);
ClrScr;
Delay(100);
End;
TextColor(15);
GotoXY(28,2);Writeln('c');
GotoXY (8,3); Writeln ('3');
GotoXY (28,4); Writeln ('A');
TextColor(black);
GotoXY (44,3); Writeln ('3');
GotoXY (44,2); Writeln ('&');
TextColor (29,4); Writeln ('U');
TextColor (red*25);
GotoXY (30,3); Writeln ('B E L A J A R');
TextColor (black);
GotoXY (5,5); Write('c');
For i := 6 To 64 Do
Begin
GotoXY (i,5); Writeln ('');
End;
For i := 6 To 20 Do
Begin
GotoXY(5,i); Writeln('3 ');
End;
GotoXY (5,21); Writeln (' ');
TextColor(white);
GotoXY(65,5); Write('U');
For i := 6 To 65 Do
Begin
GotoXY (i,21); Writeln(' `);
End;
For i := 6 To 20 Do
Begin
GotoXY(65,i); Writeln('3');
End;
GotoXY (65,21); Writeln ('c');
TextColor(yellow);
Readln;
End.
Soal Latihan
Buatlah program untuk soal dibawah ini dengan tampilan sebagus mungkin (gunakan perintah Window, Textcolor dll). Jumlah suku sesuai dengan input dari keyboard.
1. Buat deret hitung 3,7,11,15,......................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
2. Buat deret ukur 3,9,27,................................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
3. Buat tabel deret bergoyang 1,-2,4,-8,...........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
4. Buat deret suku harmonis 1,1/2,1/3,.............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
5. Buat deret fibbonaci 1,1,2,3,5,.....................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
6. Buat deret seperti berikut 1,-2,3,-4,.............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
7. Buat deret kuadrat 1, 4, 9,............................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
8. Buat deret seperti berikut 100, 90, 70 ,...........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
9. Buat deret seperti berikut 256, 196, 144,............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
10. Buat deret seperti berikut 1, 1, 1, 2, 2, 3, 6, 4, 24, 5..........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
11. Buatlah program untuk mencari faktorial, sesuai dengan input yang diminta.

12. Buatlah program huruf yang berjatuhan sehingga membentuk suatu kalimat yang telah diinput dari keyboard .

Contoh Program Pascal If Perhitungan Gaji


Ketentuan Soal :
1. Nama Di input
2. Jabatan di input ,
Jabatan        Gaji             Tunjangan
Direktur       3000000     10 % dari gaji
Manager        2000000    5% dari gaji
Karyawan       1000000    2% dari gaji
OB                 800000        1% dari gaji

3. Dikenakan PPN 10 % dari gaji
4. Gaji Bersih didapat dari : gaji + tunjangan – PPn
 
Jawabannya:

Uses crt;
Var nama:string[20];jabatan:string;
Gaji:longint;
Tunj,ppn,gajibersih:real;
Begin
Clrscr;
Write(‘Nama Karyawan     : ‘); readln(nama);
Write(‘Masukkan Jabatan  : ‘); readln(jabatan);
If  (jabatan=’Direktur’) or (jabatan=’direktur’) then
     Begin
 Gaji:=3000000;
 Tunj:=0.1* gaji;
     End
Else If  (jabatan=’Manager’) or (jabatan=’manager’) then
     Begin
 Gaji:=2000000;
 Tunj:=0.05* gaji;
     End
Else If  (jabatan=’Karyawan’) or (jabatan=’karyawan’) then
     Begin
 Gaji:=1000000;
 Tunj:=0.1* gaji;
     End
Else
     Begin
 Gaji:=800000;
 Tunj:=0.1* gaji;
     End;
Writeln(‘Gaji Bersih      : Rp.‘,gaji);
Writeln(‘Tunjangan Jabatan      : Rp.‘,tunj:9:2);
Ppn:=0.1*gaji;
Writeln(‘PPN 10 %      :  Rp.‘,ppn:9:2);
Total:=(gaji+total)-ppn;
Writeln(‘Total Gaji   :  Rp.‘,total:9:2);
Readln;

End.

Membuat Form master dan child VB.NET

Pada modul sebelumnya kita telah belajar bagaimana menggunakan DataViewManager untuk menampilkan data dalam DataGrid yang memiliki Relasi antara DataTable Master dan Child.
Pada Modul ini kita masih akan bekerja dengan DataViewManager untuk keperluaan pembuatan Form Entry data dalam bentuk Master dan Child.
Contoh hasil Master dan Detail yang ditampilkan pada DataGrid1.

Mempersiapkan data source

Dalam hal ini kita akan membuka koneksi dan mempersiapkan DataSet, membuat Relation antara master DataTable dan child, serta membuat DataViewManager. Akhirnya di binding ke DataGrid.
    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn)
        ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn)
        ODABarang.Fill(ODS, "Barang")
        ODAPelanggan.Fill(ODS, "Pelanggan")
        'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child)
        ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar"))
        'Membuat DataViewManager untuk DataSet
        ODVM = New DataViewManager(ODS)
        'Binding DataViewManager ke DataGrid, DataTable Barang
        Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.KodeBar"))
        Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Keterangan"))
        Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Satuan"))
        Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Harga"))
        DataGrid1.SetDataBinding(ODVM, "Barang.PelangganBarang")
    End Sub

MoveFirst, Previous, Next dan Last

    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
        Me.BindingContext(ODVM, "Barang").Position = 0
    End Sub
    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
        Me.BindingContext(ODVM, "Barang").Position = ODVM.DataSet.Tables("Barang").Rows.Count
    End Sub
    Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click
        Me.BindingContext(ODVM, "Barang").Position -= 1
    End Sub
    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        Me.BindingContext(ODVM, "Barang").Position += 1
    End Sub

Add, Update, Delete dan Cancel

    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        Me.BindingContext(ODVM, "Barang").AddNew()
    End Sub
    Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpd.Click
        Me.BindingContext(ODVM, "Barang").EndCurrentEdit()
    End Sub
    Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCnc.Click
        Me.BindingContext(ODVM, "Barang").CancelCurrentEdit()
    End Sub
    Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click
        If (Me.BindingContext(ODVM, "Barang").Count > 0) Then
            Me.BindingContext(ODVM, "Barang").RemoveAt(Me.BindingContext(ODVM, "Barang").Position)
        End If
    End Sub

Update data ke data source

Karena DataSet terdiri dari dua tabel, maka kita perlu mengupdatenya satu-persatu  melalui DataAdapter masing-masing.
    Private Sub Form4_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim oleCB As New OleDbCommandBuilder(ODABarang)
        Dim oleCP As New OleDbCommandBuilder(ODAPelanggan)
 'Update ke masing-masing data source
        ODABarang.Update(ODS, "Barang")
        ODAPelanggan.Update(ODS, "Pelanggan")
    End Sub

Program Kongkrit

Imports System.Data.OleDb
Public Class Form4
    Inherits System.Windows.Forms.Form
    Dim Oledbconn As OleDbConnection
    Dim ODABarang As OleDbDataAdapter
    Dim ODAPelanggan As OleDbDataAdapter
    Dim ODS As New DataSet
    Dim ODVM As New DataViewManager
    Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn)
        ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn)
        ODABarang.Fill(ODS, "Barang")
        ODAPelanggan.Fill(ODS, "Pelanggan")
        'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child)
        ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar"))
        'Membuat DataViewManager untuk DataSet
        ODVM = New DataViewManager(ODS)
        'Binding DataViewManager ke DataGrid, DataTable Barang
        Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.KodeBar"))
        Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Keterangan"))
        Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Satuan"))
        Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("text", ODVM, "Barang.Harga"))
        DataGrid1.SetDataBinding(ODVM, "Barang.PelangganBarang")
    End Sub
    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
        Me.BindingContext(ODVM, "Barang").Position = 0
    End Sub
    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
        Me.BindingContext(ODVM, "Barang").Position = ODVM.DataSet.Tables("Barang").Rows.Count
    End Sub
    Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click
        Me.BindingContext(ODVM, "Barang").Position -= 1
    End Sub
    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        Me.BindingContext(ODVM, "Barang").Position += 1
    End Sub
    Private Sub Form4_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim oleCB As New OleDbCommandBuilder(ODABarang)
        Dim oleCP As New OleDbCommandBuilder(ODAPelanggan)
        ODABarang.Update(ODS, "Barang")
        ODAPelanggan.Update(ODS, "Pelanggan")
    End Sub
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        Me.BindingContext(ODVM, "Barang").AddNew()
    End Sub
    Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpd.Click
        Me.BindingContext(ODVM, "Barang").EndCurrentEdit()
    End Sub
    Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCnc.Click
        Me.BindingContext(ODVM, "Barang").CancelCurrentEdit()
    End Sub
    Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDel.Click
        If (Me.BindingContext(ODVM, "Barang").Count > 0) Then
            Me.BindingContext(ODVM, "Barang").RemoveAt(Me.BindingContext(ODVM, "Barang").Position)
        End If
    End Sub
End Class
1

Membuat master dan child VB.NET

Pada modul-modul sebelumnya kita telah bekerja dengan DataSet, DataTable, dan DataView. Pada modul ini kita akan bekerja dengan DataSet yang memiliki beberapa DataTable dan masing-masing DataTable dihubungkan (Relation) berdasarkan kolom tertentu.

Contoh hasil Master dan Detail yang ditampilkan pada DataGrid1.

Mempersiapkan data source

Dalam hal ini kita akan membuka koneksi dan mempersiapkan DataSet, membuat Relation antara master DataTable dan child, serta membuat DataViewManager. Akhirnya di binding ke DataGrid.
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data source=D:\BelajarVBnet\Belajar.mdb;")
        ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn)
        ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn)
        ODABarang.Fill(ODS, "Barang")
        ODAPelanggan.Fill(ODS, "Pelanggan")
        'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child)
        ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar"))
        'Membuat DataViewManager untuk DataSet
        ODVM = New DataViewManager(ODS)
        'Binding DataViewManager ke DataGrid, DataTable Barang
        DataGrid1.SetDataBinding(ODVM, "Barang")
    End Sub

Update data ke data source

Karena DataSet terdiri dari dua tabel, maka kita perlu mengupdatenya satu-persatu  melalui DataAdapter masing-masing.
    Private Sub Form3_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim oleCB As New OleDbCommandBuilder(ODABarang)
        Dim oleCP As New OleDbCommandBuilder(ODAPelanggan)
        'Update masing-masing DataSet 
        ODABarang.Update(ODS, "Barang")
        ODAPelanggan.Update(ODS, "Pelanggan")
    End Sub

Program Kongkrit

Imports System.Data.OleDb
Public Class Form3
    Inherits System.Windows.Forms.Form
    Dim Oledbconn As OleDbConnection
    Dim ODABarang As OleDbDataAdapter
    Dim ODAPelanggan As OleDbDataAdapter
    Dim ODS As New DataSet
    Dim ODVM As DataViewManager

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data source=D:\BelajarVBnet\Belajar.mdb;")
        ODABarang = New OleDbDataAdapter("Select * from Barang", Oledbconn)
        ODAPelanggan = New OleDbDataAdapter("Select * from Pelanggan", Oledbconn)
        ODABarang.Fill(ODS, "Barang")
        ODAPelanggan.Fill(ODS, "Pelanggan")
        'Buat Relation antara DataTable Barang (Master) dan Pelanggan (Child)
        ODS.Relations.Add("PelangganBarang", ODS.Tables("Barang").Columns("KodeBar"), ODS.Tables("Pelanggan").Columns("KodeBar"))
        'Membuat DataViewManager untuk DataSet
        ODVM = New DataViewManager(ODS)
        'Binding DataViewManager ke DataGrid, DataTable Barang
        DataGrid1.SetDataBinding(ODVM, "Barang")
    End Sub
    Private Sub Form3_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim oleCB As New OleDbCommandBuilder(ODABarang)
        Dim oleCP As New OleDbCommandBuilder(ODAPelanggan)
        'Update masing-masing DataSet 
        ODABarang.Update(ODS, "Barang")
        ODAPelanggan.Update(ODS, "Pelanggan")
    End Sub
End Class
1

Program Data Form Entry

Pada modul ini kita akan membuat Entry data dengan menggunakan DataView, yang dibinding pada masing-masing textbox.

Mempersiapkan data source

Dalam hal ini kita akan membuka koneksi dan mempersiapkan DataView, serta binding masing-masing textbox ke data field.
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        OleDbConn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        sSQL = "Select * From Barang"
        OleDbComm = New OleDbCommand(sSQL, OleDbConn)
        OleDA = New OleDbDataAdapter(OleDbComm)
        OleDA.Fill(ODS, "Barang")
        ODV = New DataView(ODS.Tables("Barang"))
        'Melakukan binding masing-masing textbox 
        Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "KodeBar"))
        Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Keterangan"))
        Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Satuan"))
        Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Harga"))
    End Sub

MoveFirst

    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
        Me.BindingContext(ODV).Position = 0
    End Sub

MovePrev

    Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click
        Me.BindingContext(ODV).Position -= 1
    End Sub

MoveNext

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        Me.BindingContext(ODV).Position += 1
    End Sub

MoveLast

    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
        Me.BindingContext(ODV).Position = ODV.Table.Rows.Count
    End Sub

AddNew

    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.BindingContext(ODV).AddNew()
        Me.Update()
    End Sub

Update

    Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.BindingContext(ODV).EndCurrentEdit()
    End Sub

Cancel

    Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.BindingContext(ODV).CancelCurrentEdit()
    End Sub

Delete

    Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If (Me.BindingContext(ODV).Count > 0) Then
            Me.BindingContext(ODV).RemoveAt(Me.BindingContext(ODV).Position)
        End If
    End Sub

Update data ke data source

Sesuatu hal yang harus anda pahami adalah bahwa perubahan pada DataView tidak secara langsung terupdate pada data source..
    Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim oleCommBuilder As New OleDbCommandBuilder(OleDA)
        OleDA.Update(ODS, "Barang")
    End Sub

Program Kongkrit


Imports System.Data.OleDb
Public Class Form2
    Inherits System.Windows.Forms.Form
    Dim OleDbConn As OleDbConnection
    Dim OleDbComm As OleDbCommand
    Dim OleDA As OleDbDataAdapter
    Dim ODS As New DataSet
    Dim ODV As DataView
    Dim sSQL As String
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        OleDbConn = New OleDbConnection("Provider=Microsoft.Jet.Oledb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        sSQL = "Select * From Barang"
        OleDbComm = New OleDbCommand(sSQL, OleDbConn)
        OleDA = New OleDbDataAdapter(OleDbComm)
        OleDA.Fill(ODS, "Barang")
        ODV = New DataView(ODS.Tables("Barang"))
        Me.TextBox1.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "KodeBar"))
        Me.TextBox2.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Keterangan"))
        Me.TextBox3.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Satuan"))
        Me.TextBox4.DataBindings.Add(New System.Windows.Forms.Binding("Text", ODV, "Harga"))
    End Sub
    Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
        Me.BindingContext(ODV).Position = 0
    End Sub
    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
        Me.BindingContext(ODV).Position = ODV.Table.Rows.Count
    End Sub
    Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click
        Me.BindingContext(ODV).Position -= 1
    End Sub
    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        Me.BindingContext(ODV).Position += 1
    End Sub
    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.BindingContext(ODV).AddNew()
        Me.Update()
    End Sub
    Private Sub btnUpd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.BindingContext(ODV).EndCurrentEdit()
    End Sub
    Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim oleCommBuilder As New OleDbCommandBuilder(OleDA)
        OleDA.Update(ODS, "Barang")
    End Sub
    Private Sub btnCnc_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.BindingContext(ODV).CancelCurrentEdit()
    End Sub
    Private Sub btnDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If (Me.BindingContext(ODV).Count > 0) Then
            Me.BindingContext(ODV).RemoveAt(Me.BindingContext(ODV).Position)
        End If
    End Sub
End Class

Program Sort, Filter dan Cari DI VB.NET

Anda tidak dapat mengurut, menfilter data yang terdapat pada DataTable, untuk melakukan hal tersebut anda membutuhkan DataView.
Dengan menggunakan DataView, anda dapat mengurut, menfilter dan mencari data berdasarkan sort key. Karena kemampuan tersebut, biasanya DataView digunakan pada aplikasi yang membutuhkan data binding.

Membuat DataView

Misalnya anda telah memiliki DataTable "barang" yang berada dalam DataSet ODS, maka anda dapat menggunakan penulisan berikut untuk membentuk DataView dari DataTable tersebut :
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Buat Connection
    OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
    sSQL = "Select * From Barang"
    'Buat Select Command untuk DataAdapter
    OledbComm = New OleDbCommand(sSQL, OledbConn)
    OledbComm.CommandType = CommandType.Text
    'Buat DataAdapter
    OleDA = New OleDbDataAdapter(OledbComm)
    'Isi Data ke DataSet sebagai DataTable barang
    OleDA.Fill(ODS, "Barang")
    'Buat DataView dari DataTable barang
    ODV = New DataView(ODS.Tables("Barang"))
    'Ikat DataView sebagai DataSource DataGrid
    DataGrid1.DataSource = ODV
End Sub

Melakukan Filter

Misalkan txtFilter adalah sebuah textbox yang berisi ekspresi untuk filter, maka penulisan berikut untuk melakukan filter pada object DataView
ODV.RowFilter = txtFilter.Text

Melakukan Sort

Misalkan kita ingin melakukan sort terhadap kolom KodeBar, maka penulisan berikut untuk melakukan hal tersebut
ODV.Sort = "KodeBar ASC"

Melakukan Find

Misalkan kita ingin mencari data pada kolom yang di Sort berdasarkan isi textbox txtFind, maka dapat menggunakan penulisan :
Row = ODV.Find(txtFind.Text)
Dalam hal ini variabel Row akan berisi nomor baris hasil Find, atau -1 kalau tidak ditemukan.

Program Kongkrit


Imports System.data.OleDb
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim OledbConn As OleDbConnection
    Dim OledbComm As OleDbCommand
    Dim sSQL As String
    Dim OleDA As OleDbDataAdapter
    Dim ODS As New DataSet
    Dim ODV As New DataView

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Buat Connection
        OledbConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        sSQL = "Select * From Barang"
        'Buat Select Command untuk DataAdapter
        OledbComm = New OleDbCommand(sSQL, OledbConn)
        OledbComm.CommandType = CommandType.Text
        'Buat DataAdapter
        OleDA = New OleDbDataAdapter(OledbComm)
        'Isi Data ke DataSet sebagai DataTable barang
        OleDA.Fill(ODS, "Barang")
        'Buat DataView dari DataTable barang
        ODV = New DataView(ODS.Tables("Barang"))
        'Ikat DataView sebagai DataSource DataGrid
        DataGrid1.DataSource = ODV
    End Sub

    Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        Dim OCommBuilder As OleDbCommandBuilder
        DataGrid1.Update()
        OCommBuilder = New OleDbCommandBuilder(OleDA)
        OleDA.Update(ODS, "Barang")
        ODS.Dispose()
        OledbConn.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSortKode.Click
        ODV.Sort = "KodeBar DESC"
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdSortKeterangan.Click
        ODV.Sort = "Keterangan"
    End Sub

    Private Sub cmdFilter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFilter.Click
        Try
            ODV.RowFilter = txtFilter.Text
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

    Private Sub cmdFind_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdFind.Click
        Dim Row As Integer
        Try
            Row = ODV.Find(txtFind.Text)
            If Row = -1 Then
                MsgBox("Tidak ketemu")
            Else
                Me.BindingContext(ODV).Position = Row
            End If
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub

End Class
1

Program Tambah, Perbaiki, dan Hapus Data. DI VB.NET

Pada modul sebelumnya anda telah memahami peran .Net Framework Data Provider (Connection, Command, DataAdapter) dan Objek DataSet.
Sesuatu hal yang perlu anda pahami adalah DataAdapter digunakan untuk mengambil data dari data source dan mengisinya ke sebuah DataSet sebagai objekDataTable, masing-masing record dalam DataTable membentuk DataRow.
DataAdapter menggunakan SelectCommand untuk mengambil data dari data source.
DataAdapter menggunakan InsertCommand, UpdateCommand, dan DeleteCommand untuk mengupdate data source.

Mempersiapkan .Net Framework Data Provider

'Buat objek Connection
Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
'Buat objek Command untuk menjalankan SelectCommand
sSQL = "Select * From Barang"
OledbComm = New OleDbCommand(sSQL, Oledbconn)
OledbComm.CommandType = CommandType.Text
'Buat objek DataAdapter sebagai jembatan bagi DataSet
OledbDA = New OleDbDataAdapter(OledbComm)

Mengisi data ke DataSet sebagai objek DataTable

'Isi data ke DataTable Barang di DataSet melalui DataAdapter
OledbDA.Fill(ODS, "Barang")

Memambah record baru ke DataTable

'Membuat objek DataRow untuk record baru
ODR = ODS.Tables("Barang").NewRow
'Isi masing-masing kolom pada objek DataRow
ODR("KodeBar") = "Delphi"
ODR("Keterangan") = "Milist Indoprog-Delphi"
ODR("Satuan") = "Email"
ODR("Harga") = 0
'Tambah objek DataRow ke DataTable Barang
ODS.Tables("Barang").Rows.Add(ODR)

Mengubah record Pertama

'Mereferensikan ODR ke DataRow yang pertama
ODR = ODS.Tables("Barang").Rows(0)
'Ubah kolom Harga
ODR("Harga") = 10000

Menghapus record kedua

'Hapus DataRow yang kedua
ODS.Tables("Barang").Rows(1).Delete()

Update data ke record source

Sesuatu hal yang perlu anda sadari adalah DataSet merupakan cache data local yang sifatnya disconnect terhadap datasource, sehingga perubahan yang anda lakukan tidak secara otomatis di update, anda perlu mempersiapkan Command (InsertCommand, UpdateCommand, DeleteCommand), sehingga update dapat dilakukan oleh DataAdapter ke data source.
'Generate InsertCommand, UpdateCommand, DeleteCommand untuk update data
ODC = New OleDbCommandBuilder(OledbDA)
'Lakukan update data dari DataSet ke data source
OledbDA.Update(ODS, "Barang")

Tutup koneksi

'Tutup koneksi
Oledbconn.Close()

Program Kongkrit

Imports System.Data.OleDb
Module Module3
    Public Sub main()
        Dim Oledbconn As OleDb.OleDbConnection
        Dim OledbComm As OleDb.OleDbCommand
        Dim OledbDA As OleDb.OleDbDataAdapter
        Dim ODS As New DataSet
        Dim sSQL As String
        Dim ODR As DataRow
        Dim ODC As OleDbCommandBuilder
        'Buat objek connection
        Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        sSQL = "Select * From Barang"
        'Buat objek command untuk menjalankan SQL
        OledbComm = New OleDbCommand(sSQL, Oledbconn)
        OledbComm.CommandType = CommandType.Text
        'Buat objek dataadapter sebagai jembatan bagi DataSet
        OledbDA = New OleDbDataAdapter(OledbComm)
        'Isi data ke DataTable Barang di DataSet melalui DataAdapter
        OledbDA.Fill(ODS, "Barang")
        'Membuat objek datarow untuk record baru
        ODR = ODS.Tables("Barang").NewRow
        'Isi masing-masing field pada objek datarow
        ODR("KodeBar") = "Delphi"
        ODR("Keterangan") = "Milist Indoprog-Delphi"
        ODR("Satuan") = "Email"
        ODR("Harga") = 0
        'Tambah objek datarow ke DataTable Barang
        ODS.Tables("Barang").Rows.Add(ODR)
        ODR = ODS.Tables("Barang").Rows(0)
        ODR("Harga") = 10000
        ODS.Tables("Barang").Rows(1).Delete()
        'Generate perintah SQL untuk update data
        ODC = New OleDbCommandBuilder(OledbDA)
        'Lakukan update data dari DataSet ke data source
        OledbDA.Update(ODS, "Barang")
        Oledbconn.Close()
    End Sub
End Module
1

PROGRAM TAMBAH DATA

Pada modul sebelumnya kita telah menggunakan Connection untuk melakukan koneksi ke suatu data source, dan menggunakan Command untuk menjalankan perintah SQL untuk pembuatan tabel.
Berikut ini kita akan menggunakan DataAdapter dan DataSet untuk pengolahan data.
DataAdapter, merupakan objek .Net Framework Data Provider untuk mempopulasikan data ke Dataset, dan melakukan update data ke data source.
DataSet, merupakan cache dari data yang diambil dari data source melalui provider. Objek DataSet menggunakan scenario disconnected yang memang merupakan tujuan dari ADO.Net untuk mendukung model pemrograman n-Tier dan XML.

Catatan

  • DataAdapter merupakan jembatan antara data source dengan DataSet. DataAdapter menggunakan objek  Command untuk menjalankan perintah-perintah SQL terhadap data source untuk memuat data ke DataSet, dan melakukan rekonsiliasi terhadap perubahan (tambah, perbaiki, dan hapus) data pada  DataSet kembali ke data source.
  • Anda bisa membayangkan DataSet sebagai Recordset disconnected pada ADO, tetapi DataSet dapat terdiri dari beberapa DataTable yang berasal dari provider yang berbeda dan memiliki relation satu sama yang lain.


Tambah Data Tabel Barang

Imports System.Data.OleDb
Module Module3
    Public Sub main()
        Dim Oledbconn As OleDb.OleDbConnection
        Dim OledbComm As OleDb.OleDbCommand
        Dim OledbDA As OleDb.OleDbDataAdapter
        Dim ODS As New DataSet
        Dim sSQL As String
        Dim ODR As DataRow
        Dim ODC As OleDbCommandBuilder
        'Buat objek connection
        Oledbconn = New OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0; Data Source=D:\BelajarVBnet\Belajar.mdb;")
        sSQL = "Select * From Barang"
        'Buat objek command untuk menjalankan SQL
        OledbComm = New OleDbCommand(sSQL, Oledbconn)
        OledbComm.CommandType = CommandType.Text
        'Buat objek dataadapter sebagai jembatan bagi DataSet
        OledbDA = New OleDbDataAdapter(OledbComm)
        'Isi data ke DataTable Barang di DataSet melalui DataAdapter
        OledbDA.Fill(ODS, "Barang")
        'Membuat objek datarow untuk record baru
        ODR = ODS.Tables("Barang").NewRow
        'Isi masing-masing field pada objek datarow
        ODR("KodeBar") = "VBnet"
        ODR("Keterangan") = "Milist Indoprog-VBnet"
        ODR("Satuan") = "Email"
        ODR("Harga") = 0
        'Tambah objek datarow ke DataTable Barang
        ODS.Tables("Barang").Rows.Add(ODR)
        'Generate perintah SQL untuk update data
        ODC = New OleDbCommandBuilder(OledbDA)
        'Lakukan update data dari DataSet ke data source
        OledbDA.Update(ODS, "Barang")
        Oledbconn.Close()
    End Sub
End Module
1