|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Borland_Linuxer Moderador
Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Ter Jan 17, 2006 11:10 am Assunto: stored procedure no delphi |
|
|
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 |
|
|
edilcimar Colaborador
Registrado: Sábado, 31 de Julho de 2004 Mensagens: 1263 Localização: Vitória
|
Enviada: Ter Jan 17, 2006 11:21 am Assunto: stored procedure no delphi |
|
|
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 |
|
|
Banaggia Membro Junior
Registrado: Sexta-Feira, 22 de Agosto de 2003 Mensagens: 342 Localização: SayGon - RJ
|
Enviada: Ter Jan 17, 2006 11:25 am Assunto: stored procedure no delphi |
|
|
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(0 , @data2 varchar(0 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 |
|
|
Borland_Linuxer Moderador
Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Ter Jan 17, 2006 11:35 am Assunto: stored procedure no delphi |
|
|
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 |
|
|
Banaggia Membro Junior
Registrado: Sexta-Feira, 22 de Agosto de 2003 Mensagens: 342 Localização: SayGon - RJ
|
Enviada: Ter Jan 17, 2006 11:40 am Assunto: stored procedure no delphi |
|
|
[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 |
|
|
edilcimar Colaborador
Registrado: Sábado, 31 de Julho de 2004 Mensagens: 1263 Localização: Vitória
|
Enviada: Ter Jan 17, 2006 11:49 am Assunto: stored procedure no delphi |
|
|
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 |
|
|
Borland_Linuxer Moderador
Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Ter Jan 17, 2006 12:02 pm Assunto: stored procedure no delphi |
|
|
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 |
|
|
robotpost Profissional
Registrado: Domingo, 20 de Março de 2005 Mensagens: 615 Localização: São Paulo/SP
|
Enviada: Ter Jan 17, 2006 8:18 pm Assunto: stored procedure no delphi |
|
|
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 |
|
|
Borland_Linuxer Moderador
Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Sáb Jan 21, 2006 5:42 pm Assunto: stored procedure no delphi |
|
|
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 |
|
|
Lane1902 Experiente
Registrado: Quinta-Feira, 15 de Janeiro de 2004 Mensagens: 447
|
Enviada: Dom Jan 22, 2006 2:51 pm Assunto: stored procedure no delphi |
|
|
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 |
|
|
Borland_Linuxer Moderador
Registrado: Terça-Feira, 11 de Outubro de 2005 Mensagens: 4252 Localização: Manaus - Am
|
Enviada: Seg Jan 23, 2006 9:54 am Assunto: stored procedure no delphi |
|
|
[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 |
|
|
drullis Novato
Registrado: Quarta-Feira, 17 de Mai de 2006 Mensagens: 5
|
Enviada: Sex Fev 02, 2007 4:36 pm Assunto: |
|
|
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 |
|
|
drullis Novato
Registrado: Quarta-Feira, 17 de Mai de 2006 Mensagens: 5
|
Enviada: Seg Fev 05, 2007 6:34 pm Assunto: Como enviar dados da tela para o Banco de Dados |
|
|
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 |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|