Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Delphi XE6 + SqlServer 2012: Error con parametro desde TADOStoredProc (https://www.clubdelphi.com/foros/showthread.php?t=87731)

n3mohack 18-02-2015 22:36:29

Delphi XE6 + SqlServer 2012: Error con parametro desde TADOStoredProc
 
Hola amigos...
tengo un problema al ejecutar un procedimiento desde una BD SqlServer 2012 con Delphi XE6, me explico:

- Estoy utilizando TADOconnection, definiendo el Connection String con Provider=SQLOLEDB.1...,etc. me conecto sin problemas a la BD.
- Luego en un TADOStoredProc selecciono en la propiedad "ProcedureName" el procedimiento que deseo ejecutar (me los muestra todos sin problemas).
- Una vez seleccionado el procedimiento e ir a la propiedad "Parametros", detecta sin problema los parámetros que tiene definido el SP en SqlServer.
- Le defino los valores a cada uno en su propiedad "value" y al ejecutarlo me da el siguiente error:

"La aplicación utiliza un valor de tipo no válido para la operación actual".

El error me lo lanza cuando le pongo valor a un parámetro de fecha, el cual está definido en SqlServer como SMALLDATETIME. Este parámetro en el TADOStoredProc es detectado como ftDataTime. SMALLDATETIME no aparece en la lista "DataType" del TParameter, ¿existe uno análogo?.

El valor que le paso es '20150218' tal como me lo indicó el desarrollador de sqlserver, he probado también "20150218", 20150218 y nada, sólo si lo dejo null me carga el TDBgrid que tengo relacionado por Datasource, con el nombre de columna correspondiente pero sin datos.

Gracias de antemano por sus aportes.

Neftali [Germán.Estévez] 19-02-2015 10:51:30

Yo creo que la prueba más rápida es que pruebes lo mismo, pero con un tipo DATETIME normal.
Me parece que por ahí puede estar el problema. Esa prueba sencilla puede sacarte de dudas.

n3mohack 03-03-2015 17:22:12

Estimados... la solución era más simple de lo que imaginaba:

Código Delphi [-]
procedure TFMain.sbEventosClick(Sender: TObject);
var
   fecha : TDateTime;
begin
  try
    fecha := strtodate(TEFecha.Text);
  except
    MessageDlg('Fecha inválida. Formato requerido dd/mm/aaaa ', mtError, [mbOk], 0, mbOk);
    exit;
  end;
  Screen.Cursor := crHourGlass;
  Procedimiento.Close;
  Procedimiento.Parameters.ParamByName('@fecha_proceso').Value := fecha;
  Procedimiento.Open;
  Screen.Cursor := crDefault;
end;


La franja horaria es GMT +2. Ahora son las 05:44:59.

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