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