Sepertinya yang dibutuhkan oleh Timotius adalah bagaimana perlakuan coding
kita untuk menerima input data di datagrid atau flexgrid, jadi seperti
master dan detail, detail itemnya ada banyak, dan user bisa saja
input/edit/delete detail yang ada di flexgrid tanpa harus melalui proses
read and write ke database, betul begitu kan mas Timotius?
Kalo menurut saya flexgrid sendiri memiliki property rows dan row yang bisa
kita manfaatkan untuk menyimpan data detail tanpa harus simpan ke database.
Contoh:
FlexGrid1.TextMatrix(FlexGrid1.Row, 1) = vQty
FlexGrid1.TextMatrix(FlexGrid1.Row, 2) = vItemCode
dlsb
nanti pas proses simpan silahkan di loop aja, misal:
With FGQuotes
For X = 1 To .Rows - 1
If .TextMatrix(X, 7) <> "" Then
lsql = "SELECT * FROM PODetail WHERE ID = " & .TextMatrix(X, 7)
Else
lsql = "SELECT * FROM PODetail WHERE ID = 0"
End If
Set rsdQDet = New ADODB.Recordset
rsdQDet.Open lsql, cnNMaster, adOpenDynamic, adLockOptimistic,
adCmdText
If rsdQDet.RecordCount < 1 Then
rsdQDet.AddNew
End If
If .TextMatrix(X, 1) <> "" Then
rsdQDet!OrderQty = CDbl(.TextMatrix(X, 1))
Else
rsdQDet!OrderQty = 0
End If
JmlQty = JmlQty + rsdQDet!OrderQty
If .TextMatrix(X, 2) <> "" Then rsdQDet!UnitDesc = .TextMatrix(X,
2)
If .TextMatrix(X, 3) <> "" Then rsdQDet!ShortDesc = .TextMatrix(X,
3)
If .TextMatrix(X, 4) <> "" Then rsdQDet!UnitCost =
CCur(.TextMatrix(X, 4))
If .TextMatrix(X, 5) <> "" Then
rsdQDet!TotalCost = CCur(.TextMatrix(X, 5))
Else
rsdQDet!TotalCost = 0
End If
If .TextMatrix(X, 6) <> "" Then rsdQDet!SONo = (.TextMatrix(X, 6))
If .TextMatrix(X, 8) <> "" Then rsdQDet!LongDesc = (.TextMatrix(X,
8))
SellAmt = SellAmt + CCur(rsdQDet!TotalCost)
rsdQDet!PONo = txtVchNo
rsdQDet.Update
Next X
Untuk Heriyanto:
> Itu cuma menurut saya, apa ide lain yg bs membantu? trus saya juga ada
baca istilah locking, itu gimana ya? ada yg bisa share?
maksudnya locking ini locking recordset? terus masalahnya apa ya? sori masih
belum ngerti
Untuk Tarwin:
Menggunakan tabel Temp, kalo menurut saya malah memperberat kinerja program,
karena proses read/write jadi semakin banyak, lebih baik manfaatkan class
dan collection.
Oh ya satu lagi tips dari saya, jangan lakukan ini
> Dim kon As New adodb.Connection
> Dim rs As New adodb.Recordset
Rubah dengan dim kon as adodb.connection dan dim rs as adodb.recordset
Semoga bermanfaat,
Ade Aan Wirama