Ver Mensaje Individual
  #9  
Antiguo 14-11-2006
efelix efelix is offline
Miembro
 
Registrado: jul 2006
Posts: 84
Reputación: 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