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)
-   -   Problemas con TADOStoredProc (https://www.clubdelphi.com/foros/showthread.php?t=52689)

luiggixD 28-01-2008 19:09:20

Problemas con TADOStoredProc
 
Hola a todos en la comunidad tengo serios problemas con una pequeña aplicacion que estoy realizando. Trabajo en Delphi 7 y empleo SQL 2000 como gestor de bd. Tengo unos cuantos sp almacenados en la bd y necesito llamar a un sp cuando cambio algo en un edit. Este sp recibe como parametro de entrada el texto del edit y he hecho algo asi:

Código Delphi [-]
procedure TPrincipal.txtPalabraChange(Sender: TObject);
begin
  // ADOsp es el TADOStoredProc
  with ADOsp do
  begin
    Close;
    Parameters[1].Value:= txtPalabra.Text;
    Open;
  end;

end;

y me sale un error que dice 'List index out of bounds(1)' lo cual es extraño xq cuando reviso el componente en los parametros aparecen los 2 valores que poseo. Cambie el codigo a:

Código Delphi [-]
procedure TPrincipal.txtPalabraChange(Sender: TObject);
begin
  // ADOsp es el TADOStoredProc
  with ADOsp do
  begin
    Close;
    Parameters.ParamByName('@Comienzo').Value:= txtPalabra.Text;
    Open;
  end;

end;

tambien sale un error a pesar de que el nombre del parametro en la herramienta visual es @Comienzo. No se que puedo hacer, donde me estoy equivocando o si debo intentar de otra manera. Gracias por su colaboracion.

jachguate 28-01-2008 20:04:00

  • La lista de parámetros es un arreglo cuyo primer elemento tiene índice cero (0).
  • Los parámetros en delphi se inician con el signo dos puntos (:), y no con la arroba (@). Independientemente de esto, siempre que se busca un parámetro por su nombre, no se incluye este caracter.

Hasta luego.

;)

poliburro 28-01-2008 20:27:56

Cita:

Empezado por jachguate (Mensaje 261628)
  • Los parámetros en delphi se inician con el signo dos puntos (:), y no con la arroba (@). Independientemente de esto, siempre que se busca un parámetro por su nombre, no se incluye este caracter.
Hasta luego.

;)


Eso es incorrecto. Parámetros de un Stored procedure en Sql server inician con @, Parámetros de un procedimiento en Db2, mysql y Oracle, solo requieren el nombre.

Probablemente te refieres a los querys paramétrizados, cuya definición efectivamente es con los dos puntos.

Ahora, retomando tu duda amigo luiggixD. Antes de realizar la asignación del valor, has creado los parámetros? de ser afirmativo, la definición en tu AdoSp es idéntica a la definición del Sp en SqlServer?.


Suerte

luiggixD 29-01-2008 01:55:58

Sucede que establezco la conexion con un ADOConnection y el ADOsp tiene en la conexion a este ADOConnection. En el query analizer cuando efectuo la llamada a los sps q tengo los ejecuta de manera correcta pero cuando lo hago en el delphi me salen los errores que mencione arriba. Ad+, el ADOsp tiene en el ProcedureName el valor del Stored Procedure que necesito, cuando veo el editor de los Parameters en momento de diseño aparece la variable '@Comienzo' tal como explique, aparecen 2 elementos en ese vector. Lo malo es que parece que en tiempo de ejecucion parece que se eliminan todos los elementos de Parameter, xq incluso intente la locura d poner con Parameters[0] y m salia el mismo error. Estoy realmente abrumado no entiendo x q no sale :( u.u
Espero que alguien pueda resolver este problema

poliburro 29-01-2008 02:41:04

Veamos.

prueba creando los parametros antes de invocar el sp usando:


Código Delphi [-]
AdoSp.Close;
With AdoSp.Parameters Do
  Begin
    Clear;
    CreateParameter(Definición);
    ParamByName('@Comienzo').Value:= txtPalabra.Text;
    Open;
 End;


Suerte

luiggixD 29-01-2008 03:53:21

Al parecer ha funcionado gracias x tu colaboracion poliburro :) espero no tener problemas mas adelante

julyus 26-08-2010 01:06:33

Hola Poliburrro
 
[quote=poliburro;261741]Veamos.

prueba creando los parametros antes de invocar el sp usando:


Código Delphi [-]
AdoSp.Close; With AdoSp.Parameters Do   Begin     Clear;     CreateParameter(Definición);     ParamByName('@Comienzo').Value:= txtPalabra.Text;     Open;  End;



comoseria si el store procedure me tendria que retornar datos
y la necesito en una varible ???


La franja horaria es GMT +2. Ahora son las 06:09:10.

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