Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 10
Catublipas Va por buen camino
Smile Problema Modificar fecha BBDD

Buenas tardes chicos,

os comento mi problema que es un poco raro. Tengo una base de datos de Interbase a la cual hago una consulta a través de un DataSet, puedo modificar cualquier campo menos el de la fecha(En realidad si se modifica pero siempre inserta la misma fecha).

Para modificar la fecha hacemos click en un registro de la consulta la cual nos lleva a otra pantalla y solo podemos modificar la fecha, que es en realidad lo que único que necesito, en la pantalla de modificación tengo un DateTimePicker para seleccionar la fecha que queremos poner en el campo. Pues bien, cuando vuelvo a hacer la consulta la fecha que se ha introducido es 17/11/1858 ponga la que ponga siempre se introduce esta fecha.

Os adjunto el código del form de modificación:

Código Delphi [-]
 RentabilidadPMForm.IBDataSet2.Close;
RentabilidadPMForm.IBDataSet2.ModifySQL.Clear;
RentabilidadPMForm.IBDataSet2.ModifySQL.Add('update FAC1 set FECHAIMPUTACION = :CODIGOFECHA1 where DOCNUM = ''000177'' AND OBRACOD = ''9999''');
RentabilidadPMForm.IBDataSet2.ParamByName('CODIGOFECHA1').AsDate:= fecha;
RentabilidadPMForm.IBDataSet2.Open;
RentabilidadPMForm.IBDataSet2.Edit;
RentabilidadPMForm.IBDataSet2.Post;

A ver si podéis ayudarme, si me falta algún detalle solo comentadmelo.

Muchas gracias por vuestra ayuda como siempre.

Un saludo!
Responder Con Cita
  #2  
Antiguo 11-12-2015
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Exclamation

Estas herrado en los conseptos... ese ModifySQL es para que se haga automatico no debes hacer nada para que haga ese update...

en teoria deberia funcionar asi...

Código Delphi [-]
   RentabilidadPMForm.IBDataSet2.edit;
   RentabilidadPMForm.IBDataSet2FECHA.asDateTime:=fecha;
   RentabilidadPMForm.IBDataSet2.post;

podria variar si necesitas coomitear o no pero esa es la esencia...
__________________
^_^

http://stna.cl

Última edición por fredo fecha: 11-12-2015 a las 17:02:08.
Responder Con Cita
  #3  
Antiguo 11-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿En esa variable de nombre fecha, qué valor hay al momento de asignarla?
¿De qué tipo es el campo?

Y sobra la línea con el Open y la línea con el Edit.
Responder Con Cita
  #4  
Antiguo 11-12-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Catublipas.

Coincido con fredo en que es una confusión conceptual, en este enlace se explica el uso del componente TIBDataSet: http://www.intitec.com/varios/Delphi...rd_con_ibx.pdf.

Y, como te menciona Casimiro, tiene que haber concordancia entre el tipo de la variable "fecha", el del parámetro y el de la columna de la tabla.



Si deseas usar una sentencia SQL de ese modo, deberías usar un TIBQuery:
Código Delphi [-]
var
  qy: TIBQuery;
begin
  qy := RentabilidadPMForm.IBQuery1;
  qy.Close;
  qy.SQL.Clear;
  qy.SQL.Add('UPDATE FAC1');
  qy.SQL.Add('SET FECHAIMPUTACION = :CODIGOFECHA1');
  qy.SQL.Add('WHERE DOCNUM = :DOCNUM AND OBRACOD = :OBRACOD');
  qy.ParamByName('CODIGOFECHA1').AsDate := fecha; // (siendo "fecha" de tipo TDate)
  qy.ParamByName('DOCNUM').AsString     := '000177';
  qy.ParamByName('OBRACOD').AsString    := '9999';
  qy.ExecSQL;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 14-12-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 10
Catublipas Va por buen camino
Muy buenas chicos, perdonar la demora, dejé apartado el finde el ordenador.
Os comento:

-He probado la solución de ecfisa y me muestra el siguiente error:

Código Delphi [-]
Access violation at address 008814BF in module 'Program.exe'. Read of address 00000000

-En respuesta a Casimiro, el valor de la variable en el momento de asignarla es correcto, es decir, he probado a mostrar un mensaje que muestre el contenido de la fecha seleccionada con el TDateTimePicker y efectivamente toma bien el valor que he clickado, solo que al final en la base de datos se inserta el valor que os comenté 17/11/1858. Y de hecho si yo deseo modificar otro campo, como pudiera ser el OBRACOD no tendría ningún problema con la estructura que os he enseñado, pero la fecha me hace ese extraño. El tipo de dato es Date.

Muchas gracias de nuevo por vuestra ayuda .

Un saludo!!
Responder Con Cita
  #6  
Antiguo 14-12-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Ya, pero ¿la variable fecha de qué tipo es? Si es una cadena de texto y estás asignándola a un campo datetime...
Responder Con Cita
  #7  
Antiguo 14-12-2015
Catublipas Catublipas is offline
Miembro
NULL
 
Registrado: ene 2015
Posts: 55
Poder: 10
Catublipas Va por buen camino
Perdonad chicos, resuelto con la solución de ecfisa.

Muchas gracias de nuevo chicos, sois unos cracks.

Un abrazo!
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
Problema al modificar Ibdtaset José Luis Garcí Firebird e Interbase 2 21-05-2010 15:11:46
Modificar Fecha SQL mjjj SQL 3 16-01-2008 06:09:42
Problema al modificar en una BD poniente Conexión con bases de datos 1 03-02-2006 14:33:43
Modificar formato fecha JODELSA Windows 4 24-05-2004 21:25:07
Problema el insertar/modificar registro ing_alsaac Conexión con bases de datos 0 29-02-2004 09:18:15


La franja horaria es GMT +2. Ahora son las 23:18:28.


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