Evitar registros duplicados

Hola, nuevamente.
Necesito una ayudita en lo siguiente. Tengo el siguiente código al momento de ingresar datos de una tabla a otra:
Use capital
go top
do while !eof()
inser into solcob1 (emprut,centrut,sodval)values(capital. Empresa, capital. Rut_client,capital. Capital)
skip
enddo
Como puedo detectar si un registro ya existe para no volver a ingresarlo. El campo que se usaría para validar un registro existente seria centrut.
Espero tu respuesta.
Besitos. Chao

1 respuesta

Respuesta
1
Tendrías que hacer una validación antes de insertarlo, y te recomiendo usar SCAN en vez de del DO WHILE ! EOF():
Quedaría así más o menos:
Use capital
SCAN
SELECT SOLCOB1
LOCATE FOR <TU CONDICION DE BUSQUEDA>
IF !FOUND()
inser into solcob1 (emprut,centrut,sodval)values(capital. Empresa, capital. rut_client,capital. Capital)
Endif
select CAPITAL
Endscan
Donde dice tu condición de búsqueda podría ser estos:
LOCATE FOR centrut
¿Esta correcto?
Espero tu respuesta
Besitos. Chao
<%=Texto%>
Segun comprendo tu instruccion de INSERT, MAS OMENOS ES ASI:
locate for solcob1.centrut = capital.rut_client
peeeerrrrfffeeeeeccccttttoooooo
Eres genial, te agradezco un millón su asesoría.
Mira, abusando una vez más necesito la ultima ayudita. Según el código que te envíe en la primera pregunta como puedo hacer para indicarle al usuario quese están cargando datos y cuando termine la carga indicarle algún mensajes que la carga esta lista y que cierre las tablas. Hay una función lladada wait windows, pero no se como aplicarla.
Espero prontamente tu respuesta.
Besitos. Chao
Más o menos quedaría así:
WAIT WINDOW 'Aplicando cambios...' NOWAIT
Use capital
SCAN
SELECT SOLCOB1
LOCATE FOR solcob1.centrut = capital.rut_client
IF !FOUND()
inser into solcob1 (emprut,centrut,sodval)values(capital. Empresa, capital. rut_client,capital. Capital)
ENDIF
select CAPITAL
ENDSCAN
WAIT WINDOW 'Finalizado...' NOWAIT
Lo podemos hacer un poco más complicado, usando porcentajes, pero obviamente usaríamos algunas variables:
local nParte, nAcumulado
STORE 0 TO nParte, nAcumulado
WAIT WINDOW 'Aplicando cambios...' NOWAIT
USE CAPITAL
nParte = 100 / RECCOUNT()
nAcumulado = nParte
SCAN
SELECT SOLCOB1
LOCATE FOR solcob1.centrut = capital.rut_client
IF !FOUND()
inser into solcob1 (emprut,centrut,sodval)values(capital.empresa,capital.rut_client,capital.capital)
ENDIF
WAIT WINDOW 'Aplicando cambios... '+CHR(13)+STR(nAcumulado,6,2) + '% listo' NOWAIT
nAcumulado = nAcumulado + nParte
select CAPITAL
ENDSCAN
WAIT WINDOW 'Finalizado...' NOWAIT
Pero, en ocasiones eso es demasiada vanidad :) ...
Eres genial...
Ahora si... lo ultimo
Como puedo hacer para que la ventanita del wait windows aparezca un poco más hacia la derecha.
Chao.
No olvides valorar la respuesta dada...
Upssss,. te voy a empezar a cobrar...
Je je, no es cierto, con gusto:
Wait Window 'hola' At Int(_Screen.Height/2), Int(_Screen.Width/2 - Len(cMensage) / 2) NOWAIT
Una corrcción:
Wait Window 'Hola' At Int(_Screen.Height/2), Int(_Screen.Width/2 - Len('Hola') / 2) NOWAIT
Y también indicarte que el mensjito aparecerá centrada en la pantalla
No olvides valorar la respuesta dada...
La puntuación es un de los motivos ademas de la satisfacción de ayudar a los demás por lo que estamos aquí.
Al menos en lo personal.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas