Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
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
  #2  
Antiguo 28-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 21
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
  #3  
Antiguo 28-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
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
  #4  
Antiguo 28-11-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
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
  #5  
Antiguo 30-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 21
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
  #6  
Antiguo 01-12-2006
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Poder: 24
fjcg02 Va camino a la fama
efelix,
he podido sacar un poco de tiempo, y te paso el código.
Dos cosas, para abortar el post cuando tienes duplicados, hay que utilizar el método Abort.
Cuando estás editando un registro, no debe saltar la verificación siempre, sino cuando cambias el valor de la factura.
Espero que te sirva de ayuda.
PAra ver el ejemplo, descomprime el zip en un directorio y compila. Está todo lo necesario. YO utilizo delphi 7.0 con ADO.

Un saludo
Archivos Adjuntos
Tipo de Archivo: zip Pruebas.zip (22,3 KB, 23 visitas)
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #7  
Antiguo 05-12-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Poder: 21
efelix Va por buen camino
Saludos fcg02, sería un verdadero ingrato si no te diera las gracias por tu paciencia y ayuda, muchas gracias. Resolví el problema con tu ayuda. Suerte con el niño.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 13:56:23.


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
Copyright 1996-2007 Club Delphi