Como alterar uma SP

Delphi

01/08/2005

Amigos, estou utlizando em um componente TSQLStroredProcedure.
A tabela interbase tem 13 campos e preciso aumentar mais dois campos
Na SP quando vou salvar os dados na tabela passo as linhas como abaixo

TD.TransactionID := 1;
TD.IsolationLevel := XILReadCommitted;
DM.SQLC.StartTransaction(TD);
Try
begin
Desabilita;
E_Compra.Text:=´Dinheiro´;
DM.SPC_IVendas.Params[1].AsDate:=Date;
DM.SPC_IVendas.Params[2].Value:=ClientDataset1.FieldByname(´Total´).Value;
DM.SPC_IVendas.Params[3].AsInteger := StrtoInt(E_Desconto.Text);
DM.SPC_IVendas.Params[4].AsString:=´Dinheiro´;
DM.SPC_IVendas.Params[5].AsString:=´N´;
DM.SPC_IVendas.Params[6].AsInteger:=0;
DM.SPC_IVendas.Params[7].AsInteger:=0;
DM.SPC_IVendas.Params[8].AsInteger:=0;
DM.SPC_IVendas.Params[9].Value:=0;
DM.SPC_IVendas.Params[10].AsInteger:=StrToInt(E_Caixa.Text);
DM.SPC_IVendas.Params[11].AsString:=(E_Usuario.Text);
DM.SPC_IVendas.Params[12].AsString:=(E_NOME.Text);
DM.SPC_IVendas.Params[13].AsString := Edit8.Text;
DM.SPC_IVendas.Params[14].AsString:=(Edit13.Text);
DM.SPC_IVendas.Execproc;
ClientDataset1.First;
Contador:=ClientDataset1.RecordCount;

Bom acrescentei os dois campos na tabele e estou tentando gravar aparece o erro List Index of Bounds(13), quer dizer que o Params 13 e 14 não estão sendo passado.
Bem minha duvida é onde e quando passar estes campos novos para o componente TSQLStroredProcedure.
Tente refazer a SP, colocando os dois campos, não dar erro, mas não grava na tabela.
Alguem poderia ajudar por favor???


Dpinho

Dpinho

Curtidas 0

Respostas

Motta

Motta

01/08/2005

Não entendi bem mas para alterar uma TStoredProc é necessário :

Alterar o objeto do BD

Alterar/Recriar o componente Delphi

Nesta ordem para que o Delphi pegue os parametros da SP

Vc fez isto ??!!


GOSTEI 0
Beppe

Beppe

01/08/2005

Prefria usar ParamByName ao invés de índices.


GOSTEI 0
Dpinho

Dpinho

01/08/2005

Não entendi bem mas para alterar uma TStoredProc é necessário : Alterar o objeto do BD Alterar/Recriar o componente Delphi Nesta ordem para que o Delphi pegue os parametros da SP Vc fez isto ??!!


Primeiro acrescentei os campos em minha tabela;
Tentei criar a SP, utlizando o Meta da Sp anterior, porem tem umas Dependencies que não consigo criar;
Pos outro Objeto no datamodule, porem ele não assume os novos campos como parametros
Poderia me ajudar a resolver este problema?
Obrigado


GOSTEI 0
Motta

Motta

01/08/2005

os parametros são da SP não da TABLE , vc deve alterar a SP

CREATE OR REPLACE PROCEDURE ....
é a sintaxe Oracle (IB não sei mas deve parecido)

Só após alterar a SP vc pode alterar o comp TStoredProc.

Como disse o Beppe o uso de ParamByName simplifica a alteração quando se muda os parametros , eu pessoalmente prefiro trabalhar por indice, mesmo tendo mais trabalho na alteração.


GOSTEI 0
Dpinho

Dpinho

01/08/2005

o problema foi resolvido: deletei a SP e recriei ela novamente, não teve outra solução. Agradeço o Fernando Alemida pela ajuda.


GOSTEI 0
POSTAR