FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Sugerir numero de cliente, entre huecos
Posts: 418
Joined: Wed Nov 26, 2008 06:33 PM
Sugerir numero de cliente, entre huecos
Posted: Thu Jul 05, 2018 05: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
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Sugerir numero de cliente, entre huecos
Posted: Thu Jul 05, 2018 06: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 (fw): Select all Collapse
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
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Sugerir numero de cliente, entre huecos
Posted: Thu Jul 05, 2018 07: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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Sugerir numero de cliente, entre huecos
Posted: 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.
Posts: 467
Joined: Fri Dec 09, 2005 12:41 AM
Re: Sugerir numero de cliente, entre huecos
Posted: Fri Jul 06, 2018 02: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

Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Sugerir numero de cliente, entre huecos
Posted: Fri Jul 06, 2018 02: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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: Sugerir numero de cliente, entre huecos
Posted: 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 (fw): Select all Collapse
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
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Sugerir numero de cliente, entre huecos
Posted: Sat Jul 07, 2018 02: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

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
Posts: 410
Joined: Sun Jan 31, 2010 03:30 PM
Re: Sugerir numero de cliente, entre huecos
Posted: Sat Jul 07, 2018 01:34 PM
ALGORITMO ... TEMA ESTRUCTURA DE DATOS

Code (fw): Select all Collapse
( 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
Posts: 537
Joined: Mon Jan 16, 2006 03:42 PM
Re: Sugerir numero de cliente, entre huecos
Posted: Mon Jul 30, 2018 02: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

Continue the discussion