Fórum Componente SQLStoredProd (dbExpress) configurado em IB preciso mudar para SQL Server 2008 #419828

12/07/2012

0

Boa tarde.

Estou usando um sistema que usava a base de dados IB. Estou usando agora o SQL Server.

Acontece que quando a stored procedure tem parametros de saida, da erro.

Alguem sabe se eu preciso configurar alguma coisa no componente?

Se a procedure é so um select. Tudo funciona bem.

Se a procedure recebe parametros e tem valores de saída. Erro na abertura do procedure

List index out of bounds (o)

Obrigado.


A procedure se executa normalmente dentro do SQL Server.


Segue a procedure
********************************************

USE [Client_NOMCLIENT]
GO
/****** Object: StoredProcedure [dbo].[PROC_BUSCA_PARAMETRO_COLUNA] Script Date: 07/12/2012 15:16:29 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[PROC_BUSCA_PARAMETRO_COLUNA](
@Formulario VARCHAR(40),
@CodUsuario INTEGER,
@Chave VARCHAR(60),
@Configuracao vARCHAR(1) OUTPUT,
@Indice SMALLINT OUTPUT,
@Tamanho INTEGER OUTPUT)
AS
BEGIN

SET @Configuracao = (SELECT CONFIGURACAO
FROM PARAM_COLUNA
WHERE FORMULARIO = @Formulario
AND CODIGO_USUARIO = @CodUsuario
AND CHAVE = @Chave);


SET @Indice = ( SELECT INDICE
FROM PARAM_COLUNA
WHERE FORMULARIO = @Formulario
AND CODIGO_USUARIO = @CodUsuario
AND CHAVE = @Chave);

SET @Tamanho = ( SELECT TAMANHO
FROM PARAM_COLUNA
WHERE FORMULARIO = @Formulario
AND CODIGO_USUARIO = @CodUsuario
AND CHAVE = @Chave);


SELECT @Configuracao , @Indice , @Tamanho

END

Rfb

Rfb

Responder

Posts

12/07/2012

Deivison Melo

Qual o erro que está ocorrendo?

Há como postar?

Responder

Gostei + 0

12/07/2012

Rfb

List index out of bounds (o)

Na abertura da procedure
Responder

Gostei + 0

12/07/2012

Rfb

List index out of bounds (o)
Responder

Gostei + 0

12/07/2012

Deivison Melo

Vc reaproveitou o componente anterior?

Será que a quantidade de campos adicionada não está diferente?

Responder

Gostei + 0

12/07/2012

Rfb

A chamada da procedure é a seguinte

Os parametros são de entrada.



***********************************

with stdBuscaParametroColuna do
begin

Close;
// Percorre a lista de variáveis de parâmetros
// Atribui os valores aos parâmetros da procedure
ParamByName(FORMULARIO).AsString := Copy(FRMSIS_MENU_PRINCIPAL.Formulario, 1, 40);
ParamByName(CODUSUARIO).AsInteger := FRMSIS_MENU_PRINCIPAL.CodUsuAtual;
ParamByName(CHAVE).AsString := Chave;

// Executa a procedure
ExecProc;

// Prepara o StringList para retornar se existir dados
if not ParamByName(CONFIGURACAO).IsNull then
Colunas.Visible := StrToBoo(ParamByName(CONFIGURACAO).AsString)
else
Colunas.Visible := True;

if not ParamByName(INDICE).IsNull then
Colunas.Index := ParamByName(INDICE).AsInteger
else
Colunas.Index := -1;

if not ParamByName(TAMANHO).IsNull then
Colunas.Tamanho := ParamByName(TAMANHO).AsInteger
else
Colunas.Tamanho := -1;

end;
Responder

Gostei + 0

13/07/2012

São Ti

Vi rapidinho seu código, mas notei que na aplicação você não usou o @ no nome dos parametros.
Exemplo:

No banco você usou @Tamanho e na aplicação Tamanho.

Dá uma olhada e veja se isso resolve, mais tarde olho com mais calma a sua rotina.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar