Author Topic: Multi Command di Mysql Error  (Read 190 times)

0 Members and 1 Guest are viewing this topic.

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Multi Command di Mysql Error
« on: November 07, 2018, 11:29:05 AM »
Coding di bawah ini di komputer saya window 10, lancar jaya, tapi saya praktekkan di komputer window 7 error
saya coba simpan variabel itu ke file, lalu saya jalankan di sqlyog, tidak error.. perintah dibawah ini jalan mulus..

kenapa ya?
tiba-tiba hasil sqlexec bernilai -1

         SELECT tdetail
         SCAN
            TEXT TO lcsql NOSHOW TEXTMERGE PRETEXT 7 ADDITIVE
               INSERT INTO Opname_d(idOpname,no,idstock,kode,nama,jumlah,satuan1,jumlah2,satuan2,jumlah3,satuan3,kondisi,jumlahpcs)
               values(<<thisform.idOpname>>,<<tdetail.no>>,<<tdetail.idstock>>,'<<allt(tdetail.kode)>>','<<allt(tdetail.nama)>>','<<tdetail.jumlah>>','<<tdetail.satuan1>>','<<tdetail.jumlah2>>','<<allt(tdetail.satuan2)>>','<<tdetail.jumlah3>>','<<tdetail.satuan3>>','<<tdetail.kondisi>>','<<tdetail.jumlahpcs>>');
            ENDTEXT
            IF VAL(LEFT(kondisi,1))=1
               TEXT TO lcsql NOSHOW TEXTMERGE PRETEXT 7 ADDITIVE
               update StockPCS set JumlahPCS='<<tdetail.jumlahpcs>>' where idstock=<<tdetail.idstock>>;
               ENDTEXT
            ELSE
               TEXT TO lcsql NOSHOW TEXTMERGE PRETEXT 7 ADDITIVE
               update StockBSPCS set JumlahPCS='<<tdetail.jumlahpcs>>' where idstock=<<tdetail.idstock>>;
               ENDTEXT
            ENDIF          
         ENDSCAN      
         strtofile(lcsql,'opname.cgg')
         lchasil=SQLEXEC(lckonek,lcsql)


koneksinya pake ini:
lcCon = "DRIVER={MySQL ODBC 5.1 Driver};DESC=;DATABASE="+nm;
      +";SERVER="+lccon+";UID=root"+;
      ";PASSWORD="+lcpass+";PORT="+lcport+";OPTION=67108867;STMT=;"

dimana option nya saya pake cara mas foxi yaitu 67108867

tapi kalau saya SQLEXEC didalam scandisk pake parameter ?, lancar, hanya saja kan jadi lama, setiap record kita eksekusi


Offline xWongso

  • Newbie
  • *
  • Posts: 25
Re: Multi Command di Mysql Error
« Reply #1 on: November 07, 2018, 04:30:58 PM »
CMIIW...Seharusnya tidak menjadi masalah kalau sudah jalan di windows 10 kemudian ke windows 7 begitu juga sebaliknya…
1. Cek Windowsnya...apakah 64 Bit atau 32 Bit...Kalau 64 Bit maka ODBC connectornya harus 32 Bit karena VFP versi 32 Bit
2. Eksekusi script di SQLYog tetap bisa jalan baik 32 Bit(ODBC 32 Bit) maupun 64 Bit (ODBC 64 Bit).

Rgds
XWongso

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.603
    • Foxy Land
Re: Multi Command di Mysql Error
« Reply #2 on: November 07, 2018, 08:08:45 PM »
@abunuralif:

Seperti reply @xWongso, code Anda harusnya jalan. Perhatikan juga reply (1) pak @xWongso. Biarpun Windows nya 64 bit, tetap harus pakai ODBC driver 32 bit.
Sedikit tambahan: kalau Anda dapat result -1 dari hasil SQLEXEC, Anda bisa jalankan code tambahan seperti ini;
Code: [Select]
   lnHasil = SQLExec(lnConnectionHandle, lcSQLCmd, [xResult])

    if lnHasil > 0
         messagebox ("Done")
    else
          AError(laErr)
          Messagebox (laErr(2))
    endif

Dengan begitu, Anda akan mendapatkan extended error dari ODBC. Biasanya extended error ini lebih informatif, jadi Anda bisa memastikan penyebab kesalahannya.

Hope this helps,


foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #3 on: November 07, 2018, 09:43:41 PM »
isi variabelnya ini, masih dianggap error:
delete from Opname_d where idOpname=7;INSERT INTO Opname_d(idOpname,no,idstock,kode,nama,jumlah,satuan1,jumlah2,satuan2,jumlah3,satuan3,kondisi,jumlahpcs)
values(7,1,267,'49','ABC PLUS','10,00000000000','DUS','0,00000000000','','0,00000000000','   ','1. Barang Baik','10,00000000000');update StockPCS set JumlahPCS='10,00000000000' where idstock=267;INSERT INTO Opname_d(idOpname,no,idstock,kode,nama,jumlah,satuan1,jumlah2,satuan2,jumlah3,satuan3,kondisi,jumlahpcs)
values(7,2,269,'50','ABC SUSU & MOCCA','5,00000000000','DUS','0,00000000000','','0,00000000000','   ','1. Barang Baik','5,00000000000');update StockPCS set JumlahPCS='5,00000000000' where idstock=269;


Error yang muncul adalah :
Connectivity error :[MySQL][O 5.1 Driver][mysqld-5.0.37-community-nt]You
have an error in your SQL syntax; check the manual that correspondso your
MysQL Server version for the right syntax to use near ;INSERT INTO
Opname_d(idOpname,no,idstock,kode,n

Gimana nih solusinya

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #4 on: November 07, 2018, 09:48:19 PM »
Odbc saya pake 32 bit karena saya pake udah sangat lama, dari versinya pun masih versi 5.1

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.603
    • Foxy Land
Re: Multi Command di Mysql Error
« Reply #5 on: November 08, 2018, 08:51:26 AM »
Dua kecurigaan:
1. Apakah versi ODBC connector Anda masih dibawah 3.51? FLAG_MULTI_STATEMENTS baru diperkenalkan di ODBC 3.51.18.
2. Apakah Anda yakin query Anda betul? coba copy variable lcSQL ke clipboard (bisa pakai _CLIPTEXT ), lalu jalankan di SQL frontend (sqlyog/mysql manager/dll). Jangan-jangan error juga.... :-D

hth,
foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #6 on: November 08, 2018, 09:38:11 AM »
Dua kecurigaan:
1. Apakah versi ODBC connector Anda masih dibawah 3.51? FLAG_MULTI_STATEMENTS baru diperkenalkan di ODBC 3.51.18.


saya lihat lagi memang versi 5.1, filenya 3. mysql-connector-odbc-5.1.5-win32.msi

afwan boleh di share yang sudah biasa mas lancara jaya, pake ODBC yang mana? biar saya tidak coba-coba lagi

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #7 on: November 08, 2018, 09:40:36 AM »

2. Apakah Anda yakin query Anda betul? coba copy variable lcSQL ke clipboard (bisa pakai _CLIPTEXT ), lalu jalankan di SQL frontend (sqlyog/mysql manager/dll). Jangan-jangan error juga.... :-D

hth,
foxy
udah saya copas di sqlyog, jalan bagus mas..
kalau boleh tahu.. kira-kira dari query yang saya copas diatas.. dimana yang kelirunya? maaf saya belum lama dalam bidang database mysq

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.603
    • Foxy Land
Re: Multi Command di Mysql Error
« Reply #8 on: November 08, 2018, 10:02:37 AM »
Saya juga gak tau error nya dimana, pertama karena saya gak punya tabel nya, dan kedua karena saya cuma punya tiga aplikasi di production yang jalan dengan mysql. Sebagian besar saya pakai MS SQL Server dan Postgresql.

Anyway, kalau saya pakai MySQL, saya menggunakan back tick (`  --> tombol back tick ada di sebelah angka 1 di keyboard saya) sebagai pengapit nama kolom; jadi:
Code: [Select]
INSERT INTO Opname_d(`idOpname`,`no`,`idstock`,`kode`,`nama`,`jumlah`,`satuan1`,`jumlah2`,`satuan2`,`jumlah3`, .... (dst)

Mungkin itu salahnya.

(cek juga versi ODBC Anda seperti yang sudah saya sebutkan di post sebelum ini. Kalau belum versi 3.51.18, ya mau ngomong apa lagi... Alternatif lain, upgrade saja odbc Anda ke 5.1)


hth,
foxy
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.603
    • Foxy Land
Re: Multi Command di Mysql Error
« Reply #9 on: November 08, 2018, 10:04:09 AM »
Dua kecurigaan:
1. Apakah versi ODBC connector Anda masih dibawah 3.51? FLAG_MULTI_STATEMENTS baru diperkenalkan di ODBC 3.51.18.


saya lihat lagi memang versi 5.1, filenya 3. mysql-connector-odbc-5.1.5-win32.msi

afwan boleh di share yang sudah biasa mas lancara jaya, pake ODBC yang mana? biar saya tidak coba-coba lagi

oh, sudah pakai 5.1 ya? Ya harusnya jalan....  :)
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #10 on: November 08, 2018, 10:33:10 AM »
makasih mas foxi..
akan saya testing dulu..

oh ya, kenapa pake postgre? tidak mysql..  saya ikut cara yang udah sukses.. karena saya masih newbie dalam mysql

Offline foxy

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 3.603
    • Foxy Land
Re: Multi Command di Mysql Error
« Reply #11 on: November 08, 2018, 10:49:45 AM »
memilih postgresql lebih karena preferensi pribadi.

MySQL juga bagus kok... Yang penting bukan database nya, tapi bisa gak memanfaatkannya.....

good luck :-)
This post is provided as is. Feel free to use all the codes and information, however understand that I don't have any obligations to fix any bug(s) or follow up this subject.

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #12 on: November 08, 2018, 02:35:29 PM »
ternyata parameter insert terhadap field jumlah yang tipenya float (15,3)
tidak bisa diisi dengan parameter yang pake tanda kutip, seperti '20,00', dia maunya nilai numerik yaitu 20
jadi seharusnya insert into opname_d(jumlah) values(20)

yang jadi masalah.. karena variabel bertipe float, ketika saya pake
text to lcsql textmerge noshow
insert into opname_d(jumlah) values(<<x>>)
endtext

nah bagaimana caranya agar hasil <<x>> tidak disertai desimal, kalau jadi desimal maka akan dianggap parameter lain
jadi nantinya jadi
insert into opname_d(jumlah) values(20,00)

nah jadi ada parameter 00

bagaimana solusinya ya?

Offline abunuralif

  • Newbie
  • *
  • Posts: 41
Re: Multi Command di Mysql Error
« Reply #13 on: November 08, 2018, 04:19:46 PM »
Alhamdulillah sukses
Desimalnya aja pake titik dengan set sepra to '."
Jadi numerik sudah tak perlu pake kutip lagi

Makasih sobat sobat

Offline poison

  • Hero Member
  • *
  • Posts: 1.623
  • Poison 4 Women
Re: Multi Command di Mysql Error
« Reply #14 on: November 10, 2018, 05:42:04 AM »
baruuuu aja mau komen...itu kenapa decimal sparator pake , (koma)?!...

setahu saya, Field type tidak pernah masalah dikirimin dengan diapit petik (mis. text = 'value', num/int/float = '123.99' dst) yg penting isi dalem ' (petik) sesuai

tapiii...yaaa syukur dech sudah beres...


tips :
hindari "Naked Parsing Data", contohnya '<<allt(tdetail.nama)>>', ini sangat mungkin terkena SQL Injection, kalau tidak percaya silahkan diForm input isikan : jum'at, bisa dipastikan ditolak oleh database
solusinya, bikin aja function baru yg fungsinya utama mengkonversi data inputan untuk dijadikan data sesuai aturan database


monggoooooo
think BIG to get BIG thing