Kalau BOM tingkatannya gak tentu kan ?

Saya bikin benda A 5 buah. 

A terdiri dari B dan C. 

B terdiri dari D, E, dan F.

C terdiri dari G

Dst.., dst.

Maka kalau saya bikin A, seharusnya stok berkurang sesuai dengan kedalaman
BOM.

Bentuk tabel BOM adalah flat satu tabel dengan setiap item memiliki field
Parent, item itu menyusun item mana, atau item itu bagian dari item mana.

Anda gunakan fungsi rekursif untuk mencari parts yang parent-nya A, lalu
dari parts tersebut rekursif lagi untuk mencari anak-anak-nya. Demikian
seterusnya hingga di tingkat kedalam terakhir.

 

Asumsi tabel BOM anda berbentuk:

 

PartNo | Qty | PartParent

-------+-----+-----------

A      |    1| 

B      |    3| A

C      |    3| A

D      |    2| B

E      |    4! B

F      |    5| C

G      |    5| F

 

Berikut adalah contoh recursif di TSQL untuk memperoleh total parts yang
dibutuhkan. Dibutuhkan dua store procedure untuk memperoleh total jumlah
part yang digunakan. Sp_GetPartsBOM_Raw untuk memperoleh seluruh parts
melalui proses rekursi, sedang sp_GetPartsBOM untuk membuat summary total
per item. Dari sini anda bisa membawa hasil store procedure ke dalam
recordset, 

mungkin dengan perintah:

 

Set rs = objCon.execute("sp_GetParts_BOM '" & strPartNo & "', " & intQty)

.

 

 

CREATE PROC sp_GetParts_BOM

    @PartNo varchar(50)

AS

    CREATE TABLE #PARTS (

        PartNo varchar(50),

        Qty int

    )

    

    EXEC sp_GetPartsBOM_Raw @PartNo, 1

    SELECT PartNo, SUM(Qty) Qty 

    FROM #PARTS

    GROUP BY PartNo

    

    DROP TABLE #PARTS

 

 

 

CREATE PROC sp_GetPartsBOM_Raw

    @PartNo varchar(50),

    @Qty int

AS

    DECLARE @PartNo1 varchar(50), @Qty1 int

    DECLARE C_PART CURSOR LOCAL FOR

    SELECT PartNo, @Qty * Qty

    FROM T_BOM

    WHERE PartParent = @PartNo

 

    OPEN C_PART 

    FETCH NEXT FROM C_PART INTO @PartNo1, @Qty1

    WHILE @@FETCH_STATUS = 0

    BEGIN

        INSERT #PARTS

        SELECT @PartNo1 PartNo, @Qty1 Qty

        EXEC sp_GetPartsBOM_Raw @PartNo1, @Qty1

        FETCH NEXT FROM C_PART INTO @PartNo1, @Qty1

    END

    CLOSE C_PART

    DEALLOCATE C_PART

 

Aksan Kurdin

 

From: [email protected] [mailto:[EMAIL PROTECTED]
On Behalf Of ZONA
Sent: Tuesday, July 31, 2007 10:25 AM
To: [email protected]
Subject: [Programmer-VB] Pengurangan Stock Otomatis (BOM)

 

Saya punya stok. Misalnya:

 

NomorPart             Stok

Part1                       10  pcs

Part2                        20 pcs

Part3                        2 pcs

 

Saya memproduksi Benda. Misalnya: Benda A.

Untuk membuat Benda A ini, membutuhkan:

Part1    sebanyak 1 pcs

Part2    sebanyak 2 pcs

 

Lalu saya membuat benda A   sebanyak 5 unit, mk part yg terpakai adalah:

Part1       1  *  5  =5

Part2       2 * 5   =10

 

Bagaimana caranya agar stok berkurang otomatis   ketika saya membuat benda A
5 unit?

Jadi hasilnya :

Part1        5

Part2        10

Part3        2

 

Pakar-pakar vb mohon pencerahannya !

 

terimakasih sebelumnya

NB. saya menggunakan VB 6 dan sql server 7

 

 

 

<<image001.gif>>

<<image002.gif>>

Kirim email ke