NUMERO UNICO
-
- Posts: 4
- Joined: Mon Jul 07, 2008 8:37 pm
NUMERO UNICO
Estimados Amigos. Tengo un Problema con el correlativo de las boletas. Resulta que antes trabajabamos con correlativos independientes, pero ahora es un correlativo unico.
ALGUIEN TIENE UNA FUNCION para poder CAPTURAR DE FORMA UNICA EL NUMERO, es que que cuando alguien seleccione el numero ese numero quede tomado y nadie pueda tomar ese numero?
Agradecido desde ya.
MC
ALGUIEN TIENE UNA FUNCION para poder CAPTURAR DE FORMA UNICA EL NUMERO, es que que cuando alguien seleccione el numero ese numero quede tomado y nadie pueda tomar ese numero?
Agradecido desde ya.
MC
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Te sugiero lo siguiente, ese metodo lo uso para asignar NUMEROS DE FACTURAS DE VENTAS automaticamente, explicole: crea una DBF con variables llamada (ej.) NUMBOLETA tipo N y de longitud la que necesites, esa es la esencia de todo, ahora la trabajas asi: cuando vayas a SALVAR datos de la boleta NUEVA, buscar el ultimos valor de NUMBOLETA y lo incrementas de 1 en 1, NUMBOLETA ++ y le colocas ese valor a la otra base de datos donde guardas las boletas con su numero, asi el sistema asigna automaticamente el NUMEO DE BOLETA, espero te alla entedido y sea lo que necesitas, cualquier duda o algun ejemplo puedes escribirme a mi privado, a la orden, saludos...desde Venezuela.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
-
- Posts: 4
- Joined: Mon Jul 07, 2008 8:37 pm
- Patricio Avalos Aguirre
- Posts: 1028
- Joined: Fri Oct 07, 2005 1:56 pm
- Location: La Serena, Chile
- Contact:
Hola
Y que pasa si aborta la operacion?
Lo que yo hago es un timer que le va mostrando la factura actual, pueden estar 3 personas en el modulo de factura pero el primero que graba es el que se queda con el numero y luego actualiza los numero, eso lo hace el timer
espero haberme explicado
buedo dejo la rutina para quien le pueda servir..
Y que pasa si aborta la operacion?
Lo que yo hago es un timer que le va mostrando la factura actual, pueden estar 3 personas en el modulo de factura pero el primero que graba es el que se queda con el numero y luego actualiza los numero, eso lo hace el timer
espero haberme explicado
buedo dejo la rutina para quien le pueda servir..
Code: Select all
REDEFINE GET aGet[id_numdocu-20,1];
VAR _numdocu ;
ID id_numdocu OF oDlg UPDATE ;
COLOR CLR_BLACK, RGB(255,255,200) ;
PICTURE "9999999999" ;
VALID vDocument( aGet, oLbx, aButton, oSay, lOt, .f. ) ;
WHEN cOpcion <> "I"
DEFINE TIMER oTmr INTERVAL 5000 ACTION iif( lActive, ( lActive := .f., CheckFactura(aGet ), lActive := .t.), NIL )
ACTIVATE TIMER oTmr
Eval( oTmr:bAction )
// ----------------------------------------------------------------------------------------
static function CheckFactura(aGet )
Parame->( dbSkip(0) ) //actualizamos la base de datos que tiene la ultima factura impresa
_numdocu := Parame->Fact+1
aGet[id_numdocu-20,1]:Refresh()
return nil
// -------------------------------------------------------------------------------------------
Saludos
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
Patricio
__________________________________________________________________
Version: Harbour 3.2.0dev (r1307082134),Compiler: Borland C++ 5.8.2 (32-bit)
PCode version: 0.3, FWH 13.2
http://www.sialm.cl
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Hola
Mira mi codigo:
Usas:
Ou:
Mira mi codigo:
Code: Select all
FUNCTION PsqControle( database )
// Inicializa controle com um numero diferente do total de registros
nControle := iif( recco()=0, 1, recco()+(recco()/2) )
// Guarda a área atual do .DBf a ser controlado
OldArea := Select()
If !File("CONTROLE.DBF")
// Cria a estrutura do controlador caso ainda não exista
ESTRU_DBF := { ;
{ "DATABASE" , "C",12, 0 } , ; // Guarda o nome do DBF/ALIAS
{ "CONTADOR" , "N", 7, 0 } } // Armazena o contador
DBCREATE( "CONTROLE", ESTRU_DBF )
EndIf
If Select("CONTROLE") == 0 // Se ainda não estiver aberto, abre...
USE controle NEW
Else
DbSelectar("CONTROLE") // Se ja estiver aberto SELEciona
EndIf
// Verifica a existencia da chave( que pode ser também uma palavra )
LOCATE FOR UPPER(controle->database) = UPPER(database)
if found()
// Encontrando incrementa o contador
nControle := controle->contador + 1
RLOCK() // Usado no caso de rede
controle->contador := nControle
COMMIT
else
// Caso a chave ainda não exista será criada
APPEND BLANK
controle->database := database
controle->contador := nControle
COMMIT
endif
// Volta a área antiga
SELE (OldArea)
// Retorna o numero de controle
RETURN nControle
Code: Select all
...
dbSelectArea( "CLIENTES" )
CLIENTES->IDCLIENTE := PsqControle( dbf() )
APPEND BLANK
...
COMMIT
...
Code: Select all
...
dbSelectArea( "FACTURA" )
FACTURA->IDFACTURA := PsqControle( dbf() )
APPEND BLANK
...
COMMIT
...
- Willi Quintana
- Posts: 859
- Joined: Sun Oct 09, 2005 10:41 pm
- Location: Cusco - Perú
- Contact:
Analizamos...
Si estas en Red, con un solo correlativo de facturas,,, mi idea es la siguiente (al menos asi me funciona sin problemas)
1ro, se "arma" los datos de la factura,
2do, luego de darle el click en el boton Imprimir,, un linea antes de que empieze la impresion de la factura, se toma el numero de la tabla correspondiente (con un Flock() )
3ro, Se incrementa en 1 el numero, y se actualiza la tabla y de hace el UnLock(),
4ro, Se imprime la factura con el numero inicialmente tomado.
5to, Si se produce un error enla impresion, simplemente se anula el documento, y se continua con el numero que sigue...
Salu2
Si estas en Red, con un solo correlativo de facturas,,, mi idea es la siguiente (al menos asi me funciona sin problemas)
1ro, se "arma" los datos de la factura,
2do, luego de darle el click en el boton Imprimir,, un linea antes de que empieze la impresion de la factura, se toma el numero de la tabla correspondiente (con un Flock() )
3ro, Se incrementa en 1 el numero, y se actualiza la tabla y de hace el UnLock(),
4ro, Se imprime la factura con el numero inicialmente tomado.
5to, Si se produce un error enla impresion, simplemente se anula el documento, y se continua con el numero que sigue...
Salu2
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Willi, uso el mismo metodo que tu con la diferencia que genero siguiente correlativo del NUMERO FACTURA cuando FINALIZO la FACTURA al SALVARLA, ya que no es obligadoque emitas la factura al momento o puedes llegar a tener un problema en la impresion, por eso lo genero antes, y puedo imprimirla cuando quiera....pero creo llevamos la misma logica, esperemos le ayude al colega, este tema ya lo habiamos tocado antes pero no lo consigo, ya que fue hace tiempo, bueno por alguna aca estamos..saludos.Willi Quintana wrote:Analizamos...
Si estas en Red, con un solo correlativo de facturas,,, mi idea es la siguiente (al menos asi me funciona sin problemas)
1ro, se "arma" los datos de la factura,
2do, luego de darle el click en el boton Imprimir,, un linea antes de que empieze la impresion de la factura, se toma el numero de la tabla correspondiente (con un Flock() )
3ro, Se incrementa en 1 el numero, y se actualiza la tabla y de hace el UnLock(),
4ro, Se imprime la factura con el numero inicialmente tomado.
5to, Si se produce un error enla impresion, simplemente se anula el documento, y se continua con el numero que sigue...
Salu2
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!