![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
Anula el método Post y colócalo dentro de un if en el que se evalue si la consulta SQl devolvio o no registros. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#2
|
|||
|
|||
|
mascoszorrilla, disculpame a lo mejo te tengo obstinado con esto, pero no acabo de encontrar la solución, he probado y nada me sigue saliendo el mismo error, incluso eliminé el método post en el evento click del botón guardar y da lo mismo, no se que hacer, estoy buscando por donde quiera la solución, he consultado la yuda del delphi y nada.
|
|
#3
|
||||
|
||||
|
Hola,
en el momento en que haces el post se actualiza el registro y casca si se repite el dódigo. Cuando haces el locate, dado que el registro activo cambia, hace post automático y te casca. Prepara una query diferente que haga una select mirando el código de ese registro. Si los registros devueltos son más de 0 , obviamente, está repetido. Pon ese codigo en el evento beforePost de la tabla, y a correr. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#4
|
|||
|
|||
|
Saludos fjc02, gracias por tu respuesta. Pero reitero como dije antes esto me da bastante trabajo pues soy nuevo en el uso del delphi como lenguaje de programación. Coloqué un componente ADOQuery en la forma en la propiedad Strings del mismo pusé lo siguiente:
Y en el evento que me indicaste pusé lo siguiente: Ahora de ahí en adelante no encuentro cmo seguir, no encuentro la vía de como mandara a buscar si ya existe la factura que voy a agregar. Disculpa que te moleste con esto, pero me rompo la cabeza y no hayo la solución. Gracias por tu paciencia. |
|
#5
|
||||
|
||||
|
Te respondo deprisa porque estoy liado en el curro.
Pon el codigo SQL en la Query Select idfactura FROM Facturas WHERE idFactura:= ParamFactura Con esto tienes una sql parametrizada. Cuando quieras saber si el código está repetido actualizas el parámetro con el valor introducido y validas Query.Parameters.ParamByName('ParamFactura').Value:= valorquehasintroducido Es decir, ejecutas la query con el valor del id que quieras. Esto se puede hacer tantas veces como quieras/necesites Query.Open; if Query.Recorcount > 0 then Tabla.Cancel else Tabla.Post;; Ya me contarás. Realmente creo que la única diferencia que hay respecto de lo que tú me idicas es que no parametrizas la consulta al comprobar y la respuesta de la query son tantos registros como los que tenga la tabla Facturas. Esper que sea de ayuda. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#6
|
|||
|
|||
|
Hola fjcg02, gracias amigo por tu respuesta y por tu ayuda. Te diré que aun sigo teniendo problema con esto, tengo la corazonada que con lo que me explicaste debo resolver el problema, pero parece que debido a mi desconocimiento es que no he podido hacerlo, te explico para ver si de una vez y por todas puedo acabar con esto que ya me tiene cansado y me imagino que a ti también, te pido mil disculpas por robarte tu preciado tiempo. Te cuento desde cero para que me entiendas bien. tengo en el formulario un ado connection, un ado table, un data source y un ado query, además de varios dbedit enlazados a datos, con tres botones de comando uno agregar, uno cancelar y el otro guardar. Seguí tu consejo agregué al formulario un ado query, en la propiedad strings de la misma puse los siguiente:
Agregué un parámetro al adoquery en la propiedad parameters del mismo, el parámetro se llama IdFactura y además le define el tipo de valor del mismo como ftstring y le establecí un valor de tipo string, el campo en la base de datos es de tipo varchar. Los dbedit están enlazados al ado table, en el evento before post de este ado table puse lo sigueinte: Siguiendo los consejos que me diste, aquí lo que veas ADOT hace referencia al ado table y ADOQ hace referencia al ado query. Cuando ejecuto la aplicación para probar el código y pongo el número de una factura que ya existe me levanta una exception en la clase EoleException que me dice que el parámetro no es encontrado. Reviso y fectivamente el parámetro que creé mo lo elimina, es decir lo quita, incluso en tiempo de diseño lo defino, y luego cuando vuelvo a ver ya no está, no entiendo que estoy haciendo mal. A lo mejor no estoy poniendo los códigos en los eventos correspondientes, a lo mejor los dbedit deber estar conectados al adoquery y no al ado table, son las cosas que estoy pensando pues no se ya que hacer. Espero puedas ayudarme, disculpa mi insistencia pero creo que debo aprovechar tu paciencia y tus conocimientos para que me ayudes a resolver este tema, una vez mas te pido mil disculpas. |
|
#7
|
||||
|
||||
|
Lo he leido rápidamente, a ver si esta noche le puedo dedicar un poco de tiempo.
Cuando añades una ADOQUERY, pon el codigo SQL que te indiqué pero en tiempo de DISEÑO. No hace falta que vuelvas a añadir el codigo sql en tiempo de ejecución. En diseño, cuando pones "WHERE idFactura= arametro", accede a la propiedad parametros de la query y verás que aparece un parámetro llamado "parametro". Si pones en la query WHERE campo1= arametro1 AND campo2= arametro2, si accedes a la propiedad parámetros, apareceran parametro1 y parametro2.Es en tiempo de ejecución cuando deben actualizar SOLAMENTE los parámetros dandoles el valor que desees. Abres de nuevo la query y aparecen los registros que cumplen la condición con esos valores Para probar, crea un proyecto vacío con una query, un dataset y un dbgrid, pon un Tedit y juega con ello, para que veas cómo funciona. El resto es añadirlo a tu proyecto de la manera que te convenga. En los ejemplos que trae la aplicación esto está explicado creo que de manera más que suficiente. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Dbgrid para insertar en una tabla pero cogiendo datos de otra tabla | taru | MySQL | 1 | 27-07-2006 16:36:12 |
| Insertar un registro en una tabla Paradox | maravert | Tablas planas | 1 | 14-10-2005 03:08:02 |
| Comparar un registro de un edit con un registro de una tabla en una consulta | Damian666 | SQL | 10 | 01-10-2005 01:43:20 |
| Insertar registro en tabla | jzk | Conexión con bases de datos | 15 | 26-05-2004 19:58:19 |
| Borrar e Insertar un registro de una tabla con Query | Draco | Conexión con bases de datos | 4 | 06-05-2004 18:27:37 |
|