Sugerir numero de cliente, entre huecos
- noe aburto
- Posts: 420
- Joined: Wed Nov 26, 2008 6:33 pm
- Location: Morelia, Mich. Mexico.
Sugerir numero de cliente, entre huecos
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.
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
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
Re: Sugerir numero de cliente, entre huecos
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.
Saludos
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
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sugerir numero de cliente, entre huecos
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...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.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
Re: Sugerir numero de cliente, entre huecos
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.
Re: Sugerir numero de cliente, entre huecos
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
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
- joseluisysturiz
- Posts: 2024
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: Sugerir numero de cliente, entre huecos
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...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.
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Sugerir numero de cliente, entre huecos
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)
Saludos.
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
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Sugerir numero de cliente, entre huecos
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
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
-
- Posts: 179
- Joined: Sun Jan 31, 2010 3:30 pm
- Location: Bucaramanga - Colombia
Re: Sugerir numero de cliente, entre huecos
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
Re: Sugerir numero de cliente, entre huecos
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
SELECT t.asiento +1 FROM vendido t WHERE NOT EXISTS ( SELECT * FROM vendido t2 WHERE t2.asiento = t.asiento + 1 ) LIMIT 1
Saludos