| Author |
Message |
|
|
|
Post subject: Aoutomasi Index
Posted: 18-09-2005 17:54
|
|
onProfessional

Joined: 06-08-2005 13:59
Posts: 632
|
|
Maaf Nanya Lagi Dech...
Akang2 Semuanya Terutama akang Cyber Hecker Gimana Caranya membuat otomatisasi pada Edit1. Misalnya Nech Edit1=Kode Barang..Kan Pas Inputannya K-001,Stelah Click tombol simpan Edit1(Kode barang ) Langsung mengidexkan diri sebagai K-002 Tanpa harus diinputJadi kita tinggal masukin nama barangnya aja dan yg lainnya...menurut saya ini dapat mengecilkan standar eror pada program..
Maaf Klu pertanyaan nya nga berbobot,,,(Maklum Baru Belajar Delphi
|) |
|
|
| |
|
|
|
 |
ZeAL |
|
Post subject:
Posted: 19-09-2005 08:18
|
|
onProfessional

Joined: 07-04-2005 12:18
Posts: 761
Status: Offline
|
|
Wah, favoritnya si hecker nih..?? gue gak ada yang favoritin nih..???
caranya gampang2 susah....
logikanya dulu yah..
1. saat tombol di-klik, periksa editbox
2. kalo gak ada isinya, kasih messagebox buat peringatan aja kalo gak ada isinya..
3. kalo ada isinya, pecah jadi dua string.. 1 untuk headernya (di contoh : K), dan 1 untuk tail (di contoh : 001).
4. naikan 1 angka untuk variabel tail.. yang jadinya di contoh : 002
5. sambungkan lagi kedua string diatas dan masukan ke editbox.
oia, proses penyimpanan sebaiknya dilakukan diantara point 2 dan 3.. siapa tau lupa kalo counternya udah dinaikin.. yang seharusnya nyimpen K-001 malah jadi K-002...
kodenya pas penyimpanan kira2...
Code:
var head, tail, hasil : string;
if trim(edit1.Text) = '' then // <-- cek ada isinya gak
begin
showmessage('isi hoi!'); // <-- tampilin peringatan
exit;
end
else
begin
hasil := '000'; //<-- banyak digit 0 di depan angka
head := copy(edit1.Text ,1,1); //<-- ambil 1 huruf didepan.
tail := copy(edit1.Text , 3,Length(edit1.Text)); //<-- ambil sisa digit setelah tanda -
tail := inttostr(strtoint(tail) + 1); //<-- tambah 1
delete(hasil,1,length(tail)); //<-- buat dari misalnya 2 menjadi 002
hasil := head + '-' + hasil + tail; //<-- simpan hasil dan rangkai ulang
edit1.Text := hasil; //<-- tongolin deh.
end;
kelemahannya bentuknya HARUS tetap.. yaitu digit pertama kode, digit kedua pemisah dan sisanya adalah counternya...
jadi misalnya diisi k-001, maka valid... diisi m-999, maka valid.. diisi p-129302, maka valid.. diisi kl-290, maka tidak valid.. diisi jp209, maka valid (p dianggap pemisah)... dst..dst...dst...
cara lain bisa pake fungsi pos untuk mendeteksi tanda pemisah.. misalnya tanda '-'.
Code:
if trim(edit1.Text) = '' then
begin
showmessage('isi hoi!');
exit;
end
else
begin
hasil := '000';
head := copy(edit1.Text ,1, pos('-',edit1.Text) - 1 ); //<-- cek sebelum tanda pemisah
tail := copy(edit1.Text , pos('-',edit1.Text) + 1,Length(edit1.Text)); //<-- cek sesudah tanda pemisah
tail := inttostr(strtoint(tail) + 1);
delete(hasil,1,length(tail));
hasil := head + '-' + hasil + tail;
edit1.Text := hasil;
end;
kalo disini bebas diisi bentuknya kayak gimana aja... tapiiiii.... harus ada pemisah dengan head dan tail... dari contoh diatas, pemisahnya adalah tanda strip ( - )...
Enjoy... |
_________________ do i know you?
[ My Blog : http://www.monyetpinter.com ] [ My RPG Project : http://einarc.wordpress.com ] [ FJBex : http://www.fjbex.com ]
|
| |
|
|
|
 |
cyber_hecker |
|
Post subject:
Posted: 19-09-2005 15:23
|
|
onProfessional

Joined: 19-05-2005 20:32
Posts: 902
Status: Offline
|
|
wakakaka... , ya udah zeal kamu ku jadi in idola ku deh tapi ngomong-ngomong "kang... adiknya sapa namanya ? itu lho yang rambutnya panjang lurus" wakakakakaka......
yup.. untuk bikin auto kode caranya kayak yang ditunjuk in zeal. tapi kalo gue biasanya untuk nomor kode udah ku buatkan sebuah tabel khusus untuk menyimpan nomor kode (TJurnal). wah logika cara penggunaannya sulit mau gue jelaskan. yang pasti buat tabel untuk nomor kode dengan format :
KdJurnal = untuk nomor jurnal (nomor kode)
Keterangan = sekadar keterangan
Prefix = awalan dari kode, contoh : BR-
Sufix = akhiran dari kode, contoh : -2005
Nomor = untuk menyimpan nomor terakhir
contoh penggunaan dalam program :
Code:
procedure TFInBarang.btnNewClick(Sender: TObject);
var
sKode : String;
begin
// ubah caption button sesuai fungsi
case TComponent(Sender).Tag of
1 : begin
(Sender As TButton).Tag := 2;
(Sender As TButton).Caption := '&Simpan';
// check nomor jurnal kode
with QJurnal do begin
SQL.Clear;
SQL.Append('SELECT * FROM TJurnal WHERE KdJurnal = :pKdJurnal');
Parameters[0].Value := 'BR';
Open;
sKode := FieldByName('Prefix').AsString +
FormatFloat('0000',FieldByName('Nomor').AsInteger) +
FieldByName('Sufix').AsString;
Close;
edKdBarang.Text := sKode;
edNmBarang.Clear;
edSatuan.Clear;
edJumlah.Text := '0';
edNmBarang.SetFocus;
end;
end;
2 : begin
(Sender As TButton).Tag := 1;
(Sender As TButton).Caption := '&New';
// check kembali nomor jurnal (untuk program multiuser)
with QJurnal do begin
SQL.Clear;
SQL.Append('SELECT * FROM TJurnal WHERE KdJurnal = :pKdJurnal');
Parameters[0].Value := 'BR';
Open;
sKode := FieldByName('Prefix').AsString +
FormatFloat('0000',FieldByName('Nomor').AsInteger) +
FieldByName('Sufix').AsString;
Close;
// simpan data ke tabel barang
SQL.Clear;
SQL.Append(
'INSERT INTO TBarang(KdBarang, NmBarang, Satuan, Jumlah) ' +
'VALUES (:pKdBarang, :pNmBarang, :pSatuan, :pJumlah)'
);
Parameters[0].Value := sKode;
Parameters[1].Value := edNmBarang.Text;
Parameters[2].Value := edSatuan.Text;
Parameters[3].Value := StrToInt(edJumlah.Text);
ExecSQL;
TBarang.Requery();
// update TJurnal
SQL.Clear;
SQL.Append(
'UPDATE TJurnal SET Nomor = Nomor + 1 WHERE KdJurnal = :pKdJurnal'
);
Parameters[0].Value := 'BR';
ExecSQL;
end;
end;
end;
end;
hasilnya kira-kira begini :
silakan di logika gimana alurnya. habis gue gak pinter nerangin tentang logika hik.. hik...
Download Contoh Program Disini |
_________________
|
| |
|
|
|
 |
ZeAL |
|
Post subject:
Posted: 19-09-2005 16:05
|
|
onProfessional

Joined: 07-04-2005 12:18
Posts: 761
Status: Offline
|
|
|
|
|
 |
|
|
Post subject:
Posted: 19-09-2005 18:39
|
|
onProfessional

Joined: 06-08-2005 13:59
Posts: 632
|
|
Kang benar seperti itu yang saya maksud...bikin artikel donk biar gampang di mengerti
Wach Jadi ada dua pilihan nech..Cyber atau zeal sizpa sech yg gagah |
_________________ == Barudak Jambi ===
Site : http://geocities.com/nahax_san/
Company : http://www.vs-i.com/
===Kenangan yang tertinggal===
========cibodas==========
|
| |
|
|
|
 |
cyber_hecker |
|
Post subject:
Posted: 19-09-2005 20:56
|
|
onProfessional

Joined: 19-05-2005 20:32
Posts: 902
Status: Offline
|
|
milih zeal aja. ayo jangan ragu. zeal itu cowok cakep lho xixixixixixixi |
_________________
|
| |
|
|
|
 |
ZeAL |
|
Post subject:
Posted: 20-09-2005 07:41
|
|
onProfessional

Joined: 07-04-2005 12:18
Posts: 761
Status: Offline
|
|
|
|
|
 |
EkoIndri |
|
Post subject:
Posted: 24-11-2005 01:15
|
|
onElite

Joined: 23-11-2005 19:14
Posts: 1185
Location: Jakarta - Solo - Surabaya - Bali
Status: Offline
|
|
caranya sudah bagus......
cuma untuk kelas server gimana.............???
saya melihat disini ada celah, atau mungkin saya yang salah persepsi atau salah baca.
jadi begini, untuk mendapatkan kode yang real, kita dilarang mengambil acuan atau parameter dari client, malainkan kita harus ambil data dari server alias tempat database disimpan.
jadi untuk menentukan kode yang begituan aku selalu ambil data dari record yang ada pada tabel.
dan untuk itu aku selalu ambil nilai terbesar dari n karakter yang sudah dipotong dari karakter huruf -->> KB0001 -->> 0001
jadi dari sini setiap ada aplikasi client aktif dia minta satu yang akan dibuat nota, maka akan kita masukkan kedalam tabel permintaan, sehingga kita mengacu berdasarkan record yang da ditabel bukan di client
dari sini peluang error akan ditekan lagi........
he...........he...........
ada yang kurang jelas silahkan post ja
nanti aku jawab dengan jelas beserta querynya......
btw, untuk main database, aq jarang sekali main script di delphi, malah ngak ada sama sekali.....
aq lebih suka main di server, sebab bisa mengurangi network traffic yang padat.
apalagi aplikasi anda dipakai untuk kelas yang besar dan terintegrasi
pasti butuh ruang gerak bebas yang agak besar |
_________________ Blog Delphi favourite:
www.ekoindri.wordpress.com
|
| |
|
|
|
 |
imunk |
|
Post subject:
Posted: 24-11-2005 09:34
|
|
onUber-Skilled

Joined: 28-03-2005 10:06
Posts: 447
Status: Offline
|
|
aku sdh pernah mencoba menjalankan trik dari mas ekoindri, perintah querynya gini:
select max(right(fieldnya),4)+1 from tablenya
kalo setiap client menjalankan query ini dan mengacu pada table yg sama, pada saat nyimpen jadi error. karena client tersebut mendapat max kode yg sama.
misal gini:
kode pada tabel maksimalnya :2345
saat client 1 menjalankan query diatas hasil yg diperoleh : 2346.
saat client 1 belum simpan data, client 2 jalankan query di atas terlebih dahulu.
otomatis client 2 akan mendapat hasil yg sama dgn client 1 yaitu 2346.
setelah itu client 1 simpan data, no problem data tersimpan dgn mulus.. luss...
tapi saat client 2 menyimpan data, errrrrooooorrrrrr....
kira2 giman triknya ya mas ekoindri....???  |
|
|
| |
|
|
|
 |
EkoIndri |
|
Post subject:
Posted: 24-11-2005 13:49
|
|
onElite

Joined: 23-11-2005 19:14
Posts: 1185
Location: Jakarta - Solo - Surabaya - Bali
Status: Offline
|
|
begini mas...........
untuk klarifikasi dari tanggapan yang mengatakan kata2 aja akan saya berikan kasus nyata nih bang @imunk
jika ada yang kurang jelas nantinya posting aja lagi...
he.............he.............
pertama begini, (biasa...... kata2 tetep masih diperlukan untuk memperjelas)
mas kan punya tabel master nota transaksi, anggap aja namanya adalah TabelTransaksi dengan ada nama field [kode Transaksi](sebagai informasi ini menggunakan database SQL Server).
nah, agar kita bisa membuat kode secara otomatis dan tidak kress antara komputer1 dengan komputer yang lain, kita bisa membuat parameter bantuan.
untuk tabel pembantu ini kita berikan nama -->> TabelTempKodeTransaksi
nah sekarang kita buat prosedur untuk membuat kode otomatis.
informasi penegasan:
TabelTransaksi -->> [Kode Transaksi],
[Kode Barang],
.......
........
TabelTempKodeTransaksi -->> [Kode Transaksi]
pertama kita cek dulu apakah tabel TabelTempKodeTransaksi ada record apa tidak....????
jika tidak maka kita ambil data dari tabel TabelTransaksi untuk menentukan kode transaksinya.
untuk query silahkan anda lihat berikut ini (anggap pada field [Kode Transaksi] ada 10 karakter dan 2 karakter dari kiri untuk karakter huruf, misalkan KT, jadi lengkapnya KT000000001 atau yang lain).
DECLARE @NomorTransaksi numeric,
@KodeTransaksi varchar(10)
SELECT @NomorTransaksi = MAX(DISTINCT CAST(RIGHT([Kode Transaksi], 8 ) AS numeric))
FROM TabelTransaksi
IF @NomorTransaksi IS NULL
BEGIN
SET @NomorTransaksi = 1
END
ELSE
BEGIN
SET @NomorTransaksi = @NomorTransaksi + 1
END
IF @NomorTransaksi < 10
BEGIN
SET @KodeTransaksi = 'KT'+'0000000' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 100
BEGIN
SET @KodeTransaksi = 'KT'+'000000' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 1000
BEGIN
SET @KodeTransaksi = 'KT'+'00000' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 10000
BEGIN
SET @KodeTransaksi = 'KT'+'0000' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 100000
BEGIN
SET @KodeTransaksi = 'KT'+'000' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 1000000
BEGIN
SET @KodeTransaksi = 'KT'+'00' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 10000000
BEGIN
SET @KodeTransaksi = 'KT'+'0' +CAST( @NomorTransaksi AS varchar )
END
ELSE IF @NomorTransaksi < 100000000
BEGIN
SET @KodeTransaksi = 'KT' +CAST( @NomorTransaksi AS varchar )
END
nah sekarang kamu masukkan kode terpilih dengan parameter @KodeTransaksi ke tabel TabelTempKodeTransaksi dengan query sebagai berikut
Insert Into TabelTempKodeTransaksi
([Kode Transaksi])
values
(@KodeTransaksi)
itu tadi kondisi jika tabel TabelTempKodeTransaksi kosong tidak ada datanya.
terus jika ada user lain yang ingin membuat nota transaksi lagi kita cek lagi apakah tabel TabelTempKodeTransaksi kosong apa tidak, jika tidak parameter acuan kita adalah kode transaksi yang ada di tabel TabelTempKodeTransaksi bukan tabel TabelTransaksi.
dengan cara yang sama dengn diatas jika sudah selesai didapatkan @KodeTransaksi, kita insertkan lagi untuk kode yang baru, dengan demikian tidak ada error waktu penyimpanan mas...... karena tidak ada data yang identik sama.......
selamat mencoba...............
jika ada yang bingung posting lagi aja....
aku siap bantu koq........ dan tidak hanya kata-kata aja.... sekali lagi tidak hanya kata-kata aja......... |
Last edited by EkoIndri on 24-11-2005 18:07; edited 1 time in total
|
| |
|
|
|
 |
imunk |
|
Post subject:
Posted: 24-11-2005 14:52
|
|
onUber-Skilled

Joined: 28-03-2005 10:06
Posts: 447
Status: Offline
|
|
kalo client 1 mengcancel penyimpanan data gimana??
nanti ada satu nomor yg gak terisi dong, karena nomor transaksi bertambah terus...
kakakakakak |
|
|
| |
|
|
|
 |
EkoIndri |
|
Post subject:
Posted: 24-11-2005 16:16
|
|
onElite

Joined: 23-11-2005 19:14
Posts: 1185
Location: Jakarta - Solo - Surabaya - Bali
Status: Offline
|
|
untuk mengatasi hal ini sebenarnya tergantung dari kemampuan aplikasi kita masing2
1. Jika perusahaan itu mengijinkan untuk mengabaikan nota transaksi yang telah terbit(dibatalkan seperti kondisi yang mas maksud itu ngak masalah). Pokoknya yang menjadi parameter adalah Nota yang masuk ke dalam kasir, sementara nota itu kan masih dalam proses tahap SO atau sales order, sehingga tidak masalah.
2. Jika memang perusahaan ingin membuat semua nota itu berlaku, maka ketika pihak komputer client membatalkan, maka kita bisa menambahkan field status untuk kode transaksi yang ada di tabel TabelTempKodeTransaksi, yang mana kalau tahap proses pembuatan nota kita kasih status 0 dan jika dibatalkan kita berikan nilai 1 yang artinya batal, dan ketika ada client lain yang mengajukan kode transaksi bisa memanfaatkan kode Transaksi yang idle sebelum membuat Kode transaksi baru. Cara ini juga bisa dilakukan dan tidak masalah.
Kalau pertama tadi mengecek apakah tabel TabelTempKodeTransaksi Kosong apa tidak, maka jika tidak Kosong kita bisa cek validasi kedua, apakah ada Kode Transaksi yang Idle apa tidak.
Jika tidak ada sistem secara otomatis akan mengcounter membuat Kode transaksi Baru, namun apabila ada kode Transaksi yang idle, maka sistem akan memberikan Kode Transaksi idle sebagai Kode transaksi yang diminta oleh Komputer Client.
begitu mas.............
sori, kalau untuk posting kali ini aq cuma kata2 aja........
kalau memang masih lom jelas, nanti akan aq berikan penjelasan yang tidak hanya sekedar kata2......
he..........he.......... |
_________________ Blog Delphi favourite:
www.ekoindri.wordpress.com
|
| |
|
|
|
 |
|
|
|
Post subject:
Posted: 24-11-2005 17:55
|
|
onProfessional

Joined: 06-08-2005 13:59
Posts: 632
|
|
| Kang Ekoindri Kenapa Ya pas aku baca penjelesan dari akang rada susah dimengerti.... Sebaiknya gunakana kata2 yg bermanfaat aja, n jagan lupa klu mau buat contoh kasus implementasikan dalam sample yg bisa didownload, Coz kami-kami in kan baru pemula yg masih awam buaaanget ama delphi...oh iya sekedar saran buat akang ekoindri, Implementasi ilmunya bagus tapi penjelasannya berbelit2 jadi rada susah dimengerti bagi pemula< Wakaakakakakak utng aku udah masuk kls intemedite> |
_________________ == Barudak Jambi ===
Site : http://geocities.com/nahax_san/
Company : http://www.vs-i.com/
===Kenangan yang tertinggal===
========cibodas==========
|
| |
|
|
|
 |
EkoIndri |
|
Post subject:
Posted: 24-11-2005 18:04
|
|
onElite

Joined: 23-11-2005 19:14
Posts: 1185
Location: Jakarta - Solo - Surabaya - Bali
Status: Offline
|
|
kelihatan jarang belajar konsep..........
ha.........ha................
dan kelihatan suka dikasih aplikasi langsung
ha.............ha..................
memang sih kebanyakan temen2 maunya simple ngak mau belajar konsep, sehingga akibatnya ...........
btw, banyak sekali orang yang berpikiran langsung to the point, padahal tu salah besar.
kalau aku sering diskusi diluar, itu malah jarang langsung script, mereka lebih sering megajarkan konsep.
nah dari situ aq dah ambil hikmahnya yang begitu besar sekali.
dan aku dah terapin dibeberapa forum dalam negeri ngak ada masalah
dan baru kali ini aku di complain, biasanya ada yang bilang jelas banget, koq disini dibilang susah dimengerti
ha...............ha..............
salah nulis kali aq kali ini................ |
_________________ Blog Delphi favourite:
www.ekoindri.wordpress.com
|
| |
|
|
|
 |
|
|
Post subject:
Posted: 24-11-2005 18:19
|
|
onProfessional

Joined: 06-08-2005 13:59
Posts: 632
|
|
| Mungkin aku yg bloon ya, Tapi trus terang bukannya aku membeda2kan orang, klu penjelasan dari kang cyber.h,delogic,zeal,luri.d,tox2wow, lebih cepat dimengerti...mungkin akang udah biasa implementasi dengan konsep ya, Tapi ini lah kesalahan yg snagat besar, kita belajar ilmu logika bukan hafalan, so kang ekoindri pasti ngerti,,,,,,hehehehehe <<<<< KLu masalah ginian udah biasa Wakakakakakaakka |
_________________ == Barudak Jambi ===
Site : http://geocities.com/nahax_san/
Company : http://www.vs-i.com/
===Kenangan yang tertinggal===
========cibodas==========
|
| |
|
|
|
 |
|
|