Como alterar uma SP
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???
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
Curtidas 0
Respostas
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 ??!!
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
01/08/2005
Prefria usar ParamByName ao invés de índices.
GOSTEI 0
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
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.
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
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