Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Insertar registro en una tabla

Hola a todos, muchos saludos. Tengo el siguiente problema, trabajo en delphi 7 con una aplicación de bases de datos utilizando Microsoft SQL Server, tengo un formulario donde trato de insertar un nuevo registro en una tabla, utilizando los componentes de la paleta ADO. Tengo un ado connection, ado table y un datasource, además de diferentes dbedit que están enlazados a los campos de la tabla a la cual quiero agregar el nuevo registro. Tengo tres botones de comando, uno para agregar con el siguiente código:
Código Delphi [-]
begin
 ADOTNuevaFactura.Append;
 ADOTNuevaFacturaIdFactura.FocusControl;
end;

Un botón cancelar con el código siguiente:
Código Delphi [-]
begin
 ADOTNuevaFactura.Cancel;
end;
Y por último un botón guardar con el código:
Código Delphi [-]
begin
 ADOTNuevaFactura.Post;
 if ADOTNuevaFactura.Locate('IdFactura',DBEDitNumero.Text,[])then
    MessageDlg('Esta factura ya existe',mtError,[mbOK],0);
    Abort;
end;
El campo Idfactura es el campo llave de la tabla, por lo que he puesto esto para que alerte en caso de que la factura que se trata de introducir ya exista, pero esto no me funciona cuando pruebo la aplicación y pongo una factura ya existente y le doy al botón guardar se me levanta una exception en la clase EoleException advirtiéndome que hay una violation de la clave primaría, esto lo se por eso he puesto ese código para que no se levante la exception, pero no se cmo solucionarlo, y no quiero entrar en el mundo del tratamiento de las excepciones porque realmante es algo que lamentablemente no entiendo. Ojala me puedan ayudar. Muchas gracias por todo.
Responder Con Cita
  #2  
Antiguo 10-11-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Desde el momento que haces el Post, ya no te sirve para nada la búsqueda puesto que ya se ha producido la excepción.

Lo mejor es que una vez que salgas del campo llave "OnExit", lances un SQL averiguando si te devuelve algún registro igual que el que pretendes grabar, si es así tu mismo
Código Delphi [-]
ShowMessage('Ese registros ya existe')
, en caso contrario es cuando haces el Post.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 10-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Gracias marcoszorilla por tu consejo, pero como he dicho en otras ocasiones me falta mucho por caminar en delphi, probé lo que me dijiste pero quitando el código donde está el método locate y colocándolo en el evento onexit del dbedit donde capturo el número de la factura, y nada me lanza otra excepción diciéndome que el campo donde capturo la descrpición de la factura no puede contener un valor nulo, esto ocurre nada mas salir de ese primer edir cuando se desencadena el evento onexit. Si no te s molestia podrias mostarme con un ejemplo lo que me explicaste, disculpa tanta molestia. Gracias.
Responder Con Cita
  #4  
Antiguo 10-11-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
begin
 ADOTNuevaFactura.Post;//esto es lo que te da el error.
 if ADOTNuevaFactura.Locate('IdFactura',DBEDitNumero.Text,[])then
    MessageDlg('Esta factura ya existe',mtError,[mbOK],0);
    Abort;
end;

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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 10-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 10-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
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 -
Responder Con Cita
  #7  
Antiguo 13-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
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:
Código SQL [-]
SELECT IdFactura, IdProveedor, Descripcion, Aplicada, FechaRecepcion, Importe
FROM Facturas
Y en el evento que me indicaste pusé lo siguiente:
Código Delphi [-]
ADOQNuevaFactura.Close;
 ADOQNuevaFactura.SQL.Clear;
 ADOQNuevaFactura.SQL.Add('SELECT IdFactura, IdProveedor, Descripcion, FechaRecepcion, Aplicada, Importe');
 ADOQNuevaFactura.SQL.Add(' FROM Factutras');
 ADOQNuevaFactura.SQL.Add('ORDER BY IDFactura');
 ADOQNuevaFactura.Open;
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.
Responder Con Cita
  #8  
Antiguo 13-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
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 -
Responder Con Cita
  #9  
Antiguo 14-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
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:
Código SQL [-]
SELECT IdFactura, IdProveedor, Descripcion, Aplicada, FechaRecepcion, Importe
FROM Facturas
WHERE IdFactura = IdFactura
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:
Código Delphi [-]
begin
 ADOQNuevaFactura.Close;
 ADOQNuevaFactura.SQL.Clear;
 //ADOQNuevaFactura.SQL.Add('SELECT IdFactura, IdProveedor, Descripcion, FechaRecepcion, Aplicada, Importe');
 //ADOQNuevaFactura.SQL.Add(' FROM Factutras');
 //ADOQNuevaFactura.SQL.Add('ORDER BY IDFactura');
 ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=DBEditNumero.Text;
 ADOQNuevaFactura.Open;
 if ADOQNuevaFactura.RecordCount > 0 then
    ADOTNuevaFactura.Cancel
 else
    ADOTNuevaFactura.Post;
end;
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.
Responder Con Cita
  #10  
Antiguo 15-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
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 -
Responder Con Cita
  #11  
Antiguo 15-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Me sigue dando el mismo error, me dice que el parámetro no lo encuentra, lo que hice fue esto en el evento before post del adotable:
Código Delphi [-]
begin
 ADOQNuevaFactura.Close;
 ADOQNuevaFactura.SQL.Clear;
 ADOQNuevaFactura.SQL.Add('SELECT IdFactura, IdProveedor, Descripcion, FechaRecepcion, Aplicada, Importe');
 ADOQNuevaFactura.SQL.Add(' FROM Factutras');
 ADOQNuevaFactura.SQL.Add('ORDER BY IDFactura');
 ADOQNuevaFactura.SQL.Add('WHERE IdFactura = IdFactura');
 ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=DBEditNumero.Text;
 ADOQNuevaFactura.Open;
 if ADOQNuevaFactura.RecordCount > 0 then
    ADOTNuevaFactura.Cancel
 else
    ADOTNuevaFactura.Post;
end;
Comprobé y el parámetro si está, no se porque pasa esto. Disculpame que te chive tanto. Gracias.
Responder Con Cita
  #12  
Antiguo 15-11-2006
Avatar de fedelphi
fedelphi fedelphi is offline
Miembro
 
Registrado: abr 2006
Ubicación: Santa Fe
Posts: 122
Poder: 19
fedelphi Va por buen camino
Cita:
Empezado por efelix
Código Delphi [-] ADOQNuevaFactura.SQL.Add('WHERE IdFactura = IdFactura');
Prueba escribiendo
ADOQNuevaFactura.SQL.Add('WHERE IdFactura =: IdFactura');
me parece que esos dos puntos(que te faltan son el problema.
Suerte.
Fede
Responder Con Cita
  #13  
Antiguo 15-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Prueba con esto
Código:
begin
ADOQNuevaFactura.Close;
SOBRAN LAS SIGUIENTES LINEAS
ADOQNuevaFactura.SQL.Clear; SOBRA
ADOQNuevaFactura.SQL.Add('SELECT IdFactura, IdProveedor, Descripcion, FechaRecepcion, Aplicada, Importe'); SOBRA
ADOQNuevaFactura.SQL.Add(' FROM Factutras'); SOBRA, y está mal escrito el nombre d ela tabla
ADOQNuevaFactura.SQL.Add('ORDER BY IDFactura'); SOBRA
ADOQNuevaFactura.SQL.Add('WHERE IdFactura = IdFactura'); SOBRA
// la sentencia SQL es 'WHERE idFactura=:PARAMETRO', a introducir en tiempo de diseño 
FIN DE LO QUE SOBRA
ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=DBEditNumero.Text;
ADOQNuevaFactura.Open;
if ADOQNuevaFactura.RecordCount > 0 then
ADOTNuevaFactura.Cancel
else
ADOTNuevaFactura.Post;
end;
El resto está OK.
Ya me contarás.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #14  
Antiguo 16-11-2006
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 21
ramiretor Va por buen camino
Hola a todos:
El problema es que me parece que no has entendido bien la cuestion. En la clausula where debes poner los dos puntos":" y pegado a estos el nombre del parámetro, con eso Delphi se dará cuenta que le vas a pasar un paramétro, esto lo puedes hacer en tiempo de diseño (en la propiedad SQL del ADOQuery) o en ejecución.

Ahora bien como le pasas la sentencia en tiempo de diseño en tu procedimiento aplicas:

Código Delphi [-]
  ADOQuery.Close;
  ADOQuery.ParamByName('NombreParametro').AsInteger := StrToInt(DBEditNumero.Text);
  ADOQuery.Open;

Con eso debes poder abrir la consulta y continuas con el resto del código

Saludos
__________________
Ernesto R.
Responder Con Cita
  #15  
Antiguo 28-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Ramiretor muchas gracias por tu ayuda, es cierto lo que faltaban eran los dos puntos
Responder Con Cita
  #16  
Antiguo 28-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
fedelphi, muchas gracias es cierto el problema estaba en los dos puntos
Responder Con Cita
  #17  
Antiguo 28-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Saludos fjcg02, muchas gracias por tu respuesta, no te había respondido antes puesto que me encontraba fuera del trabajo, pero estoy de vuelta. Te cuento que ya hize las modificaciones que me indicaste pero ahora tengo el siguiente problema: en el evento before post del ado table puse el siguiente código:
Código Delphi [-]
begin
 ADOQNuevaFactura.Close;
 ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=StrToInt(DBEditNumero.Text);
 ADOQNuevaFactura.Open;
 if ADOQNuevaFactura.RecordCount > 0 then
 begin
    MessageDlg('La Factura que está intentando introducir ya existe',mtWarning,[mbOK],0);
    DBEditNumero.SetFocus;
    ADOTNuevaFactura.Cancel;
 end
 else
    ADOTNuevaFactura.Post;
end;
Este mismo código lo repite en el evento click del botón de comandos Guardar, cuando ejecuto la aplicación y trato de introducir una factura ya existente me sale el mensaje que aparace colocado en la función messagedlg y cuando le doy al botón ok de dicha función en los controles enlazados a datos aparece el último registro de la tabla, hasta aquí creo que todo es normal, ahora cuando trato de ageragar una nueva factura y le doy al botón guardar la aplicación se queda colgada, no me genera ningún mensaje de error, pero no hace nada, incluso chequeo la tabla para ver si agregó el nuevo registro y nada, tengo que presionar Ctrl+F2 para volver al entorno de delphi, no sé por qué pasa esto. Disculpa tanta molestia, debo tenerte mareado con lo mismo, espero no lo tomes a mal. Muchas gracias.
Responder Con Cita
  #18  
Antiguo 28-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Cita:
Empezado por efelix
Saludos fjcg02, muchas gracias por tu respuesta, no te había respondido antes puesto que me encontraba fuera del trabajo, pero estoy de vuelta. Te cuento que ya hize las modificaciones que me indicaste pero ahora tengo el siguiente problema: en el evento before post del ado table puse el siguiente código:
Código Delphi [-]
begin
 ADOQNuevaFactura.Close;
 ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=StrToInt(DBEditNumero.Text);
 ADOQNuevaFactura.Open;
 if ADOQNuevaFactura.RecordCount > 0 then
 begin
    MessageDlg('La Factura que está intentando introducir ya existe',mtWarning,[mbOK],0);
    DBEditNumero.SetFocus;
    ADOTNuevaFactura.Cancel;
 end
 else
    ADOTNuevaFactura.Post;
end;
Este mismo código lo repite en el evento click del botón de comandos Guardar, cuando ejecuto la aplicación y trato de introducir una factura ya existente me sale el mensaje que aparace colocado en la función messagedlg y cuando le doy al botón ok de dicha función en los controles enlazados a datos aparece el último registro de la tabla, hasta aquí creo que todo es normal, ahora cuando trato de ageragar una nueva factura y le doy al botón guardar la aplicación se queda colgada, no me genera ningún mensaje de error, pero no hace nada, incluso chequeo la tabla para ver si agregó el nuevo registro y nada, tengo que presionar Ctrl+F2 para volver al entorno de delphi, no sé por qué pasa esto. Disculpa tanta molestia, debo tenerte mareado con lo mismo, espero no lo tomes a mal. Muchas gracias.
Tengo una duda, pero no tengo el compilador aquí.
Cuando te dé registros la comprobación, pon el cancel, pero si está OK no pongas nada ( borra la linea de Tabla.Post), ya que ya salta el evento.
En el botón de guardar no llames al procedimiento, sino haz lo siguiente:
Pregunta si está en edición la tabla
Código Delphi [-]
if tabla.State in [edit, insert] then
  Tabla.post .
La llamada a tabla.post hará saltar el procedimiento., por lo que pasas el control de duplicados.
Que la apliación se te quede colgada puede ser porque se mete en un bucle infinito. Pon puntos de ruptura en todos los procedimientos que crees que saltan y con f8 lo ejecutas paso a paso.

Espero haberte ayudado.

Un saludo
PD: Perdona que no pueda ayudarte como me gustaría, pero ahora mis esfuerzos son todos para mi hija ( tiene un mes ) , y si sobra algo para delphi !
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #19  
Antiguo 28-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
efelix,
me acabo de dar cuenta de que haces el cancel y el post en ADOQueryNuevaFactura.

Debes hacerlo sobre al tabla en la que estás insertando registros, no en la query en la que preguntas.

Ejemplo:
Edito la tabla Facturas
Tengo una query de comprobación de numeros duplicados

Si nº de registros query numero duplicado > 0 entonces
cancelo edición en TABLA DE FACTURAS
else
Confirmo inserción/modificación en TABLA DE FACTURAS

Repasalo por favor.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #20  
Antiguo 30-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 18
efelix Va por buen camino
Felicidades fcg02 por ser padre, no se si por primera vez, pero bueno eso no importa, cada nuevo hijo es como si fueramos padres por vez primera, yo tengo tres hijos y son tremendos, el mas pequeño anoche no me dejo dormir. Te cuento lo que sucede. Puse en en evento onclick del botón guardar lo siguiente:
Código Delphi [-]
begin
 if ADOTNuevaFactura.State in [edit, insert] then
    ADOTNuevaFactura.
end;
Cuando hago esto el método post del ADOTable realacionado con la tabla factura no me sale en la lista de miembros. Eliminé como me dijiste la línea else del evento before post del ado table y ahora quedó de la siguiente manera:
Código Delphi [-]
begin
 ADOQNuevaFactura.Close;
 ADOQNuevaFactura.Parameters.ParamByName('IdFactura').Value :=StrToInt(DBEditNumero.Text);
 ADOQNuevaFactura.Open;
 if ADOQNuevaFactura.RecordCount > 0 then
 begin
    MessageDlg('La Factura que está intentando introducir ya existe',mtWarning,[mbOK],0);
    DBEditNumero.SetFocus;
    ADOTNuevaFactura.Cancel;
 end;

end;
Cuando la factura que intento agregar es nueva esto me funciona a la perfección, por supuesto si elimino la primera línea del evento onclick del botón guardar y solamente dejo ADOTNuevaFactura.Post. Ahora no te entiendo en cuantoa a lo que me explicas sobre la utilización del método cancel y post, porque aunque ambos están en al mismo evento es decir en el before post del ado table nueva factura, ambos se aplican al ado table y no al ado query, realmente no entiendo bien lo que pasa o es que ambos métodos no deben estar en el mismo evento. Disclpáme nuevamente, independientemente de que resuelva o no el problema me ha servido de mucho tu ayuda al ugual que la de los demás compañeros que me han respondido, te reítero mis felicitaciones y suerte con la nueva cria.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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 15:36:12
Insertar un registro en una tabla Paradox maravert Tablas planas 1 14-10-2005 02:08:02
Comparar un registro de un edit con un registro de una tabla en una consulta Damian666 SQL 10 01-10-2005 00:43:20
Insertar registro en tabla jzk Conexión con bases de datos 15 26-05-2004 18:58:19
Borrar e Insertar un registro de una tabla con Query Draco Conexión con bases de datos 4 06-05-2004 17:27:37


La franja horaria es GMT +2. Ahora son las 01:39:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi