Ver Mensaje Individual
  #2  
Antiguo 01-02-2006
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Reputación: 20
cuburu Va por buen camino
Ami me pasaba lo mismo, yo hice un procedimiento en la Base de Datos Firebird que son muy similares y cuando le intentaba enviar la fecha me mandaba un error a consecuencia de ello, lo que hice fue en lugar de enviar un campo tipo date enviaba un dato tipo char(10) despúes en el procedimiento hacia lo conversión. Hice algo como esto

Procedimiento

Código:
create procedure actualiza(fecha char(10),
                                     nombre varchar(15),
                                     apellidos varchar(20),
                                     edad integer)
as
declare variable FECH date;
begin
  FECH = :fecha;
  insert into tabla(fecha_tbl, nombre_tbl, apellidos_tbl)
  values(:fecha, :nombre, :apellidos);
end
y en delphi hago algo como esto:

Código Delphi [-]
var
  Inserta: TQuery;
begin
  Inserta := TQuery.Create(nil);
  try
    with Inserta do
    begin
      Close;
      SQL.Clear;
      //Consulto el procedimiento con un simple SELECT *
      SQL.Add('SELECT * FROM actualiza(:FECHA, :NOMBRE, :APELLIDOS)');
      ParamByName('FECHA').asString := DateToStr(FormatDateTime('dd"/"mm"/"aaaa', StrToDate(Edit1.Text)));
      ParamByName('NOMBRE').asString := Edit2.Text;
      ParamByName('APELLIDOS').asString := Edit3.Text;
      Open;
    end;
  finally
    Inserta.Free;
  end;
end;

Como te daras cuenta, envío el formato que ya se que es el que maneja la BD, eso crea dependencia a que el formato que maneja la BD nunca cambie pero me sirve por el momento hasta encontrar una solución.

También dejo la conversión del valor tipo char que envío al procedimiento para que la asigne a una varable y haga las conversiones pertinentes.

Espero te serva de algo esto... nos vemos.
Responder Con Cita