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

