Author Topic: di grid supaya tak double  (Read 1392 times)

0 Members and 1 Guest are viewing this topic.

Offline @fm

  • Full Member
  • *
  • Posts: 68
di grid supaya tak double
« on: November 29, 2010, 03:13:02 PM »
sore master
saya buat pelunasan hutang dgn lbh dari 1 faktur, berjalan bener
satu form dan 1 grid (3kolom, 1.faktur,2sisa hutang,3dibayar)

di kolom 1 (keypress) sy tulis ini
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=13
      SELECT fbyrhutangfaktur
      Select count(*) as jumlah, faktur from fbyrhutangfaktur group by faktur ORDER BY jumlah DESC into cursor cxx READWRITE
      Select cxx
      n=cxx.jumlah
      IF n>1
         MESSAGEBOX("faktur sudah ada...!!",0+16,"..::Info")   
        RETURN 
      ENDIF
ENDIF

*.kelemahanya
1.masih suka lolos/doble faktur yg sama
2.setelah di ganti fakturnya (dikolom1) yg berbeda malah dianggap faktur sudah ada (n>1)

mohon pencerahnya master supaya faktur yg di input tidak double

Offline andisheva

  • Hero Member
  • *
  • Posts: 785
Re: di grid supaya tak double
« Reply #1 on: November 29, 2010, 03:58:47 PM »
sore master
saya buat pelunasan hutang dgn lbh dari 1 faktur, berjalan bener
satu form dan 1 grid (3kolom, 1.faktur,2sisa hutang,3dibayar)

di kolom 1 (keypress) sy tulis ini
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=13
      SELECT fbyrhutangfaktur
      Select count(*) as jumlah, faktur from fbyrhutangfaktur group by faktur ORDER BY jumlah DESC into cursor cxx READWRITE
      Select cxx
      n=cxx.jumlah
      IF n>1
         MESSAGEBOX("faktur sudah ada...!!",0+16,"..::Info")   
        RETURN 
      ENDIF
ENDIF

*.kelemahanya
1.masih suka lolos/doble faktur yg sama
2.setelah di ganti fakturnya (dikolom1) yg berbeda malah dianggap faktur sudah ada (n>1)

mohon pencerahnya master supaya faktur yg di input tidak double

coba bantu...

coba di tambahin " Select .....WHERE...."

Monggo yang laen

andisheva
« Last Edit: November 29, 2010, 04:13:48 PM by tejos »

Offline onytoo

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 1.032
Re: di grid supaya tak double
« Reply #2 on: November 29, 2010, 04:48:42 PM »
@fm:
sebaiknya jangan di event KeyPress, pindahkan saja ke event Valid
Code: [Select]
LOCAL lcSelect, llResult

lcSelect = SELECT()
llResult = .T.

SELECT COUNT(*) AS nCount ;
  FROM  fbyrhutangfaktur ;
  WHERE UPPER(ALLTRIM(faktur))=UPPER(ALLTRIM(this.Value)) ;
  INTO CURSOR xxx

IF _TALLY > 0 AND USED([xxx])
  =MESSAGEBOX([Nomor faktur sudah ada!])
  USE IN xxx
  llResult = .F.
ENDIF

SELECT (lcSelect)

RETURN llResult


 :thumbsup:
Long life Visual FoxPro...

Offline hafiz

  • Full Member
  • *
  • Posts: 92
Re: di grid supaya tak double
« Reply #3 on: November 29, 2010, 04:55:34 PM »
select fbyrhutangfaktur
set order to no_faktur
seek(alltr(this.valu))
if found()
    MESSAGEBOX("faktur sudah ada...!!",0+16,"..::Info")   
    return .f.
endif
salah satu amal yang tidak terputus pahalanya adalah ilmu yang bermanfaat.

Offline @fm

  • Full Member
  • *
  • Posts: 68
Re: di grid supaya tak double
« Reply #4 on: November 29, 2010, 07:40:07 PM »
pak onytoo kalau tulis di "event Valid" selalu pesan =MESSAGEBOX([Nomor faktur sudah ada!]) yg terbaca.

Offline Sammy

  • Hero Member
  • *
  • Posts: 2.400
Re: di grid supaya tak double
« Reply #5 on: November 29, 2010, 08:06:47 PM »
pak onytoo kalau tulis di "event Valid" selalu pesan =MESSAGEBOX([Nomor faktur sudah ada!]) yg terbaca.
Kelihatannya ada kesalahan kecil di listing pak Ony.
SELECT COUNT(*) as Jml FROM ... -> COUNT() selalu menghasilkan 1 baris, maka tidak bisa pakai _tally >0. Coba pakai:
IF xxx.jml > 0
    msgb()

Sammy

Offline @fm

  • Full Member
  • *
  • Posts: 68
Re: di grid supaya tak double
« Reply #6 on: November 29, 2010, 08:58:25 PM »
IF  xxx.nCount > 0 AND USED([xxx])

setelh di ganti ini, tetap saja selalu di anggap ncount>1 walau data kosong

Offline Sammy

  • Hero Member
  • *
  • Posts: 2.400
Re: di grid supaya tak double
« Reply #7 on: November 29, 2010, 09:11:46 PM »
IF  xxx.nCount > 0 AND USED([xxx])

setelh di ganti ini, tetap saja selalu di anggap ncount>1 walau data kosong
NB: ga perlu pakai AND USED('xxx')

Jika nCount masih > 1, maka WHERE Anda yg membawa record tsb. Coba diganti sbb supaya Anda bisa debugging:

SELECT faktur ;    && ganti dg beberapa field (ga pakai count() dulu) biar bisa lihat hasil...
  FROM  fbyrhutangfaktur ;
  WHERE UPPER(ALLTRIM(faktur))==UPPER(ALLTRIM(this.Value)) ; && cat: beri == supaya perbandingan exact.
  INTO CURSOR xxx
browse && disini Anda bisa melihat dan analisa apanya yg ga beres...
return
Sammy

Offline tfssts

  • Junior Member
  • *
  • Posts: 165
Re: di grid supaya tak double
« Reply #8 on: November 30, 2010, 03:56:20 AM »
>
>
Listing pak Onytoo sy modif sedikit...
LOCAL lcSelect, llResult
lcSelect = SELECT()
llResult = .T.
SELECT faktur, COUNT(faktur) FROM  fbyrhutangfaktur ;
WHERE UPPER(ALLTRIM(faktur)) = UPPER(ALLTRIM(this.Value)) ;
GROUP BY faktur HAVING COUNT(faktur) > 1 INTO CURSOR qhsl
SELECT qhsl
IF RECCOUNT() > 0
 MESSAGEBOX([Nomor faktur sudah ada!])
 llResult = .F.
ENDIF
USE
SELECT (lcSelect)
RETURN llResult
« Last Edit: November 30, 2010, 04:31:04 PM by tfssts »

Offline onytoo

  • Fox-id M.V.P
  • Hero Member
  • *
  • Posts: 1.032
Re: di grid supaya tak double
« Reply #9 on: November 30, 2010, 01:40:56 PM »
WADUH!!! maunya disuapin ya?
Eko deh kalo begitchu, coba yg ini.


llResult = .T.

SELECT faktur FROM fbyrhutangfaktur WHERE ALLTRIM(faktur)==ALLTRIM(this.Value) ;
  INTO CURSOR xxx

IF USED([xxx])
  IF RECCOUNT([xxx]) > 0
    =MESSAGEBOX([Nomor faktur sudah ada!])
   llResult = .F.
  ENDIF
  USE IN xxx
ENDIF

RETURN llResult


 :thumbsup:

Long life Visual FoxPro...