Author Topic: Mohon Bantuan Untuk Update Data SQL  (Read 3414 times)

0 Members and 1 Guest are viewing this topic.

Offline dewatidur

  • Newbie
  • *
  • Posts: 41
Mohon Bantuan Untuk Update Data SQL
« on: February 01, 2019, 05:42:57 PM »
Mohon bantuannya perintah yang benar dalam pengupdate tan data pada Mysql

saya punya :
table_tmp :
*nik          posisi
Roy          Mandor
Andi         kuli tetap
Table_utama :
*nik          posisi
Roy          kuli
Andi         kuli harian

Code yang saya gunakan dalam menampilkan ke Grid
Code: [Select]
lnHan =SQLSTRINGCONNECT(lcStringConn)
lnQuery = SQLEXEC(lnHan,"SELECT * FROM Table_utama","table_tmp")
thisform.Gridtemp.recordsource='table_tmp
'

Code yang saya gunakan dalam menyimpan ke table_tmp:
Code: [Select]
Select Table_tmp
Locate for alltrim(thisform.nik.value)=alltrim(nik)
replace posisi with alltrim(thisform.posisi.value)
'

Code yang saya gunakan dalam update ke Table_utama:
Code: [Select]
lnHan =SQLSTRINGCONNECT(lcStringConn)
SELECT Table_tmp
cursorsetprop("buffering",5,"Table_tmp")
SCAN
lcqu=("replace into Table_utama set table_tmp.posisi=?posisi")
lnQuery = SQLEXEC(lnHan,lcqu)
ENDSCAN

BEGIN TRANSACTION
UPDATA = tableupdate(.T.,.T.,"table_utama")
IF UPDATA
   flush
   END TRANSACTION
else
   rollback
   tablerevert("table_utama")
endif
messagebox(iif(UPDATA,"ok","gagal"))
'

Pada bagian update ke mysql nya tidak error, tapi tidak juga terjadi apa2..
mohon bantuan cara penggunaan buffer dan Transaction dalam update data ...
Regrads,

Offline s4ry4n4

  • Newbie
  • *
  • Posts: 30
Re: Mohon Bantuan Untuk Update Data SQL
« Reply #1 on: February 01, 2019, 10:10:00 PM »
coba gunakan kode program yang ini, tapi anda harus sedikit memodifikasinya. karena ada beberapa bagian yg tidak saya sertakan, tapi pada dasarnya hanya untuk panggil prosedur koneksi adja. semoga bisa membantu


WITH THIS.PARENT.PARENT
    lcKode = .txtKode.VALUE
    lcNama = .txtNama.VALUE
    lnDisc = .txtDisc.VALUE
    lnDisc2 = .txtDisc2.VALUE
    lnDiscEc = .txtDiscEc.VALUE
    lnDiscGr = .txtDiscGr.VALUE
    lnDiscGr2 = .txtDiscGr2.VALUE
    lnDiscSpl = .txtDiscSpl.VALUE
     lnDiscSpl2 = .txtDiscSpl2.VALUE
     lnDiscMoq = .txtDiscMoq.VALUE
     lnDiscMoq2 = .txtDiscMoq2.VALUE
    lcNamaLama = .cnama
    lcModulMenu = "Golongan"
    lcUser = ALLTRIM(_SCREEN.vfp_myuser)

    IF EMPTY(lcKode) THEN
        =MsgBox("Mohon mengisi kode golongan", 16, "Perhatian...")
        .txtKode.SETFOCUS()
        RETURN .F.
     ENDIF
    IF EMPTY(lcNama) THEN
        =MsgBox("Mohon mengisi nama golongan", 16, "Perhatian...")
        .txtNama.SETFOCUS()
        RETURN .F.
     ENDIF

     LOCAL lcError as Boolean, llStart, lnConnect, llErrorCommit, lnSucses, llFlag, llCekFlag
     STORE NULL TO tSQL1, tSQL2, tSQL3, tSQL4, tSQL5, tSQL6, tSQL7, tSQL8, tSQL9, tSQL10, tSQL11, tSQL12, tSQL13, tSQL14, tSQL15, tSQL16, tSQL17

     IF NOT THISFORM.EditMode THEN
        DO IsCekValidasiKey WITH "gol_kode", "rf_golongan", lcKode, .txtKode.MAXLENGTH, .label1.CAPTION+" : "+ALLTRIM(lcKode)+" sudah ada, mohon periksa kembali", llFlag
        IF m.llFlag THEN
           .txtKode.SETFOCUS()
           RETURN .F.
        ENDIF
     ENDIF

    llCekFlag = .F.
    DO IsReconnectSQL WITH m.lnConnect, m.llCekFlag
    THISFORM.strConnect = m.lnConnect

    IF NOT m.llCekFlag THEN
       .txtKode.SETFOCUS()
       RETURN .F.
    ELSE
       m.lnSucses = SQLEXEC(THISFORM.strConnect, "START TRANSACTION;")
     ENDIF
 
    IF m.lnSucses <= 0 THEN
      =IsDisconnectSQL()
      =MsgBox("Error Start Transaction", 16, "Koneksi Error...")
      .txtKode.SETFOCUS()
      RETURN .F.
    ENDIF

     IF NOT THISFORM.EditMode THEN
        tSQL1 = SQLEXEC(THISFORM.strConnect, "INSERT INTO rf_golongan(gol_kode, gol_nama, disc1, disc2, disc_ec, disc_gro1, disc_gro2, disc_sup1, disc_sup2, disc_moq1, disc_moq2, tgl_c, tgl_m, time_c, time_m, user_c, "+;
                "user_m) VALUES(?lcKode, ?lcNama, ?lnDisc, ?lnDisc2, ?lnDiscEc, ?lnDiscGr, ?lnDiscGr2, ?lnDiscSpl, ?lnDiscSpl2, ?lnDiscMoq, ?lnDiscMoq2, ?DATE(), ?DATE(), ?TIME(), ?TIME(), ?lcUser, ?lcUser)")
        tSQL2 = RekamLogUser(THISFORM.strConnect, m.lcModulMenu, 'Insert Data '+m.lcModulMenu+' Dengan Kode '+ALLTRIM(m.lcKode), 'Insert', ' ', 'Master', 'Insert Data', ' ', CTOD('- -'), ALLTRIM(m.lcKode), ALLTRIM(lcNama), 'Insert Master '+ALLTRIM(m.lcModulMenu))
     ELSE
        tSQL1 = SQLEXEC(THISFORM.strConnect, "UPDATE rf_golongan SET gol_nama = ?lcNama, disc1 = ?lnDisc, disc2 = ?lnDisc2, disc_ec = ?lnDiscEc, disc_gro1 = ?lnDiscGr, disc_gro2 = ?lnDiscGr2, disc_sup1 = ?lnDiscSpl, disc_sup2 = ?lnDiscSpl2, disc_moq1 = ?lnDiscMoq, "+;
                "disc_moq2 = ?lnDiscMoq2, tgl_m = ?DATE(), time_m = ?TIME(), user_m = ?lcUser WHERE gol_kode = ?LEFT(lcKode, 30)")
        IF LEFT(lcNama, 90) <> LEFT(lcNamaLama, 90) THEN
           tSQL2 = RekamLogUser(THISFORM.strConnect, m.lcModulMenu, 'Update Data '+m.lcModulMenu+' Dengan Nama Lama '+ALLTRIM(m.lcNamaLama)+', Menjadi Nama Baru '+ALLTRIM(lcNama), 'Update', ' ', 'Master', 'Update Data', ' ', CTOD('- -'), ALLTRIM(m.lcKode), ALLTRIM(lcNama), 'Update Master '+ALLTRIM(m.lcModulMenu))
        ELSE
           tSQL2 = NULL
        ENDIF
     ENDIF

     *------ Testing --------*
    IF (tSQL1 <> 1) OR (tSQL2 <> 1) THEN
      m.llErrorCommit = .T.
    ENDIF

    *----- Commit to mysql server ----*
     IF NOT m.llErrorCommit THEN
        m.lnSucses = SQLEXEC(THISFORM.strConnect, "COMMIT;")
        IF m.lnSucses <= 0 THEN
           =IsDisconnectSQL()
          =MsgBox("Error Commit Data", 16, "Commit Error...")
           .txtKode.SETFOCUS()
           RETURN .F.
        ENDIF
        THISFORM.sukses1ok = .T.
     ELSE
        m.lnSucses = SQLEXEC(THISFORM.strConnect, "ROLLBACK;")
        THISFORM.sukses1ok = .F.
        =IsDisconnectSQL()
       =MsgBox("Error Rollback Data", 16, "Rollback Error...")
        .txtKode.SETFOCUS()
     ENDIF

     =IsDisconnectSQL()
     IF THISFORM.sukses1ok THEN
        .SetSqlQuery(.oStrSql)
        THIS.PARENT.btnBatal.SETFOCUS()
        THIS.PARENT.btnBatal.CLICK()
        THIS.PARENT.btnInput.cmd_setfocus()
     ELSE
        .txtKode.SETFOCUS()
     ENDIF

     ._gridSorter.REFRESH()

     THIS.PARENT.btnInput.SETFOCUS()

     THISFORM.REFRESH()
ENDWITH


Offline yosef_fl

  • Full Member
  • *
  • Posts: 82
Re: Mohon Bantuan Untuk Update Data SQL
« Reply #2 on: February 03, 2019, 02:50:57 PM »
Setahu saya untuk update di mysql menggunakan syntax : "update table_utama set ....."

Offline dewatidur

  • Newbie
  • *
  • Posts: 41
Re: Mohon Bantuan Untuk Update Data SQL
« Reply #3 on: February 06, 2019, 12:32:11 PM »
amin,, Ty pak s4ry4n4 dan yosef_fl

kendala baru yg saya temukan pada VFP sekarang pada saat validasi data agar tidak sama
contoh :
Table_A
Code: [Select]
[b]Nota[/b]   [b] Barang[/b]
AAII    Buku
AABI   Pensil
BBII    penghapus
dengan validasi seperti ini :

Code: [Select]
NT=alltrim(thisform.Textnota.value) &&Nota
BR=alltrim(thisform.TextBarang.value) &&Barang

lnHan =SQLSTRINGCONNECT(lcStringConn)
lnQuery = SQLEXEC(lnHan,"SELECT * FROM tabel_A where ALLTRIM(nota)='"+NT+"'","tcek")
SELECT tcek
IF reccount()>0
GO TOP
a=NOTA
MESSAGEBOX("KODE NOTA SUDAH ADA"+a+STR(reccount()))
else
thisform.Simpan
endif

Setiap di jalankan dengan ISIan thisform.Textnota.value dengan awalan AA atau BB selalu di anggap sudah ada
mohon petunjuk

Offline s4ry4n4

  • Newbie
  • *
  • Posts: 30
Re: Mohon Bantuan Untuk Update Data SQL
« Reply #4 on: February 07, 2019, 07:49:44 AM »
coba di buat begini :

lnQuery = SQLEXEC(lnHan,"SELECT * FROM tabel_A where nota='"+LEFT(m.NT, 12)+"'","tcek")

SELECT tcek
LOCATE
IF RECCOUNT("tcek") <> 0 THEN
   =MESSAGEBOX("nota : "+ALLTRIM(m.NT)+", sudah ada cek lagi boss", 16, "Warning")
   RETURN .F.
ELSE
   THISFORM.Simpan()
ENDIF
« Last Edit: February 07, 2019, 07:53:49 AM by s4ry4n4 »

Offline poison

  • Hero Member
  • *
  • Posts: 1.631
  • Poison 4 Women
Re: Mohon Bantuan Untuk Update Data SQL
« Reply #5 on: February 11, 2019, 12:12:14 PM »
amin,, Ty pak s4ry4n4 dan yosef_fl

kendala baru yg saya temukan pada VFP sekarang pada saat validasi data agar tidak sama
contoh :
Table_A
Code: [Select]
[b]Nota[/b]   [b] Barang[/b]
AAII    Buku
AABI   Pensil
BBII    penghapus
dengan validasi seperti ini :

Code: [Select]
NT=alltrim(thisform.Textnota.value) &&Nota
BR=alltrim(thisform.TextBarang.value) &&Barang

lnHan =SQLSTRINGCONNECT(lcStringConn)
lnQuery = SQLEXEC(lnHan,"SELECT * FROM tabel_A where ALLTRIM(nota)='"+NT+"'","tcek")
SELECT tcek
IF reccount()>0
GO TOP
a=NOTA
MESSAGEBOX("KODE NOTA SUDAH ADA"+a+STR(reccount()))
else
thisform.Simpan
endif

Setiap di jalankan dengan ISIan thisform.Textnota.value dengan awalan AA atau BB selalu di anggap sudah ada
mohon petunjuk
emang fungsi ALLTRIM ada diMySQL ?...
think BIG to get BIG thing