ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

stored procedure no delphi

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Borland_Linuxer
Moderador
Moderador


Registrado: Terça-Feira, 11 de Outubro de 2005
Mensagens: 4252
Localização: Manaus - Am

MensagemEnviada: Ter Jan 17, 2006 11:10 am    Assunto: stored procedure no delphi Responder com Citação

Ola galera blz, como alguns ja sabem trabalho com mssql mais tenho algumas duvidas de como criar stored procedure tanto no delphi quanto no sql server alguem pode uma dica de como posso usar no delphi, tipo em que situações isso pode me ajudar, exemplo de stored procedure, conceitos essas coisas...


abraços....
_________________
Abraços

Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
edilcimar
Colaborador
Colaborador


Registrado: Sábado, 31 de Julho de 2004
Mensagens: 1263
Localização: Vitória

MensagemEnviada: Ter Jan 17, 2006 11:21 am    Assunto: stored procedure no delphi Responder com Citação

create procedure inclui_cliente(vcodigo integer, vnome varchar(40)) as
begin
insert into clientes(codigocliente, nomecliente) values (:vcodigo, : vnome);
suspend;
end; ^

with storeproc1 do
begin
parambyname(\'vcodigo\').asinteger := strtoint(edit1.text);
parambyname(\'vnome\').asstring := edit2.text;
end;
_________________
Não pergunte sem antes utilizar o "Procurar"
Sempre continue um tópico já começado, não abra outro desnecessariamente
Sempre diga qual o banco de dados e componentes utilizados
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Banaggia
Membro Junior
Membro Junior


Registrado: Sexta-Feira, 22 de Agosto de 2003
Mensagens: 342
Localização: SayGon - RJ

MensagemEnviada: Ter Jan 17, 2006 11:25 am    Assunto: stored procedure no delphi Responder com Citação

Kara eu utilizo as Stoerd Procedure no SQL 2000, e fica muito bom!, vou postar uma Stored procedure que tenho e como passo para executar ele dentro do Delphi:

*******************************************
Stored Procedure
*******************************************
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO


/****** Object: Stored Procedure dbo.dt_Ped_Periodo Script Date: 17/11/2005 14:50:49 ******/

CREATE PROCEDURE dt_Ped_Periodo @data1 varchar(0Cool , @data2 varchar(0Cool AS

truncate table pedido_periodo

INSERT INTO PEDIDO_PERIODO ( GRUPO, REF_BASICA, N_PEDIDO, VENDA, CUSTO, QTD_PEDIDA, QTD_A_RECE, COD_FORNEC, MODELO ,VVENDA , VCUSTO)
SELECT LG_REFBASICA.GRUPO,
SAVEA052.REF_BASICA,
SAVEA052.N_PEDIDO,
Avg(SAVEC030.PR_VAREJO) AS VENDA,
Avg(SAVEC030.PR_CUSTO) AS CUSTO,
Sum(SAVEA052.QTD_PEDIDA) AS QTD_PEDIDA,
Sum(SAVEA052.QTD_A_RECE) AS QTD_A_RECE,
SAVEA052.COD_FORNEC,
LG_REFBASICA.MODELO,
Avg(0) AS VCUSTO,
Avg(0) AS VVENDA
FROM (LG_REFBASICA INNER JOIN SAVEA052 ON LG_REFBASICA.REF_BASICA = SAVEA052.REF_BASICA) INNER JOIN SAVEC030 ON (SAVEA052.REFERENCIA = SAVEC030.REFERENCIA) AND (SAVEA052.REF_BASICA = SAVEC030.REF_BASICA)
WHERE (((SAVEA052.DATA_LIMIT) Between @data1 And @data2))
GROUP BY LG_REFBASICA.GRUPO, SAVEA052.REF_BASICA, SAVEA052.N_PEDIDO, SAVEC030.PR_VAREJO, SAVEC030.PR_AQUISIC, SAVEC030.PR_CUSTO, SAVEA052.COD_FORNEC, LG_REFBASICA.MODELO
ORDER BY LG_REFBASICA.GRUPO, SAVEA052.REF_BASICA, SAVEA052.N_PEDIDO;

UPDATE PEDIDO_PERIODO SET VCUSTO = QTD_A_RECE*CUSTO,
VVENDA = QTD_A_RECE*VENDA;


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

************************************************
Final da Stored Procedure
************************************************

************************************************
No Delphi
************************************************
DMdados.ST_Ped_periodo.Parameters[1].Value := FormatDateTime(\'yyyymmdd\', DMdados.ParametrosDTINI.Value); // Primeiro Parametro o @data1 da Stored
DMdados.ST_Ped_periodo.Parameters[2].Value := FormatDateTime(\'yyyymmdd\', DMdados.ParametrosDTFIM.Value);// Segundo Parametro o @data2 da Sored
DMdados.ST_Ped_periodo.Prepared := True;
DMdados.ST_Ped_periodo.ExecProc; // Aqui execulta

************************************************
Fim do Delphi
************************************************

Kara eu utilizo essa , por exemplo para me preparar uma base dentro do SQL onde meu sistema pega varias coisas, isso pode ser para vazer um Insert,Update, uma deleção, etc.

qq coisa pode postar, e no que puder lhe ajudar eu ajudo...

inté

_________________
[]'s,
Marco Banaggia

SEMPRE COLOQUE [RESOLVIDO] NO SEU POST
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Borland_Linuxer
Moderador
Moderador


Registrado: Terça-Feira, 11 de Outubro de 2005
Mensagens: 4252
Localização: Manaus - Am

MensagemEnviada: Ter Jan 17, 2006 11:35 am    Assunto: stored procedure no delphi Responder com Citação

Banaggia, edilcimar: valeu pelos exemplos .

tem como me passar os componentes.

eu posso usar query ou ADOStoredProc1..

abraços.
_________________
Abraços

Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Banaggia
Membro Junior
Membro Junior


Registrado: Sexta-Feira, 22 de Agosto de 2003
Mensagens: 342
Localização: SayGon - RJ

MensagemEnviada: Ter Jan 17, 2006 11:40 am    Assunto: stored procedure no delphi Responder com Citação

[quote]Banaggia, edilcimar: valeu pelos exemplos .

tem como me passar os componentes.

eu posso usar query ou ADOStoredProc1..

abraços. [/quote]

Eu utilizo o ADO...
_________________
[]'s,
Marco Banaggia

SEMPRE COLOQUE [RESOLVIDO] NO SEU POST
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
edilcimar
Colaborador
Colaborador


Registrado: Sábado, 31 de Julho de 2004
Mensagens: 1263
Localização: Vitória

MensagemEnviada: Ter Jan 17, 2006 11:49 am    Assunto: stored procedure no delphi Responder com Citação

o meu é para um TStoreProc
_________________
Não pergunte sem antes utilizar o "Procurar"
Sempre continue um tópico já começado, não abra outro desnecessariamente
Sempre diga qual o banco de dados e componentes utilizados
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Borland_Linuxer
Moderador
Moderador


Registrado: Terça-Feira, 11 de Outubro de 2005
Mensagens: 4252
Localização: Manaus - Am

MensagemEnviada: Ter Jan 17, 2006 12:02 pm    Assunto: stored procedure no delphi Responder com Citação

alguem mais pode enriquecer esse poster..?
_________________
Abraços

Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
robotpost
Profissional
Profissional


Registrado: Domingo, 20 de Março de 2005
Mensagens: 615
Localização: São Paulo/SP

MensagemEnviada: Ter Jan 17, 2006 8:18 pm    Assunto: stored procedure no delphi Responder com Citação

amigo borland_linuxer...
se me permite, queria te pedir uma ajuda...
vc sabe manipular triggers no MSSQL?
se sim, poderia me dar umas dicas de como elas funcionam, conceitos, algum exemplo, etc...
agradeço desde já...
abraços,
robotpost
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Borland_Linuxer
Moderador
Moderador


Registrado: Terça-Feira, 11 de Outubro de 2005
Mensagens: 4252
Localização: Manaus - Am

MensagemEnviada: Sáb Jan 21, 2006 5:42 pm    Assunto: stored procedure no delphi Responder com Citação

pessoa alguem pode me dar uma dica sobre como fazer um cadastro so com stored procedured, ja fiz um aqui mais queria mais algumas dicas..


abraços...
_________________
Abraços

Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
Lane1902
Experiente
Experiente


Registrado: Quinta-Feira, 15 de Janeiro de 2004
Mensagens: 447

MensagemEnviada: Dom Jan 22, 2006 2:51 pm    Assunto: stored procedure no delphi Responder com Citação

Ola Colegas.

Vamos Ver se serei Prestativo.

Eu Utilizo uma procedure que pega os dados da Tela e envia para a Stored Direto, Sendo que os nomes dos TMaskEdit\'s devem ter os mesmos nomes da base de dados Exemplo:

Cod_Pessoa = TMaskEdit.Name := Cod_Pessoa;

Entenderam ?

Seque o Procedimento que Utilizo para Salvar Dados Cadastrais, Adaptem conforme a sua necessidade.

Um Abraço a Todos Valeu, Fuiiiiiiiiiiiiiiiiiiii......



{ Trazer os Dados da Tela p/ o Banco de Dados. }
procedure PTelaBC( Objeto: TIBStoredProc; Tipo: integer );



Declarando a Procedure:



procedure PTelaBC( Objeto: TIBStoredProc; Tipo: integer );
(*
Nome : PTelaBC
Objetivo : Carregar os Dados da Tela p/ o Banco de Dados.
Data : 19/01/2005.
Autor : Ricardo Scarpim.
Parâmetros:
Entrada :
Objeto = TStoredProcedure.
Tipo = Incluindo / Alterando.

OBS :
No Formulário, os Campos Devem Receber o Mesmo Nome que Consta na
Tabela, a Stored Procedure Também deverá Conter o Mesmo Nome do Campo
que Constar na Tabela.
*)

Var
i : integer;
Source : TParam;
sForm : String;
Form : TForm;
begin

With DMClientes, Objeto Do
begin

{ Pega o Nome do Form Ativo. }
Form := Screen.ActiveForm;

{ Inicia a Busca Pelo Nome dos Componentes no Form. }
For i := 0 To Form.ComponentCount - 1 Do
begin

{ Processar as Mensagens. }
Application.ProcessMessages;

{ Localizar o Parametro na Stored Procedure. }
Source := Objeto.Params.FindParam( Form.Components[i].Name );

{ Se Localizar o Objeto. }
IF Source <> NIL then
begin

{ Verifica se é Edit. }
IF Form.Components[i] is TEdit then
begin
IF Source.DataType = ftString then
Source.Value := TEdit(Form.Components[i]).Text;
IF Source.DataType = ftDateTime then
begin
IF TEdit( Form.Components[i] ).Text <> \'\' then
Source.Value := StrToDateTime( TEdit( Form.Components[i] ).Text );
end;
IF Source.DataType in [ftFloat, ftInteger] then
begin
IF TEdit(Form.Components[i]).Text <> \'\' then
Source.Value := StrToFloatDef(TEdit(Form.Components[i]).Text, 0 );
end;
end;

{ Verifica se é MaskEdit. }
IF Form.Components[i] is TMaskEdit then
begin

{ Tipo de Dado = string. }
IF Source.DataType = ftString then
Source.Value := TMaskEdit( Form.Components[i] ).Text;

{ Tipo de Dado = Data e Hora. }
IF Source.DataType = ftDate then
begin
IF( ( TMaskEdit(Form.Components[i]).Text <> \'\' ) AND ( TMaskEdit(Form.Components[i]).Text <> \' / / \' ) ) then
Source.Value := StrToDate( TMaskEdit(Form.Components[i]).Text )
else
Source.Value := NULL;
end;

{ Tipo de Dado = Float e Integer. }
IF Source.DataType in [ftFloat, ftInteger] then
begin
IF TMaskEdit(Form.Components[i]).Text <> \'\' then
Source.Value := StrToFloatDef( TMaskEdit(Form.Components[i]).Text, 0 );
end;
end;

{ Verifica se é RichEdit. }
IF Form.Components[i] is TRichEdit then
Source.Value := TRichEdit(Form.Components[i]).Text;

{ Verifica se é Memo. }
IF Form.Components[i] is TMemo then
Source.Value := TMemo(Form.Components[i]).Text;

{ Verifica se é CheckBox. }
IF Form.Components[i] is TCheckBox then
IF TCheckBox( Form.Components[i] ).Checked then
Source.Value := 1
else
Source.Value := 0;

{ Verifica se é ComboBox. }
IF Form.Components[i] is TComboBox then
Source.Value := TComboBox( Form.Components[i]).Text;

{ Verifica se é TDateEdit. }
IF Form.Components[i] is TDateEdit then
IF( ( TDateEdit(Form.Components[i]).Text <> \'\' ) AND ( TDateEdit(Form.Components[i]).Text <> \' / / \' ) ) then
Source.Value := TDateEdit( Form.Components[i]).Text
else
Source.Value := NULL;

{ Verifica se é RadioGroup. }
IF Form.Components[i] is TRadioGroup then
Source.Value := TRadioGroup( Form.Components[i]).ItemIndex;

{ Verificar se é TCurrencyEdit }
IF Form.Components[i] is TCurrencyEdit then
Source.Value := TCurrencyEdit( Form.Components[i] ).Text;

end;
end;

{ Passagem da Operacao que a SP irá Executar: 1 - Incluir 2 - Alterar 3 - Excluir. }
Source := Params.FindParam(\'Tipo\');

IF Source <> NIL then
Source.Value := Tipo;

{ Obter nome do formulário ativo. }
sForm := Screen.ActiveForm.Name;

{ Iniciando Transação. }
Try
begin

{ Executa Procedure. }
ExecProc;

{ Comitar a Transação. }
DMConexao.TRConexao.CommitRetaining;
end;
{ Se o banco retornar algum erro... . }
except on E: EDataBaseError do
begin
MessageDlg( \'Problemas no Envio dos Dados ao Servidor!\' + #13 + #10 + #13 + #10 +
\'Formulário: \' + sForm + #13 + #10 +
\'Procedure: \' + Objeto.Name + #13 + #10 +
\'Mensagem: \' + E.Message + #13 + #10 + #13 + #10 +
\'Contate o Suporte Informando os Dados Acima!\', mtError, [mbOK], 0);
end;
end;
end;
end;




Trazendo os Dados do Banco para a Tela.

{ Trazer os Dados do Banco de Dados p/ a Tela. }
procedure PBancoTL( Objeto: TIBQuery; Form: TForm );

Declarando o Procedimento:



procedure PBancoTL( Objeto: TIBQuery; Form: TForm );
(*
Nome : PBancoTL
Objetivo : Carregar os Dados do Banco de Dados Para a Tela.
Data : 12/01/2005.
Autor : Ricardo Scarpim.
Parâmetros:
Entrada :
Objeto = TQuery.
Form = Nome do Formulário.
*)

Var
i : Integer;
Source: TComponent;
begin
With Objeto Do
begin

{ Varrer o Formulário à Procura dos Componentes. }
For i := 0 To FieldDefs.Count - 1 Do
begin

{ Pegar o Nome do Componente. }
Source := Form.FindComponent( FieldDefs.Items[i].Name );

{ Se Achar Algo. }
IF Source <> NIL then
begin

{ Tipo de Campo Edit. }
IF Source is TEdit then
TEdit(Source).Text := Trim( FieldByName( FieldDefs.Items[i].Name ).AsString );

{ Tipo de Campo MaskEdit. }
IF( Source is TMaskEdit ) then
TMaskEdit(Source).Text := Trim( FieldByName( FieldDefs.Items[i].Name ).AsString );

{ Tipo de Campo Memo. }
IF Source is TMemo then
TMemo(Source).Text := Trim( FieldByName( FieldDefs.Items[i].Name ).AsString );

{ Tipo de Campo CheckBox. }
IF Source is TCheckBox then
TCheckBox(Source).Checked := FieldByName( FieldDefs.Items[i].Name ).AsInteger = 1 ;

{ Tipo de Campo TDateEdit. }
IF Source is TDateEdit then
TDateEdit(Source).Text := FieldByName( FieldDefs.Items[i].Name ).AsString;

{ Tipo de Campo ComboBox. }
IF Source is TComboBox then
TComboBox(Source).Text := FieldByName( FieldDefs.Items[i].Name).AsString;

{ Tipo de Campo TRadioGroup. }
IF Source is TRadioGroup then
TRadioGroup(Source).ItemIndex := FieldByName( FieldDefs.Items[i].Name ).AsInteger;

{ Tipo de Campo TCurrencyEdit }
IF Source is TCurrencyEdit then
TCurrencyEdit(Source).Text := FieldByName( FieldDefs.Items[i].Name ).AsString;
end;
end;
end;
end;

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Borland_Linuxer
Moderador
Moderador


Registrado: Terça-Feira, 11 de Outubro de 2005
Mensagens: 4252
Localização: Manaus - Am

MensagemEnviada: Seg Jan 23, 2006 9:54 am    Assunto: stored procedure no delphi Responder com Citação

[b] Lane1902[/b] lane obrigado pela dica vou testar aqui
_________________
Abraços

Sérgio Guedes
www.lsisistemas.com.br
www.scvarejo.com.br - Projetos para parceiros e desenvolvedores
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
drullis
Novato
Novato


Registrado: Quarta-Feira, 17 de Mai de 2006
Mensagens: 5

MensagemEnviada: Sex Fev 02, 2007 4:36 pm    Assunto: Responder com Citação

Estou com o mesmo proplemas e o comando abaixo sé funciona em TStoredProc e não funciona com TIBStoredProc:


Source := Objeto.Params.FindParam( Form.Components[i].Name );

Então sempre vai ser nulo, não continuando o codigo:

IF Source <> NIL then


O que pode estar de errado?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
drullis
Novato
Novato


Registrado: Quarta-Feira, 17 de Mai de 2006
Mensagens: 5

MensagemEnviada: Seg Fev 05, 2007 6:34 pm    Assunto: Como enviar dados da tela para o Banco de Dados Responder com Citação

Lane1902, implementei em meu sistema a dica que vc passou no forum para enviar dados da tela para o BAnco de Dados, mas ao passar DATAS, conf. exemplo abaixo, o compilador aparesenta a mensagem de erro (UNDECLARED IDENTIFIER: NULL), como resolver este problema.

//--> Verifica se é TDateEdit (RX)
if Form.Components[i] is TDateEdit then
if TDateEdit(Compon).Text <> ' / / ' then
Source.Value := TDateEdit(Form.Components[i]).Date
else
Source.Value := Null;

Obrigado
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB