Fecha, busqueda, append blank

Hola como estas; ¿Espero qué bien? En realidad tengo muchas prefuntas:
1º: ¿Cómo puedo hacer para que en un textbox me vaya asignando automáticamente un número en forma creciente y si borro ese registro después pueda reutilizarse y me cargue los datos en ese lugar y luego siga al final?
2º: ¿Cómo hago para que me cargue en otro textbox la fecha actual?
3º: tengo la siguiente búsqueda:
if flock()
with thisform
if thisform.optbuscar.optpelicula.value =1
locate for pelicula.titulo = alltrim(thisform.txtbuscar.value)
set index to pelicula.cdx tag titulo
seek alltrim (thisform.txtbucar.value)
if titulo= .T.
messagebox ("se encontro",0,"confirmacion")
else
messagebox ("No se encontro",0,"confirmacion")
endif
endif
if thisform.optbuscar.optnumpelicula.value = 1
locate for pelicula.npelic = .txtbuscar.value
Endif
.refresh
endwith
Endif
El tema es que no me muestra lo que encontró en ningún lado y la idea es que cdo lo encuentre con otros botones pueda modificar o eliminar lo que haya encontrado. ¿Cómo puedo hacer?
4º: Después de muchas prubas logre cargar datos en una tabla... El tema es que ahora me salta un erron de unicidad y me muestra el error en append blank, ¿qué hago?
¿Por favor podrías ayudarme?
Gracias.

1 respuesta

Respuesta
1
Has hecho muchas preguntas en una sola y esto es contraproducente, por que al publicarlos el titulo no dice casi nada del contenido y el publico no sacara muchos provechos excepto leyendo por completo, pero te responderé por ser la primera vez.
1=Si te refieres a textbox te refieres a datos que están en una tabla, para solucionar este tema tendrás que usar algún truco, primer debes tener la tabla ordenada por este valor, lo recorres y verificas si se salta algún valor y este podrá ser usado, si quieres usar el ultimo valor tendrás conla función max(), así
calculate max(código) to xMaximo
xMaximo = xMaximo+1
lo que puedes es crear un método o una función que recorra la tabla y devuelva el primer hueco que encuentre, supongamos que la tabla clientes,
código Nombre
1 david
2 pedro
4 juan
La funcion deberia devolver 3, que es la disponible, esto pdria ser asi
sele clientes &&se supone que ordenado por codigo esta
sele clientes
go top
xCOD = codigo
do while !eof( )
     if xCod # codigo
          ?xCod
          exit
      endif
      xCod = xCod+1
      skip
enddo
* la funcion saldra cuando encuentre el primer hueco, sino se quedara con el ultimo valor, al que si le sumas 1 tendras el maximo mas uno.
2 Fecha actual en un texbox
   thisform.txt_fecha.value = date()
3. Este codigo usa dos busquedas, uno locate y el otro seek(), el comando tendra exito dependiendo de varios factores, uno de ellos es set exact o set near, puedes leer un poco de ellos antes de usarlo, pero te adelanteo que uses exactamente igual para no tener problemas
if alltr(campo)==alltr(valor)
y recuerda mayusculas de minusculas tambien, usa ALLTR(UPPER(VALOR))==
Para asegurar, tampoco he visto la función found(), que debe ir inmediatamente después de la búsqueda y que te dirá si encontró o no, también dices que no temuestra lo que encuentra en ningún lado, pero no veo ningún comando en que le pides al lenguaje que te lo muestre, el no hará nada si no le pides, por ello hablaba de found()
if found()
      Browse
Endif
Por ejemplo.
4. El problema de unicidad de código ocurre cuando se duplica un campo que tu le has dicho a fox que es una llave primaria, y si es una llave primaria no puede estar duplicado, por ejemplo una llave primaria puede ser el numero de documento de identidad, este valor no puede duplicarse, y si el error te da al darle append blank es por que tienes campos vacíos o con valor 0, para reparar este problema seguramente le diste delete, pero delete no borra los registros permanentemente, entonces tendrás problemas, lo que puedes hacer es abrir en modo exclusivo la tabla y le das un pack, pero has esto solo tu, no le des a los usuarios que hagan esto, por que no puedes hacerlo en modo compartido.
Use tabla exclusive
Pack
Ok.
Muchas Gracias ahora mismo me pongo a realizar esas pruebas. Y si realmente tienes razón con lo del titulo. Prometo que no va a volver a pasar.
Gracias otra vez.
Saludos.
Flakis

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas