Validar duplicidad en grid

HMG en Español

Moderator: Rathinagiri

Post Reply
jorge.posadas
Posts: 104
Joined: Mon May 19, 2014 7:43 pm
DBs Used: DBF, SQLite, MS-SQL, ACCESS, MariaDB (en proceso)
Location: Tizayuca, Hgo. México
Been thanked: 8 times
Contact:

Validar duplicidad en grid

Post by jorge.posadas »

Grupo,

Estoy creando una pantalla en donde se captura las ventas del día, y por cada captura voy llenando un grid para que el usuario vea lo que ha capturado, sin embargo tengo el problema que si el usuario capturo la venta número 120, y más adelante vuelve a capturar ese mismo número de vanta, ¿como valido que en grid BUSQUE si ya existe ese número? esto es para evitar que se capture más de una vez un mismo número de venta.

De antemano agradezco la ayuda.
Cordialmente

Jorge Posadas Ch
Tizayuca, Hgo.
M é x i c o .
Movil +52 55 2038 5338
SKYPE: jorge.posadasch
Email: jorge.posadas@gmail.com

User avatar
mustafa
Posts: 972
Joined: Fri Mar 20, 2009 11:38 am
DBs Used: DBF
Location: Alicante - Spain
Been thanked: 190 times
Contact:

Post by mustafa »

Si colocas un Contador de Captura no se repetirá
duplicidad de Captura, mira este Sample de Contador

Code: Select all


#include <hmg.ch>

*  Modified by   Mustafa López  Alicante (Spain)
  
*-----------------------------------------------*
FUNCTION MAIN   
*-----------------------------------------------*
  SET CODEPAGE TO SPANISH
  SET LANGUAGE TO SPANISH
  SET EXCLUSIVE ON  
  SET CENTURY ON
  SET DATE FRENCH
  SET DATE FORMAT TO 'dd/mm/yyyy'
  SET EPOCH TO 2000
  SET ESCAPE ON
  SET DELETED ON
  SET NAVIGATION EXTENDED
  SET SOFTSEEK ON  
  SET DECIMALS TO 0
  SET TOOLTIPSTYLE BALLOON

  PRIVATE apar_5 := 0

 IF !FILE("numerato.mem") 
     apar_5 := apar_5 + 1    
     apar_2 := STRZERO( apar_5 ,5)     
     apar_3 := DTOC(DATE())
     apar_4 := TIME()
     SAVE TO numerato.mem ALL LIKE apar_*
 ELSE
   
     RESTORE FROM numerato.mem ADDITIVE
 
  apar_5 := apar_5 + 1 
  apar_2 := STRZERO( apar_5 ,5)     
  apar_3 := DTOC(DATE())
  apar_4 := TIME()
 
  SAVE TO numerato.mem ALL LIKE apar_*

 ENDIF

  RESTORE FROM numerato.mem ADDITIVE

  MsgInfo( apar_5 )
  MsgInfo( apar_2 )

/*
  Para Salvar la Captura de Pantalla 
  RESTORE FROM numerato.mem ADDITIVE

   numeroQ := ALLTRIM( STRZERO( apar_5 ,5) )
   cNunPho := "Photo\"+ numeroQ +".jpg"

  apar_5 := apar_5 + 1 
  apar_2 := STRZERO( apar_5 ,5)     
  apar_3 := DTOC(DATE())
  apar_4 := TIME()
   SAVE TO numerato.mem ALL LIKE apar_*
*/

Return Nil
Mira : https://www.hmgforum.com/viewtopic.php? ... Cam#p60219
==>> WebCamPhoto.zip

Saludos
Mustafa

User avatar
danielmaximiliano
Posts: 2295
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Has thanked: 352 times
Been thanked: 65 times
Contact:

Post by danielmaximiliano »

Simple, el usuario puede capturar las veces que quiera una misma factura ya que la captura contiene en orden de facturacion o/u orden de la numeracion de la factura.. espero se comprendalo. lo mismo es valido para los remitos
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO

martingz
Posts: 294
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico
Has thanked: 22 times
Been thanked: 18 times

Post by martingz »

Jorge puede que sea una manera algo muy basico, pero yo validaria cuando ingreses el numero de la factura ,buscaria recorriendo los valores del grid

for y =1 to form.grid.itemcount
aValues:=form.grid.item(y)
if aValues[X] = form2.textnumfac.value

endif
next

algo asi

saludos

jorge.posadas
Posts: 104
Joined: Mon May 19, 2014 7:43 pm
DBs Used: DBF, SQLite, MS-SQL, ACCESS, MariaDB (en proceso)
Location: Tizayuca, Hgo. México
Been thanked: 8 times
Contact:

Post by jorge.posadas »

Lo resolvi, gracias a la sugerencia de Martin


// Reviso si no existe una venta previamente capturada
FOR venta := 1 TO Frm_Nota_Venta.Grd_Nota_Venta.ItemCount
IF ALLTRIM(Frm_Nota_Venta.Grd_Nota_Venta.Cell(venta,1)) == ALLTRIM(Frm_Nota_Venta.Txt_Serie.Value) .AND. +;
ALLTRIM(Frm_Nota_Venta.Grd_Nota_Venta.Cell(venta,3)) == ALLTRIM(STR(Frm_Nota_Venta.Txt_Numero_Nota.Value))
MsgExclamation("Ya existe ese número de venta con ese número de serie","Corriga")
Frm_Nota_Venta.Txt_Numero_Nota.SetFocus
RETURN
ENDIF
NEXT venta
Cordialmente

Jorge Posadas Ch
Tizayuca, Hgo.
M é x i c o .
Movil +52 55 2038 5338
SKYPE: jorge.posadasch
Email: jorge.posadas@gmail.com

User avatar
mol
Posts: 3361
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Has thanked: 256 times
Been thanked: 163 times
Contact:

Post by mol »

It would be easier to build your grid as a VIRTUAL.
In this case you have data in a table and you case use ASCAN function.

Post Reply