![]() |
dterminar si los datos que se van a enviar ya existen
buenas chicos, aqui miren sigo molestandolos y molestandolos, pero bueno espero que almenos todas mis dudas las aproveche otras personas que foreen, al igual que las aprovecho yo, disculpen la molestia, pero hago lo siguiente, supuestamente para ver si la fecha ya existen en esa tabla, si ya existe que tire un mensaje diciendo que no puede almacenar, y si no existe que almacene, pero no funciona, y no me tira ningun mensaje, perdon chicos, pero me quede crudo con las ideas, les dejo aqui el codigo para que los inspeccionen:
espero no ponerlos en muchas molestias, de antemano les agradezco por la ayuda y tambien por todas las veces anteriores que me han ayudado. |
Cita:
primero deberias hacer un query filtrando de la forma Query2.SQL.Text:='select fecha from ciber where fecha=:f'; Query2.parambyname('f').datatype:=ftdatetime; Query2.parambyname('f').value:=StrtoDatetime(A); Query2.open; if query2.recordcount>0 then Showmessage('Error , la fecha ya existe'); Query2.close; luego , donde pones table1.append , aqui deberia ir un table1.post , ya que no tiene sentido lo que estas haciendo. las comprobaciones hay que hacerlas antes de guardar datos (post) , el append es para añadir un nuevo registro en blanco. lo que debes hacer es , 1º table1.append o table1.edit 2º establecer los valores que quieras en los campos o controles enlazados a los campos de la tabla. 3º antes de hacer table1.post , buscar con el query la fecha , si la encuentras no hacer post y sacar mensaje , sino , puedes hacer post y guardar los cambios. Saludos. |
Lo normal en estos casos es crear un índice único en la tabla por el campo Fecha. Si intentas insertar una fecha, dará una excepción el motor de Bases de datos por violar la restricción de unicidad.
Así evitas tener que lanzar una consulta, el SGBBDD es más eficiente que tu al buscar por ese índice. Saludos |
Cita:
|
como te decia el amigo LEPE, debes crear una llave principal para que acces se encargue de la duplicidad, y si, si se puede hacer en acces
|
gracias por la ayuda aqui esta el codigo con el que me funciono la restriccion. |
Funcionar funcionar , no lo tengo yo muy claro que te funcione bien...
y no se porque usas un betwen , si con un = seria suficiente. y como te he dicho , lo normal es comprobar las condiciones (si tal registro existe ) justo antes de hacer el post. Ademas , revisa lo siguiente a ver que tienes mal , creo que los conceptos de insert, post , edit, etc. no los tienes muy claros...
como ya te han dicho la mejor solucion es definir el campo para que no puedas almacenar duplicados. en access, puedes definir el campo como indexado sin duplicados , con esto te evitas el tener que buscar y todo lo anterior. aunque no te evitas tener que controlar y capturar el error al hacer post. saludos. |
Cita:
|
| La franja horaria es GMT +2. Ahora son las 22:09:41. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi