Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

generador de códigos

22 views
Skip to first unread message

Tolo

unread,
Jan 3, 2002, 10:06:45 AM1/3/02
to
    Hola, he hecho este código para crear un código automático para mis registros, pues bien, resulta que cuando dos personas crean un registro nuevo, uno se queda colgado, entiendo que se queda en el bucle. Por favor me podeis ayudar, no entiendo por que el requery() no funciona y dejar dar el alta:
 
FUNCTION NewId(tcAlias)
LOCAL lcAlias, lnId,lcOldReprocess, lnOldArea
local w_dev1, w_dev2
 lnOldArea=SELECT()
 IF PARAMETERS()<1
  lcAlias=UPPER(ALIAS())
 ELSE
  lcAlias=UPPER(tcAlias)
 ENDIF
 w_dev1="0"
do while w_dev1="0" 
    * generamos un nuevo id para esta tabla
    select v_generador
    requery ('v_generador')
    locate for v_generador.tabla=lcalias
    if found() && si encontramos el contador
        lnID=str(v_generador.siguiente_id , v_generador.longitud_id)
        lnID=v_generador.prefijo+strtran(lnID,' ','0')
        REPLACE v_generador.siguiente_id WITH (v_generador.siguiente_id + 1)
     endif
    begin transaction
        w_dev2 = tableupdate(0,.f.,'v_generador') 
    end transaction
    if w_dev2=.f.
        tablerevert(.f.,'v_generador') && revertimos los cambios en la vista
        * si la actualización de la tabla falla, entonces volvemos a generar otro id <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        * el proceso puede fallar, si otra persona genera otro id para esta tabla,
        * mientras nosotros generamos el nuestro
        w_dev1= "0"
   else
       * si todo va bien, pues nada, devolvemos el id y listos
       w_dev1= lnID
   endif
enddo
select (lnOldArea)
return w_dev1
 
ENDFUNC

 
 
Un saludo,
 
 
Tolo,
 
Mallorca

Juan Ramón Hueso

unread,
Jan 3, 2002, 11:02:02 AM1/3/02
to
Normalmente para generar el id automatico, no se usa buffering en la tabla
donde lo buscas, sino que bloqueas la tabla hasta que grabas el número
asignado y entonces la liberas y asi el siguiente puede entrar a generar un
nuevo id.

--

Juan Ramón.
Cartagena-España.
"Tolo" <bartolome...@cats-services.com> escribió en el mensaje
news:eZ8ZcgGlBHA.2560@tkmsftngp02...

Tolo

unread,
Jan 4, 2002, 11:06:44 AM1/4/02
to
Hola Juan Ramón,

Si, tienes razón, pero la idea de mi aplicación es la de usar siempre
vistas, para así abstraerme totalmente del diseño de la base de datos, para
que así si la quiero migrar a Oracle, SQL no tenga que tocar para nada el
código.

De todas formas, no entiendo por que no funciona.

Un saludo

Tolo
"Juan Ramón Hueso" <hu...@terra.es> escribió en el mensaje
news:Onyum9GlBHA.2104@tkmsftngp07...

0 new messages