Sugerir numero de cliente, entre huecos

Sugerir numero de cliente, entre huecos

Postby noe aburto » Thu Jul 05, 2018 5:24 pm

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
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Sugerir numero de cliente, entre huecos

Postby hmpaquito » Thu Jul 05, 2018 6:17 pm

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  Expand view  RUN
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
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Sugerir numero de cliente, entre huecos

Postby joseluisysturiz » Thu Jul 05, 2018 7:33 pm

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!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sugerir numero de cliente, entre huecos

Postby hmpaquito » Fri Jul 06, 2018 12:55 pm

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.
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Sugerir numero de cliente, entre huecos

Postby lubin » Fri Jul 06, 2018 2:29 pm

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
lubin
 
Posts: 450
Joined: Fri Dec 09, 2005 12:41 am
Location: Lima, Peru

Re: Sugerir numero de cliente, entre huecos

Postby joseluisysturiz » Fri Jul 06, 2018 2:40 pm

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
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: Sugerir numero de cliente, entre huecos

Postby FranciscoA » Fri Jul 06, 2018 10:09 pm

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  Expand view  RUN
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.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Sugerir numero de cliente, entre huecos

Postby Armando » Sat Jul 07, 2018 2:36 am

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
User avatar
Armando
 
Posts: 3230
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Sugerir numero de cliente, entre huecos

Postby russimicro » Sat Jul 07, 2018 1:34 pm

ALGORITMO ... TEMA ESTRUCTURA DE DATOS

Code: Select all  Expand view  RUN

( 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
 
russimicro
 
Posts: 262
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Sugerir numero de cliente, entre huecos

Postby jbrita » Mon Jul 30, 2018 2:37 pm

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
jbrita
 
Posts: 502
Joined: Mon Jan 16, 2006 3:42 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 61 guests