Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-12-2008
javi.donvito javi.donvito is offline
Registrado
 
Registrado: may 2005
Posts: 6
Poder: 0
javi.donvito Va por buen camino
Error paso de fecha por parametro en ADO

Buenas
Tengo un problema con las fechas a la hora de realizar un Update en una base de datos SQL Server utilizando componentes ADO y delphi 7

La cosa es que a la hora de realizar un UPDATE usando parámetros me da el sigme genera una excepción que viene diciendo:

Project rRecibos.exe raised exception class EOleException with message Microsoft ODBC SQL Server Drivers Optional feature not implemented

Los parametros de la Query los tengo configurados de la siguiente forma:
DateType : ftDateTime
Direction : pdinput
name : pFecha
numericScale :0
precision: 0
size : 0
value : 0:00:00
type : date

y el procedimiento en donde realizo la consulta la tengo de la siguiente forma (en mis pruebas apunto manualmente a un registro en concreto)


procedure TfReenvios.BitBtn2Click(Sender: TObject);

Var
FechaActual:TDate;

begin
DateSeparator:='-';
FechaActual:=now;

with ADOQCambiar do

begin
// Actualizar
ADOQCambiar.SQL.Clear;
ADOQCambiar.SQL.Add ('UPDATE CuotasEmitidas SET FecSituacion = echa '+
'WHERE CuotasEmitidas.CodPers = 1801 ' +
'AND CuotasEmitidas.NumRecibo = 810375');
ADOQCambiar.Parameters.ParamByName('pFecha').Value:=FormatDateTime ('yyyy/mm/dd',FechaActual);
ADOQCambiar.ExecSQL;

end;
end;
He mirado por el foro y en este hilo (http://www.clubdelphi.com/foros/showthread.php?t=59267&highlight=formato+de+fecha+en+SQL )me encontré que otros con un problema similar cambiaron el tipo DateType al formato ftTimeStamp. Pues bueno, intenté seguir esa vía pero al querer cambiar el tipo me sale este error

Arguments are of wrong type, are out of aceptable range, or are in conflict with one another.

Vamos que después de estar dando vueltas y vueltas a esto ya no sé por donde seguir ni que mirar ¿Me podría decir alguien que estoy haciendo mal ? Muchas gracias.
Responder Con Cita
  #2  
Antiguo 02-12-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Bienvenido a estos foros. Te recomiendo que le des una leida a la Guía de Estilo de los foros (enlace arriba de la publicidad).

Sobre tu problema, ya intentaste así?

Código Delphi [-]
ADOQCambiar.Parameters.ParamByName('pFecha').AsDateTime := FechaActual;


Saludos...
Responder Con Cita
  #3  
Antiguo 02-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Que base de datos usas?
Código Delphi [-]
Var
FechaActual:TDate;
begin
DateSeparator:='-';
FechaActual:= FormatDateTime('yyyy/mm/dd',now);
with ADOQCambiar do
begin
// Actualizar
ADOQCambiar.SQL.Clear;
ADOQCambiar.SQL.Add ('UPDATE CuotasEmitidas SET FecSituacion = echa '+
'WHERE CuotasEmitidas.CodPers = 1801 ' +
'AND CuotasEmitidas.NumRecibo = 810375');
ADOQCambiar.Parameters.ParamByName('pFecha').Value:= DateToStr(FechaActual);
ADOQCambiar.ExecSQL;
end;
end;
Saludos
__________________
Siempre Novato
Responder Con Cita
  #4  
Antiguo 02-12-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

¿Para que formatear la fecha?

Si usan una variable de tipo TDateTime, y usan la función Now, no es necesario hacer algo así. Con solo tener FechaActual := Now ya está.

También para pasar un valor a un parámetro de tipo TDateTime solo tienen que hacer AsDateTime := FechaActual...

Yo siempre lo he hecho así y hasta ahora no he tenido ningún problema.


Saludos...
Responder Con Cita
  #5  
Antiguo 02-12-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Lo bonito de usar parametros es que no tienes que hacer conversiones. Quita el "formatdatetime" y pasa directo "FechaActual".

Akelas, se me adelantaron... eso me pasa por ver un hilo, luego contestar el teléfono , atender pendientes y regresar a contestar...
__________________


Última edición por ContraVeneno fecha: 02-12-2008 a las 19:27:58.
Responder Con Cita
  #6  
Antiguo 02-12-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
... pero no has usado ADO .

En ADO sólo tienes .Value no existe AsString, AsDate, etc.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 02-12-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
En access el formato es algo engorroso, por eso aveces se necesita poner, incluso como esta no funcionaria.
Por eso pregunte que base de datos usa.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #8  
Antiguo 02-12-2008
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Cita:
Empezado por Lepe Ver Mensaje
... pero no has usado ADO .

En ADO sólo tienes .Value no existe AsString, AsDate, etc.

Saludos
Si lo he usado, pero no tan extensamente...

Y bueno, aun así, con poner .Value := FechaActual le debería funcionar sin grandes problemas. Claro siempre que establezca bien que el valor que se espera es de tipo TDateTime...


Saludos...
Responder Con Cita
  #9  
Antiguo 03-12-2008
javi.donvito javi.donvito is offline
Registrado
 
Registrado: may 2005
Posts: 6
Poder: 0
javi.donvito Va por buen camino
Gracias por la bienvenida y por responderme tan rápido. Y disculpar por el estilo del primer mensaje.

He realizado las pruebas que me habéis indicado pero sigo tendiendo problemas

El programa me genera la siguiente excepción:

'... exception class EConvertError with message "2008-12-03" is not a valid date'

No entiendo porqué, es un formato de fecha válido. Tampoco entiendo que me lo genere en ´la segunda linea

FechaActual :=StrToDate(FormatDateTime ('yyyy/mm/dd',now));

Siguiendo con las pruebas y pasando la fecha de las formas que me habias comentado

Parameters.ParamByName('pFecha').Value:=now; {o poniedo FechaActual}
me sigue generando el mismo error de ayer

Project rRecibos.exe raised exception class EOleException with message Microsoft ODBC SQL Server Drivers Optional feature not implemented

He probado y dado un motón de vueltas y me sigue dando problemas para pasar las fechas ¿Alguna sugerencia?

Gracias

Código Delphi [-]
procedure TForm1.btnActualizaClick(Sender: TObject);
Var
  FechaActual : TDateTime;
begin
  DateSeparator :='-';

 (*  En la siguiente linea
  FechaActual :=StrToDate(FormatDateTime ('yyyy/mm/dd',now));
  me sale el error
       '... exception class EConvertError with message "2008-12-03" is not a valid date'
 *)
  with ADOQCambiar do
  begin
    SQL.Clear;

    SQL.Add ('UPDATE CuotasEmitidas SET FecSituacion = Fecha'+
            'WHERE CuotasEmitidas.CodPers = 1801 ' +
            'AND CuotasEmitidas.NumRecibo = 810375');

    Parameters.ParamByName('pFecha').Value:=StrToDate(FormatDateTime ('yyyy/mm/dd',now));
    ExecSQL;

 end;
end;
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
Cómo paso por parametro una matriz?? NeoAnderson API de Windows 5 12-03-2008 02:47:09
Problema Paso parametro funcion NEG1414 C++ Builder 1 13-12-2007 22:58:22
parametro fecha con ado cmena Conexión con bases de datos 0 30-06-2005 17:55:50
Como paso un parametro a un formulario FNADALO OOP 4 22-11-2003 19:52:02
Como paso un la intancia Tstrings de un TComboBox (ComboBox.items) por parametro? orfeo OOP 1 05-05-2003 07:58:52


La franja horaria es GMT +2. Ahora son las 06:36:16.


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