viernes, 15 de enero de 2016

Verificar si existen registros duplicados

Aquí un truco en las datawindows que determina si existen registros duplicados en la datawindow. Lo que puede ser útil, por ejemplo, antes de actualizar en base de datos.
En el ejemplo de abajo, la llave primaria (única) es "user_id", entonces lo que se hace es ordenarlas por ésta llave, para posteriormente filtrarlas de manera que solo queden las líneas duplicadas.
Si el RowCount posterior al filtrado es mayor a cero, detectamos el o los duplicados, y sin necesidad de recorrer todos los registros.

// la datawindow o datastore en este caso es lds_bufer
// ahora usamos el ordenamiento y filtrado para solo dejar los duplicados
lds_buffer.SetSort ("user_id A")
lds_buffer.Sort()
lds_buffer.SetFilter ("user_id = user_id[-1]")
lds_buffer.Filter()

if lds_buffer.RowCount() > 0 then
    //Tenemos un duplicado, y avisamos al usuario.
    al_row = lds_buffer.GetItemNumber (1, "row_num")
    as_colname = "user_id"
    as_error = "Usuario duplicado."
    return -4
end if


//No hay duplicados, limpiamos el filtro y continuamos con nuestro proceso.
lds_buffer.SetFilter ("")
lds_buffer.Filter()

Explicación:

No hay comentarios:

Publicar un comentario