Rasanya tak cukup hanya ucapan Terima kasih buat Pencerah Excel kita....
Semoga Allah SWT membalas dengan pahala yang setimpal


Pada 20 Desember 2012 21:33, Mr. Kid <[email protected]> menulis:

> **
>
>
> Alhamdulillah...
>
>
> *" ternyata sudah bisa jalan dan tak perlu pikir type data"*
> >> Oh ya ? *bekerja dengan database tidak perlu memikirkan tipe data 
> >> ?*ciiyuuzz ?
> >> Bagaimana jika pada script :
>
> REF = .Cells(X, 1).Value
> RS.Open "select * from P1 Where P1.REF=*" & REF*, CON, adOpenKeyset,
> adLockOptimistic
> If RS.RecordCount = 0 Then
>    RS.AddNew
>    RS.Fields(0).Value = .Cells(X, 1).Value
>    RS.Fields(1).Value = .Cells(X, 2).Value
>    RS.Fields(2).Value = .Cells(X, 3).Value
>    RS.Fields(3).Value = .Cells(X, 4).Value
>    RS.Fields(4).Value = .Cells(X, 5).Value
>    RS.Fields(5).Value = .Cells(X, 6).Value
>    RS.Fields(6).Value = .Cells(X, 7).Value
>    RS.Fields(7).Value = .Cells(X, 8).Value
>    RS.Fields(8).Value = .Cells(X, 9).Value
>    RS.Fields(9).Value = .Cells(X, 10).Value
>    RS.Fields(10).Value = .Cells(X, 11).Value
>    RS.Update
> End If
>
> bagian yang dilatar kuning Anda ganti dengan yang ada pada script yang
> Anda anggap bermasalah membuat muncul error yang berbunyi :
>
> RS.Open "select * from P1 WHERE P1.REF=*'" & REF & "'"*, CON,
> adOpenKeyset, adLockOptimistic
> Apakah tetap tidak memikirkan datatype dengan AddNew dan Update ?
>
> Jadi permasalah utama bukan masalah menggunakan AddNew atau Execute, tapi
> masalah utama adalah cara menyusun query yang ndak peduli dengan tipedata.
>
>
> *"Tapi kalau data mencapai 3000an record kok agak lama," *
> >> Bagaimana jika ditelaah berdasar apple to apple dari 2 prosedur
> tersebut, yaitu prosedur yang pakai con.execute dengan yang pakai addnew.
>
> Baris pakai con.execute berbunyi :
> CON.Execute sQuery
>
> itu sama dengan :
>
> RS.AddNew
> RS.Fields(0).Value = .Cells(X, 1).Value
> RS.Fields(1).Value = .Cells(X, 2).Value
> RS.Fields(2).Value = .Cells(X, 3).Value
> RS.Fields(3).Value = .Cells(X, 4).Value
> RS.Fields(4).Value = .Cells(X, 5).Value
> RS.Fields(5).Value = .Cells(X, 6).Value
> RS.Fields(6).Value = .Cells(X, 7).Value
> RS.Fields(7).Value = .Cells(X, 8).Value
> RS.Fields(8).Value = .Cells(X, 9).Value
> RS.Fields(9).Value = .Cells(X, 10).Value
> RS.Fields(10).Value = .Cells(X, 11).Value
> RS.Update
> Banyak mana prosesnya ?
>
> Lihat bagian yang *dibiru* *ditambah dengan penyusunan query oleh data
> provider* itu sama dengan prosedur dengan con.execute bagian :
> For Each TEKS1 In .Range(.Cells(X, 1).Address & ":" & .Cells(X,
> 11).Address)
>
>            select case teks1.column
>            case 4,5  'tipe datetime
>                teks1="#" & format$(teks1,"YYYY-MM-DD") & "#"
>          case 3,11  'tipe string
>                teks1="'" & teks1 & "'"
>           case else 'numerik'
>               teks1=clng(0 & teks1)
>           end select
>           teks=teks & "," & teks1
>   Next
>   teks=mid$(teks,2)
>   sQuery = "Insert Into P1 (
> REF,JOB,MACHINE,START,STOP,DOWNTIME,GLD,PK,QTY,KA,REMARK ) select " & TEKS
>   RS.Open "select * from P1 Where P1.REF=*" & REF*, CON, adOpenKeyset,
> adLockOptimistic
>         If RS.RecordCount = 0 Then
>             CON.Execute sQuery
>         End If
> *penyusunan query oleh data provider* dilakukan sangat cepat oleh data
> provider, lebih cepat dari baris :
> sQuery = "Insert Into P1 (
> REF,JOB,MACHINE,START,STOP,DOWNTIME,GLD,PK,QTY,KA,REMARK ) select " & TEKS
>
> *Tapi bagian :*
> RS.Fields(0).Value =
> RS.Fields(1).Value =
> RS.Fields(2).Value =
> RS.Fields(3).Value =
> RS.Fields(4).Value =
> RS.Fields(5).Value =
> RS.Fields(6).Value =
> RS.Fields(7).Value =
> RS.Fields(8).Value =
> RS.Fields(9).Value =
> RS.Fields(10).Value =
> diproses *jauh lebih lambat *dibanding :
> For Each TEKS1 In .Range(.Cells(X, 1).Address & ":" & .Cells(X,
> 11).Address)
>
>            select case teks1.column
>            case 4,5  'tipe datetime
>                teks1="#" & format$(teks1,"YYYY-MM-DD") & "#"
>          case 3,11  'tipe string
>                teks1="'" & teks1 & "'"
>           case else 'numerik'
>               teks1=clng(0 & teks1)
>           end select
>           teks=teks & "," & teks1
>   Next
>   teks=mid$(teks,2)
>
> *Bagian :*
> rs.addnew
> dan
> rs.update
> diproses sangat-sangat jauh lebih lambat dibanding :
> CON.Execute
>
> *"apakah ada yg perlu diperbaiki "*
> >> ndak ada. memang demikianlah karakteristik operasi recordset per record
> berbasis field per field.
>
> Wassalam,
> Kid.
>
> 2012/12/20 Heru Safrudin <[email protected]>
>
>> **
>>
>>
>> Dear Mr. Kid
>>
>> Alhamdulillah ternyata banyak jalan menuju keberhasilan setelah pake
>> cara yang dari Mr. Kid yang lain yaitu RS.AddNew, ternyata sudah bisa
>> jalan dan tak perlu pikir type data, bahkan tidak perlu validasi. Tapi
>> kalau data mencapai 3000an record kok agak lama, apakah ada yg perlu
>> diperbaiki dari prosedur di bawah ini :
>>
>> ConnectDB
>> With Sheets("P1")
>> For X = 2 To 10 ' .Range("A1").CurrentRegion.Rows.Count
>> REF = .Cells(X, 1).Value
>> RS.Open "select * from P1 Where P1.REF=" & REF, CON,
>> adOpenKeyset, adLockOptimistic
>> If RS.RecordCount = 0 Then
>> RS.AddNew
>> RS.Fields(0).Value = .Cells(X, 1).Value
>> RS.Fields(1).Value = .Cells(X, 2).Value
>> RS.Fields(2).Value = .Cells(X, 3).Value
>> RS.Fields(3).Value = .Cells(X, 4).Value
>> RS.Fields(4).Value = .Cells(X, 5).Value
>> RS.Fields(5).Value = .Cells(X, 6).Value
>> RS.Fields(6).Value = .Cells(X, 7).Value
>> RS.Fields(7).Value = .Cells(X, 8).Value
>> RS.Fields(8).Value = .Cells(X, 9).Value
>> RS.Fields(9).Value = .Cells(X, 10).Value
>> RS.Fields(10).Value = .Cells(X, 11).Value
>> RS.Update
>> End If
>> RS.Close
>> Next
>> End With
>> DisconnectDB
>>
>> Thanks so much Mr. ...........
>>
>> Pada tanggal 20/12/12, Heru Safrudin <[email protected]> menulis:
>>
>> > Ya kalau begitu saya sok tahu banget setidaknya tentang type data,
>> karena
>> > udah merasa type data di REF dan lainnya udah sama, tapi kalau ternyata
>> > belum sama ya mesti tanya ke siapa lagi ya.... atau Mr. punya referensi
>> > bacaan ttg data type ? Makasih banyak
>> >
>> > 1534,200001,'A1',#2012-01-02#,#2012-01-02#,0,150,792,19858,30,''
>> > nyerah deh kayaknya
>> >
>> >
>> >
>> > Pada 20 Desember 2012 08:50, Mr. Kid <[email protected]> menulis:
>> >
>> >> **
>>
>> >>
>> >>
>> >> Tuh kan...
>> >>
>> >> Kalau begitu, coba pahami tentang tipe data (data type) lagi. Mulai
>> dari
>> >> apa itu datatype, guna, cara pilih, batasan tipe data, hubungan antar
>> >> data
>> >> type, akibat perbedaan data type, data type dalam db (mis access aja
>> >> dulu).
>> >>
>> >> Setelah itu baru tentang penyusunan query dan dampak perbedaan data
>> type
>> >> dalam query.
>> >>
>> >> Inti permasalahan masih tentang data type.
>> >>
>> >> Coba cari tahi, di db kolom ref datatype nya apa. Kalau sudah dapat,
>> cek
>> >> di query nya si data type itu dikenai proses terhadap data type apa.
>> Ubah
>> >> agar sama datatypenya mengikuti yang di db.
>> >>
>> >> Kalau belum bersedia mendalami datatype, maka cenderung muncul error
>> >> query
>> >> akibat datatype.
>> >>
>> >> Wassalam,
>> >> Kid.
>> >> On Dec 20, 2012 8:40 AM, "Heru Safrudin" <[email protected]> wrote:
>> >>
>> >>> **
>>
>> >>>
>> >>>
>> >>> Capture Error type mismatch.JPG
>> >>>
>> >>>
>> >>> Pada 19 Desember 2012 18:59, Mr. Kid <[email protected]> menulis:
>> >>>
>> >>>> **
>>
>> >>>>
>> >>>>
>> >>>> waduh masih error ya...
>> >>>> masih belum sempet buka file nih...
>> >>>>
>> >>>> kira-kira yang bikin error bagian mana ?
>> >>>> Jangan-jangan yang baris RS.open blablabla
>> >>>>
>> >>>>
>> >>>> Kid.
>> >>>>
>> >>>> 2012/12/19 Heru Safrudin <[email protected]>
>> >>>>
>> >>>>> **
>>
>> >>>>>
>> >>>>>
>> >>>>> Dear Mr.Kid
>> >>>>>
>> >>>>> Karena putus asa itu dosa, terpaksa saya kuatkan hati dan beranikan
>> >>>>> diri untuk terus bertanya.
>> >>>>> Instruksi Mr. sudah saya laksanakan tapi belum berjalan seperti yg
>> >>>>> diharapkan
>> >>>>> Apalagi yang masih salah ? file terlampir
>> >>>>>
>> >>>>> Semoga Allah SWT memberi petunjuk dan pertolongan pada orang yg
>> >>>>> memberi
>> >>>>> pertolongan
>> >>>>> وَالسَّلَامُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
>> >>>>>
>> >>>>>
>> >>>>> Pada 19 Desember 2012 12:35, Mr. Kid <[email protected]> menulis:
>> >>>>>
>> >>>>> **
>>
>> >>>>>>
>> >>>>>>
>> >>>>>> Maaf belum sempat lihat langsung dalam file.
>> >>>>>>
>> >>>>>> Pokok permasalahannya adalah bagaimana cara Anda menyusun query.
>> >>>>>> Setiap field yang nilai blank di worksheet :
>> >>>>>> 1. harus jadi 0 ketika dimasukkan ke field db bertipe numerik
>> >>>>>> 2. boleh tetap nullstring '' jika field db bertipe text (string)
>> >>>>>>
>> >>>>>> Coba pada blok kondisi dalam for each teks1 blabla
>> >>>>>> diubah jadi :
>> >>>>>> select case teks1.column
>> >>>>>> case 4,5 'tipe datetime
>> >>>>>> teks1="#" & format$(teks1,"YYYY-MM-DD") & "#"
>> >>>>>> case 3,11 'tipe string
>> >>>>>> teks1="'" & teks1 & "'"
>> >>>>>> case else 'numerik'
>> >>>>>> teks1=clng(0 & teks1)
>> >>>>>> end select
>> >>>>>> teks=teks & "," & teks1
>> >>>>>>
>> >>>>>> kemudian bagian replace teks yag tadinya berbunyi :
>> >>>>>> teks=replace( blabla )
>> >>>>>> diganti menjadi :
>> >>>>>> teks=mid$(teks,2)
>> >>>>>>
>> >>>>>> Wassalam,
>> >>>>>> Kid.
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>>>
>> >>>>
>> >>>
>> >>>
>> >>> --
>> >>> Regards,
>> >>>
>> >>> Heru Safrudin
>> >>>
>> >>>
>> >>>
>> >>
>> >
>> >
>> >
>> > --
>> > Regards,
>> >
>> > Heru Safrudin
>> >
>>
>> --
>> Regards,
>>
>> Heru Safrudin
>>
>>
>  
>



-- 
Regards,

Heru Safrudin

Kirim email ke