Se infringe la unicidad del indice... VFP9

Buscando por la red he conseguido muchos colegas que tienen el mismo problema que yo, el mensaje de -Se infringe la unicidad del indice-, en mi caso se llama idlinepres... No comprendo que sucede con mi codigo, aveces funciona bien, aveces no y me tira este error... Parte de mi codigo es 
with thisform
if !empty(.txtcantidad.value)
lineap=str(thisform.list1.ListCount)
numpresupuestof=STR(.numpresupuesto.value)
vendedor=alltrim(.vendedor.list(.vendedor.listindex,1))
clientes=alltrim(.clientes.list(.clientes.listindex,1))
combocodigo=alltrim(.combocodigo.list(.combocodigo.listindex,1))
cantidad=(.txtcantidad.value)
descripcion=alltrim(.combocodigo.list(.combocodigo.listindex,2))
costodetal=VAL(alltrim(.combocodigo.list(.combocodigo.listindex,8)))
costomayor=VAL(alltrim(.combocodigo.list(.combocodigo.listindex,7)))
IF .detal.Value=1
sub_temporal=VAL(cantidad)*costodetal
SELECT 4
append blank
*replace line_temp_pres with lineap
replace nume_temp_pres with numpresupuestof
replace codi_vend_temp_pres with vendedor
replace codi_clie_temp_pres with clientes
replace prec_temp_pres with "Detal"
replace codi_prod_temp_pres WITH combocodigo
replace cant_prod_temp_pres WITH cantidad
replace subt_prod_temp_pres WITH sub_temporal
replace desc_prod_temp_pres WITH descripcion
.list1.rowsource ="select * from temporal_presupuestos into cursor x"
.list1.rowsourcetype=3
ELSE
el error lo marca en el append blank... ¿Qué sera lo que tengo mal? No entiendo...
Explicando un poco mi cod aunque esta sencillo, lo primero que hago es pasar los datos de los combos y text a variables, eso esta en las primeras lineas, luego a lo que entro al IF lo que estoy haciendo es calcular un subtotal, que se esta realizando en caso de que la venta sea al detal se multiplica la cantidad por el precio al detal y se guarda en la variable sub_temporal... Es importante decir que el único valor que es numérico en mi tabla es el campo subt_prod_temp_pres aunque el error lo marca comenzando... Donde esta el *(replace line_temp_pres with lineap)
Este valor (lineap)se toma en base a un str(thisform. List1. ListCount), que pasa a caracteres el listcount...
Espero me puedan ayudar amigos expertos que solo eso es lo que me tiene pinchado en este formulario :-S...
Respuesta
1
Al parecer tu código no tiene problema, debes reemplazar el tipo de indice de tu tabla
al parecer es de tipo candidato o único debes dejarlo normal o si no quieres cambiar el tipo de indice solo hazle un pack a la tabla.
A lo mejor tienes marcado un registro como eliminado y estas metiendo un registro con la misma información o por lo menos con la misma información en el campo del indice
oajla te sirva.
Gracias por tu respuesta experto... El indice de mi tabla es de tipo Principal, en expresión ALLTRIM(codi_prod) ... Y pues el registro en blanco que se esta generando a lo que intento guardar lo elimino por el administrador de fox... No se que hacer :(...
Lo puede eliminar por el admin o sencillamente cambiar el tipo de indice o con hacerle un pack a la table podes acabar con esto

Añade tu respuesta

Haz clic para o