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

Extraño comportamiento de SEEK()

2 views
Skip to first unread message

F�lix Berto Castillo G.

unread,
Jul 4, 2009, 1:59:06 AM7/4/09
to
Saludos!

Tengo este extra�o caso con el uso de SEEK() / Replace:
(Caso 1 - Como lo ten�a inicialmente)
SELECT TABLA
IF SEEK(<Dato1>,'TABLA','INDICE')
REPLACE TABLA.CAMPO WITH <Dato2>
ELSE
INSERT INTO TABLA VALUES (X, Y, Z)
REPLACE TABLA.CAMPO WITH <Dato2>
ENDIF

(Caso 2 - Mejorando el c�digo)
IF !SEEK(<Dato1>,'TABLA','INDICE')
INSERT INTO TABLA VALUES (X, Y, Z)
ENDIF
REPLACE TABLA.CAMPO WITH <Dato2>

***
* Problema: En ninguno de los casos la tabla TABLA se actualizaba o
insertaba el registro... al menos no la primera vez que se ejecuta, la
segunda vez (dos veces consecutivas) que se ejecutaba, si lo insertaba
adecuadamente; ahora bien:

(Caso 3 - Infalible)
Si se indica un GO TOP antes del SEEK(...) TODO funciona perfectamente. Que
extra�o no?

Alguien tiene alguna sugerencia o explicaci�n?
Gracias por anticipado!

--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
~FCG~
Felix Berto Castillo G.
La Vega, Rep. Dom.
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*


Dario

unread,
Jul 4, 2009, 8:27:14 AM7/4/09
to

En ese caso con esa estructura yo usaria indexseek...

--
Dario David Puccio
El Cyber_Gaucho
www.chispazodetradicion.com.ar

"F�lix Berto Castillo G." <felixbcastillo_AT_codetel.net.do> escribi� en el
mensaje news:Oc4wKyG$JHA....@TK2MSFTNGP02.phx.gbl...

Luis Maria Guayan

unread,
Jul 4, 2009, 10:36:29 AM7/4/09
to
Seguramente la tabla tiene buffering y al mover el puntero esta confirmando
los cambios. En ese caso lo mejor es siempre confirmar los cambios con
TABLEUPDATE()

En el caso del REPLACE mejor es:

REPLACE Campo WITH Dato IN Tabla


--
Luis Mar�a Guay�n
Tucum�n, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"F�lix Berto Castillo G." <felixbcastillo_AT_codetel.net.do> escribi� en el

mensaje de noticias:Oc4wKyG$JHA....@TK2MSFTNGP02.phx.gbl...

F�lix Berto Castillo G.

unread,
Jul 4, 2009, 1:00:49 PM7/4/09
to
Luis Ma., te confirmo que ninguna de las tablas de esa ventana tienen
buffering, pero ahora que lo mencionas, un dato m�s.

Tengo una ventana (1) con "sesi�n de datos privada" y el c�digo est� en una
ventana (2) que se abre a partir de �sa (1), pero que no tiene sesi�n de
datos privada, o sea, que debe compartir las mismas tablas ya abiertas en la
ventana inicial (1), en ninguno de los casos estoy usando buffering.

Gracias por responder a todos...

--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
~FCG~
Felix Berto Castillo G.
La Vega, Rep. Dom.
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

"Luis Maria Guayan" <luis...@portalfoxxx.com> wrote in message
news:%23z1WVTL$JHA....@TK2MSFTNGP03.phx.gbl...

Mario Dal Degan

unread,
Jul 6, 2009, 8:28:54 AM7/6/09
to
No se si te ayudar� pero podr�as probar agregando FLUSH

"F�lix Berto Castillo G." <felixbcastillo_AT_codetel.net.do> escribi� en el

mensaje news:e$Fw7jM$JHA....@TK2MSFTNGP02.phx.gbl...

Raül Vidiella

unread,
Jul 6, 2009, 12:55:11 PM7/6/09
to

En el primer caso tienes un SELECT TABLA en el segundo no. Seg锟絥 mi
experiencia el comando REPLACE tiene algun fallo en el caso en que la
tabla actual este en eof(), no suele realizar el replace, para evitar
esto utiliza la clausula IN TABLA al Utilizar el comando REPLACE.

Saludos
Ra锟絣 Vidiella


En/na F锟絣ix Berto Castillo G. ha escrit:
> Saludos!
>
> Tengo este extra锟給 caso con el uso de SEEK() / Replace:
> (Caso 1 - Como lo ten锟絘 inicialmente)


> SELECT TABLA
> IF SEEK(<Dato1>,'TABLA','INDICE')
> REPLACE TABLA.CAMPO WITH <Dato2>
> ELSE
> INSERT INTO TABLA VALUES (X, Y, Z)
> REPLACE TABLA.CAMPO WITH <Dato2>
> ENDIF
>

> (Caso 2 - Mejorando el c锟絛igo)


> IF !SEEK(<Dato1>,'TABLA','INDICE')
> INSERT INTO TABLA VALUES (X, Y, Z)
> ENDIF
> REPLACE TABLA.CAMPO WITH <Dato2>
>
> ***
> * Problema: En ninguno de los casos la tabla TABLA se actualizaba o
> insertaba el registro... al menos no la primera vez que se ejecuta, la
> segunda vez (dos veces consecutivas) que se ejecutaba, si lo insertaba
> adecuadamente; ahora bien:
>
> (Caso 3 - Infalible)
> Si se indica un GO TOP antes del SEEK(...) TODO funciona perfectamente. Que

> extra锟給 no?
>
> Alguien tiene alguna sugerencia o explicaci锟絥?
> Gracias por anticipado!
>

F�lix Berto Castillo G.

unread,
Jul 8, 2009, 2:00:47 PM7/8/09
to

Si, me ha pasado antes, que si no utilizo SELECT <...> antes del REPLACE no
se ejecuta adecuadamente.
No sab�a ni conoc�a IN <TABLA> del comando REPLACE, leo, y les comunico.

Gracias Ra�l

--
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
~FCG~
Felix Berto Castillo G.
La Vega, Rep. Dom.
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

"Ra�l Vidiella" <no_s...@jodt.com> wrote in message
news:Oht$Hql$JHA....@TK2MSFTNGP02.phx.gbl...
> En el primer caso tienes un SELECT TABLA en el segundo no. Seg�n mi

> experiencia el comando REPLACE tiene algun fallo en el caso en que la
> tabla actual este en eof(), no suele realizar el replace, para evitar esto
> utiliza la clausula IN TABLA al Utilizar el comando REPLACE.
>
> Saludos

> Ra�l Vidiella
>
>
> En/na F�lix Berto Castillo G. ha escrit:
>> Saludos!
>>
>> Tengo este extra�o caso con el uso de SEEK() / Replace:
>> (Caso 1 - Como lo ten�a inicialmente)


>> SELECT TABLA
>> IF SEEK(<Dato1>,'TABLA','INDICE')
>> REPLACE TABLA.CAMPO WITH <Dato2>
>> ELSE
>> INSERT INTO TABLA VALUES (X, Y, Z)
>> REPLACE TABLA.CAMPO WITH <Dato2>
>> ENDIF
>>

>> (Caso 2 - Mejorando el c�digo)


>> IF !SEEK(<Dato1>,'TABLA','INDICE')
>> INSERT INTO TABLA VALUES (X, Y, Z)
>> ENDIF
>> REPLACE TABLA.CAMPO WITH <Dato2>
>>
>> ***
>> * Problema: En ninguno de los casos la tabla TABLA se actualizaba o
>> insertaba el registro... al menos no la primera vez que se ejecuta, la
>> segunda vez (dos veces consecutivas) que se ejecutaba, si lo insertaba
>> adecuadamente; ahora bien:
>>
>> (Caso 3 - Infalible)
>> Si se indica un GO TOP antes del SEEK(...) TODO funciona perfectamente.

0 new messages