Sugerir numero de cliente, entre huecos

Post Reply
User avatar
noe aburto
Posts: 420
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Sugerir numero de cliente, entre huecos

Post by noe aburto »

Saludos

Tengo que resolver una cuestion ya que mi catalogo de clientes puede tener hasta 99999 claves de clientes, y entre ellos hay numeros de cliente no usados, p. ej.

00001
00002
00005
00006
..
..
99889
99890
etc

lo que quiero es que por medio de una funcion que no recorrra todo el catalogo, me sugiera que el siguiente clientes sea 00003
y luego el 00004, que no estan registrados como cliente.

Que el siguiente cliente lo busque entre numeros que no estan secuanciales

Alguna sugerencia porfa.
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Sugerir numero de cliente, entre huecos

Post by hmpaquito »

Hola,

Lamentablemente, IMHO, tienes que recorrer toda la lista, de lo contrario te obligaría a llevar un control de los huecos, lo cual puede generarte muchos dolores de cabeza.

Code: Select all

FUNCTION ClienteHueco()
Local nArea:= Select()
LOCAL nI, cCli, cCliHueco:= NIL
SELECT Client
FOR nI:= 1 TO 99999
   cCli:= StrZero(nI, 5)
   SEEK cCli
   IF Eof()
       cCliHueco:= cCli
       EXIT
   ENDIF
NEXT
SELECT (nArea)
RETURN cCliHueco
 
Saludos
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Sugerir numero de cliente, entre huecos

Post by joseluisysturiz »

noe aburto wrote:Saludos

Tengo que resolver una cuestion ya que mi catalogo de clientes puede tener hasta 99999 claves de clientes, y entre ellos hay numeros de cliente no usados, p. ej.

00001
00002
00005
00006
..
..
99889
99890
etc

lo que quiero es que por medio de una funcion que no recorrra todo el catalogo, me sugiera que el siguiente clientes sea 00003
y luego el 00004, que no estan registrados como cliente.

Que el siguiente cliente lo busque entre numeros que no estan secuanciales

Alguna sugerencia porfa.
Lamentablemente eso pasa cuando no se usa incrementacion automatica, imagino que usas DBF, lo que te puedo sugerir es que hagas un recorrido de la DBF una ves, y crees una DBF adicional donde tengas los numero que no consigas en el recorrido, asi solo buscas en esa DBF el numero que le toca en el orden que deberia estar y luego de adicionarlo a la DBF principal, lo eliminas de la secundaria hasta que quede vacia, obvio chequeas antes de asignar si esta vacia o no la DBF...no se, es una idea que se me viene, asi no recorres cada rato la DBF principal, si no que tomas el valor de la DBF secundaria, espero haber explicado bien...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
hmpaquito
Posts: 1200
Joined: Thu Oct 30, 2008 2:37 pm

Re: Sugerir numero de cliente, entre huecos

Post by hmpaquito »

Lamentablemente eso pasa cuando no se usa incrementacion automatica,


El incremento automático, en ambiente multiusuario, también puede generar huecos si el código se obtiene al principio.
Puede ser necesario obtener el codigo al principio si se necesita asociarlo con tablas secundarias, por poner por caso.
Así pues, el incremento automatico tambien puede generar huecos: dependerá cuando se use el incremento: al final, en el momento de la grabación o antes.
User avatar
lubin
Posts: 404
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru
Contact:

Re: Sugerir numero de cliente, entre huecos

Post by lubin »

Estimado
Yo tenia ese problema y se me estaban acabando los codigos... 99989 .. 99990... 99991 asi que lo que hice fue ampliar la codificacion
para manejar ... 999998.. 999999.... luego A00001... A00002....A00003....A00004... A99999... B00001... B00002... cuando llegue Z99998... AA0001 .. AA0002...

Bueno amigo asi me olvie del problema, y los huecos.. ahi quedaron al olvido

Saludos..
Lubin
User avatar
joseluisysturiz
Posts: 2024
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela
Contact:

Re: Sugerir numero de cliente, entre huecos

Post by joseluisysturiz »

hmpaquito wrote:
Lamentablemente eso pasa cuando no se usa incrementacion automatica,


El incremento automático, en ambiente multiusuario, también puede generar huecos si el código se obtiene al principio.
Puede ser necesario obtener el codigo al principio si se necesita asociarlo con tablas secundarias, por poner por caso.
Así pues, el incremento automatico tambien puede generar huecos: dependerá cuando se use el incremento: al final, en el momento de la grabación o antes.
Cuando me refiero a incremento automatico, es mas relaciona con SQL(mysql, mariabd, etc) ya que el auto-increment evita esos huecos porque incrementa al momento de grabar el registro, seria una buena opcion para el colega, pero por lo visto usa DBF y no se si eso se podra hacer con DBF...saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
FranciscoA
Posts: 1964
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Sugerir numero de cliente, entre huecos

Post by FranciscoA »

Noe.
Lo que necesitas se parece a un chequeo de secuencia. (en mis programas reviso secuencias numericas de documentos)
Intenta lo siguiente, por favor. No tendras que recorrer toda la dbf, a menos que los huecos estén en la parte final de la secuencia.
La tabla debe estar indexada por el campo codigo. (en este ejemplo)

Code: Select all

FUNCTION RevisaSecuencia(cAlias,nMaxCodigos)
local n, cCodigo

FOR n := 1 TO nMaxCodigos  
   cCodigo := StrZero(n, 5)
  if !(cAlias)->(dbseek(cCodigo,.t.))
      EXIT
 endif
NEXT

Return cCodigo
 
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh1204-MySql-TMySql
User avatar
Armando
Posts: 2479
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México
Contact:

Re: Sugerir numero de cliente, entre huecos

Post by Armando »

Noe:

Ahí te va otra idea que puede funcionar si aún vas a controlar los folios.

1.- Creas una DBF con los folios que consideres se van a emplear,
desde el 1 hasta 99999, ejemplo:
00001
00002
00003
00004
………
……..
99999

2.- Cuando consumas un folio lo eliminas de esta DBF, supongamos
que consumes el 00002, entonces te quedarían así

00001
00003
00004
……..
…….
99999

De esta manera siempre tendrás al frente el folio que sigue, sin necesidad
de buscar huecos.

Ojalá puedas decirnos cual sugerencia te funcionó
Saludos
Last edited by Armando on Sat Jul 07, 2018 3:21 pm, edited 1 time in total.
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
russimicro
Posts: 179
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Sugerir numero de cliente, entre huecos

Post by russimicro »

ALGORITMO ... TEMA ESTRUCTURA DE DATOS

Code: Select all

( SI EL ID ES NUMERICO)
// index por id 
do while cli->( !eof() )
   cNroIde := cli->id   
   cli->( dbskip () )
   if val(cNroIde)+ 1 <> cli->id    
      alert("ID no es secuencial : "+cli->id)
   endif
enddo
 
jbrita
Posts: 425
Joined: Mon Jan 16, 2006 3:42 pm

Re: Sugerir numero de cliente, entre huecos

Post by jbrita »

Amigo prueba

SELECT t.asiento +1 FROM vendido t WHERE NOT EXISTS ( SELECT * FROM vendido t2 WHERE t2.asiento = t.asiento + 1 ) LIMIT 1

Saludos
Post Reply