| 
			
				|  | ActiveDelphi .: O site do programador Delphi! :.
 
 |  
 
	
		| Exibir mensagem anterior :: Exibir próxima mensagem |  
		| Autor | Mensagem |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Seg Jan 15, 2007 10:35 am    Assunto: Problemas para gravar uma Stored Procedure? |   |  
				| 
 |  
				| Olah pessoal eh o sequinte criei uma SP e preciso passar os valores para ela, mais esta gerando o sequinte erro "List index out of bounds(31)" O problema esta somente quando tento passar por query
 
  	  | Código: |  	  | N := ComponentCount; for I := 0 to N-1 do
 begin
 if (Components[I] is TEdit) AND ((Components[I] as TEdit).Tag > 0) AND ((Components[I] as TEdit).Text <> '') then
 begin
 with {dm.QSP_Todomes} DM.IBQTODOMES do
 begin
 close;
 SQL.clear;
 //Chama a Stored procedure no IBQuery para gravar
 //sql.add('EXECUTE PROCEDURE SP_TodoMes (:sequencia, :ano,:conta_d, :conta_c, :mes, :valor, :historico, :contap_d, :contap_c, :nomenclatura1, :nomenclatura2, :mesvar)');
 sql.add(' Insert Into todomesconta (ano, conta_d, conta_c, mes, valor, historico, contap_d, contap_c, nomenclatura1, nomenclatura2, mesvar)');
 sql.add(' Values (:ano,:conta_d, :conta_c, :mes, :valor, :historico, :contap_d, :contap_c, :nomenclatura1, :nomenclatura2, :mesvar)');
 //{passando dos edits para o paramentro do Stored Procedure
 ParamByName('ano').AsString            :=edtAno.text;
 ParamByName('conta_D').AsString        :=edtDebito.text;
 ParamByName('conta_C').AsString        :=edtCredito.Text;
 ParambyName('historico').AsString      :=edtHistorico.Text;
 ParamByName('contap_d').AsString       :=et1.text;
 ParamByName('contap_c').asString       :=et2.text;
 ParamByName('nomenclatura1').AsString  :=Label12.caption;
 ParamByName('nomenclatura2').AsString  :=Label13.caption;
 ParamByname('mes').Value               := (Components[I] as TEdit).Tag;
 Case (Components[I] as TEdit).Tag of
 1: ParamByName('Valor').Value:= StrToCurr((Components[I] as TEdit).Text);
 2: ParamByName('Valor').Value:= StrToCurr((Components[I] as TEdit).Text);
 3: ParamByName('Valor').Value:= StrToCurr((Components[I] as TEdit).Text);
 {essa case vai ateh a tag do edit 12} nao postei mais o codigo pq da erro aki no forum
 end;
 execSQL;
 | 
 _________________
 Jogo seu smartphone? Acesse o link e confira.
 https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
 https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
 
 Editado pela última vez por adriano_servitec em Seg Jan 15, 2007 10:58 am, num total de 1 vez
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Seg Jan 15, 2007 10:37 am    Assunto: |   |  
				| 
 |  
				| Continuando pq nao deu para postar tudo num post Por IBTable nao tem problema
 
  	  | Código: |  	  | N := ComponentCount; for I := 0 to N-1 do
 begin
 if (Components[I] is TEdit) AND ((Components[I] as TEdit).Tag > 0) AND ((Components[I] as TEdit).Text <> '') then
 begin
 dm.IBTodoMes.Append; {para incluir na Tabela usando um DataSet}
 {passando os dados do edit para o DataSet}
 dm.IBTodoMesano.Value         := edtAno.Text;
 dm.IBTodoMesHistorico.Value   := edtHistorico.Text;
 dm.IBTodoMesConta_D.Value     := edtDebito.Text;
 dm.IBTodoMesConta_C.Value     := edtCredito.Text;
 dm.IBTodoMesContaP_D.Value     := et1.Text;
 dm.IBTodoMesContaP_C.Value     := et2.Text;
 dm.IBTodoMesNOMENCLATURA1.Value     := LABEL12.CAPTION;
 dm.IBTodoMesNOMENCLATURA2.Value     := LABEL13.CAPTION;
 dm.IBTodoMesMes.Value         := (Components[I] as TEdit).Tag;
 Case (Components[I] as TEdit).Tag of
 1: DM.IBTodoMesValor.Value     := StrToCurr((Components[I] as TEdit).Text);
 2: DM.IBTodoMesValor.Value     := StrToCurr((Components[I] as TEdit).Text);
 3: DM.IBTodoMesValor.Value     := StrToCurr((Components[I] as TEdit).Text);
 4: DM.IBTodoMesValor.Value     := StrToCurr((Components[I] as TEdit).Text);
 {tambem vai ateh a tag do edit12}
 end;
 dm.IBTodoMes.Post; {para gravar na tabela}
 end;
 | 
 Tambem nao da erro usando CDS
 
 E eu preciso passar esses dados por uma Stored Procedure
 
 Grato a ajuda de todos
 Adriano.
 _________________
 Jogo seu smartphone? Acesse o link e confira.
 https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
 https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
 
 Editado pela última vez por adriano_servitec em Seg Jan 15, 2007 10:47 am, num total de 1 vez
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Seg Jan 15, 2007 10:45 am    Assunto: |   |  
				| 
 |  
				| Desculpe postar em tanto post assim, mais foi a unica maneira que encontrei para msotrar o meu problema 
 Nao sei se precisa, mais tambem vou postar a StoredPorc
 
  	  | Código: |  	  | CREATE PROCEDURE SP_TODOMES ( SEQUENCIA INTEGER,
 ANO VARCHAR(4),
 CONTA_D VARCHAR(15),
 CONTA_C VARCHAR(15),
 MES INTEGER,
 VALOR NUMERIC(15,2),
 HISTORICO VARCHAR(100),
 CONTAP_D VARCHAR(15),
 CONTAP_C VARCHAR(15),
 NOMENCLATURA1 VARCHAR(50),
 NOMENCLATURA2 VARCHAR(50),
 MESVAR VARCHAR(2))
 AS
 begin
 if ( not exists(select sequencia from todomesconta where sequencia = :sequencia) )
 then
 Insert Into todomesconta (sequencia, ano, conta_d, conta_c, mes,  valor, historico, contap_d, contap_c, nomenclatura1, nomenclatura2, mesvar)
 Values (:sequencia, :ano, :conta_d, :conta_c, :mes,  :valor, :historico, :contap_d, :contap_c, :nomenclatura1, :nomenclatura2, :mesvar);
 
 Insert Into debitotmes (sequencia, ano, conta_d, conta_c, mes,  valor, historico, contap_d, contap_c, nomenclatura1, nomenclatura2, mesvar)
 Values (:sequencia, :ano, :conta_d, :conta_c, :mes,  :valor, :historico, :contap_d, :contap_c, :nomenclatura1, :nomenclatura2, :mesvar);
 
 Insert Into creditomes (sequencia, ano, conta_d, conta_c, mes,  valor, historico, contap_d, contap_c, nomenclatura1, nomenclatura2, mesvar)
 Values (:sequencia, :ano, :conta_d, :conta_c, :mes,  :valor, :historico, :contap_d, :contap_c, :nomenclatura1, :nomenclatura2, :mesvar);
 
 end
 | 
 Falando na Stored Procedure, essa que eu mostrei acima ja esta feita o probelma foi quando quis joga-la para um IBQuery de o sequinte erro na hora de ativa-la
 
 Validation error for column, ANO "***null***" at Procedure "SP_TodoMes"
 
 Grato a ajuda de todos
 Adriano.
 _________________
 Jogo seu smartphone? Acesse o link e confira.
 https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
 https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| thomazs Moderador
 
  
  
 Registrado: Segunda-Feira, 1 de Março de 2004
 Mensagens: 2835
 
 
 | 
			
				|  Enviada: Qui Jan 18, 2007 6:20 pm    Assunto: |   |  
				| 
 |  
				| Você pode usar uma trigger! 
 Agora com relação ao erro anteriormente citado, deve estar relacionado ao laço (quantidade de componentes) existentes. Se o valor for maior irá aparecer essa mensagem de erro. Por exemplo, na linha
 
 
  	  | Código: |  	  | Case (Components[I] as TEdit).Tag of | 
 Você força que o componente contido no Array Components seja um TEdit, porém se não for, irá retornar uma mensagem de erro. Para isso,verifique se o componente é mesmo um edit usando o IS:
 
  	  | Código: |  	  | if Components[I] is TEdit then... | 
 _________________
 Suporte e Consultoria em Desenvolvimento de Sistemas
 Bacharel em Sistemas de Informação
 Especialista em Bancos de Dados
 Desenvolvimento: Clipper, Delphi, PHP, Python/Django
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Qui Jan 18, 2007 9:38 pm    Assunto: |   |  
				| 
 |  
				| Olah Thomazs, obrigado amigo, por sempre estar me ajudando, mais eu nao sei como usar uma trigger neste caso, nao entendo praticamente nada de trigger e SP, estou tentando fazer mais praticamente o que eu sei eh zero. Sobre o erro acima resolvi usar as tables mesmo. Queria postar o codigo aki, mais o forum nao suporta o tamanho do codigo final. 	  | thomazs escreveu: |  	  | Você pode usar uma trigger! 
 Agora com relação ao erro anteriormente citado, deve estar relacionado ao laço (quantidade de componentes) existentes. Se o valor for maior irá aparecer essa mensagem de erro. Por exemplo, na linha
 
 
  	  | Código: |  	  | Case (Components[I] as TEdit).Tag of | 
 Você força que o componente contido no Array Components seja um TEdit, porém se não for, irá retornar uma mensagem de erro. Para isso,verifique se o componente é mesmo um edit usando o IS:
 
  	  | Código: |  	  | if Components[I] is TEdit then... | 
 | 
 _________________
 Jogo seu smartphone? Acesse o link e confira.
 https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
 https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Seg Jan 22, 2007 5:49 pm    Assunto: |   |  
				| 
 |  
				| Nao consigo passar por SP de maneira alguma 
 olha o codigo
 
  	  | Código: |  	  | procedure TForm3.b2Click(Sender: TObject); var i, n: SmallInt;
 begin
 N := ComponentCount;
 
 for I := 0 to N-1 do
 begin
 if (Components[I] is TEdit) AND ((Components[I] as TEdit).Tag > 0) AND ((Components[I] as TEdit).Tag < 13) and ((Components[I] as TEdit).Text <> '') then
 begin
 {comandos de inserção }
 if application.messagebox(PChar('Deseja Gravar este Lançamento?'), PChar('Incluir Dados'+Self.Caption),MB_IConquestion +MB_YesNo)=IDYES then
 begin
 with dm.SPqCorr do
 begin
 close;
 SQL.clear;
 sql.add('EXECUTE PROCEDURE SP_CORRENTE (:Matricula, :Associado, :Mespgto, :Mesrefini, :Mesreffim, :valor, :ano)');
 ParamByName('Matricula').Value   :=Edit1.text;
 ParamByName('Associado').value   :=label3.caption;
 ParamByName('Mespgto').value     :=strtodate(maskedit1.text);
 ParamByName('Mesrefini').value   :=strtodate(maskedit2.text);
 ParamByName('Mesreffim').value   :=strtodate(maskedit3.text);
 
 {SValor deixei como variavel Global - Variavel sValor recebendo o valor que contem no componente edtValorPadrao}
 sValor := edtValorPadrao.Text;
 {transforma a variavel sValor para receber valores com ponto e virgula tipo 1.000,00}
 sValor := stringreplace(sValor, '.', '', [rfReplaceAll]);
 | 
 
 Continua o post na parte de baixo por motivo de erro do forum
 _________________
 Jogo seu smartphone? Acesse o link e confira.
 https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
 https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
 
 Editado pela última vez por adriano_servitec em Seg Jan 22, 2007 5:54 pm, num total de 1 vez
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 | 
			
				|  Enviada: Seg Jan 22, 2007 5:51 pm    Assunto: |   |  
				| 
 |  
				| 2ª parte do codigo 
  	  | Código: |  	  | {Case recebendo a variavel sValor} if Components[I] is TEdit then BEGIN
 Case (Components[I] as TEdit).Tag of
 1: ParamByName('valor').Value := StrToCurr( sValor );
 2: ParamByName('valor').Value := StrToCurr( sValor );
 3: ParamByName('valor').Value := StrToCurr( sValor );
 4: ParamByName('valor').Value := StrToCurr( sValor );
 5: ParamByName('valor').Value := StrToCurr( sValor );
 6: ParamByName('valor').Value := StrToCurr( sValor );
 7: ParamByName('valor').Value := StrToCurr( sValor );
 8: ParamByName('valor').Value := StrToCurr( sValor );
 9: ParamByName('valor').Value := StrToCurr( sValor );
 10: ParamByName('valor').Value := StrToCurr( sValor );
 11: ParamByName('valor').Value := StrToCurr( sValor );
 12: ParamByName('valor').Value := StrToCurr( sValor );
 end; //final do case
 END; //FINAL DO IF
 ParamByName('ano').value   :=edtano.text;
 try
 ExecSql;
 dm.ibtCorr.CommitRetaining;
 ...
 ...
 | 
 Nao passa para a Stored Procedure.
 A Stored Procedure fiz assim
 
  	  | Código: |  	  | CREATE PROCEDURE SP_CORRENTE ( SEQUENCIA INTEGER,
 MATRICULA VARCHAR(6),
 ASSOCIADO VARCHAR(50),
 MESPGTO DATE,
 MESREFINI DATE,
 MESREFFIM DATE,
 VALOR NUMERIC(15,2),
 ANO VARCHAR(4))
 AS
 begin
 if ( not exists(select sequencia from CORRENTE where sequencia = :sequencia) )
 then
 Insert Into CORRENTE (matricula, associado, mespgto, mesrefini, mesreffim, valor, ano)
 Values (:matricula, :associado, :mespgto, :mesrefini, :mesreffim, :valor, :ano);
 end
 | 
 Nao sei o que faço para conseguir jogar estes parametros para SP.
 
 Obrigado pela ajuda
 Adriano.
 _________________
 Jogo seu smartphone? Acesse o link e confira.
 https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
 https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| Lane1902 Experiente
 
  
 
 Registrado: Quinta-Feira, 15 de Janeiro de 2004
 Mensagens: 447
 
 
 | 
			
				|  Enviada: Sex Jan 26, 2007 5:07 am    Assunto: Ola Amigo. |   |  
				| 
 |  
				| Vamos ver se posso ter ajudar um pouco a solucionar o problema de envio de campos para a StoredProcedure, voce esta usando campos edit nao ?, ok entao so uma dica, pra utilizar esta procedure nomeie os campos edits com o mesmo nome da base de dados, exemplo : Campo na base de dados = COD_CLIENTE.
 Nome do Edit na tela = COD_CLIENTE.
 
 ok.
 
 Segue a procedure:
 
 Declarando a procedure:
 
 { Trazer os Dados da Tela p/ o Banco de Dados. }
 procedure PTelaBC( Objeto: TIBStoredProc; Tipo: integer );
 
 
 Criando 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;
 
 { Se Estiver no Intervalo de Componentes Exigido: }
 IF ( Form.Components[i].ClassName = 'TMaskEdit'      ) OR
 ( Form.Components[i].ClassName = 'TEdit'          ) OR
 ( Form.Components[i].ClassName = 'TRichEdit'      ) OR
 ( Form.Components[i].ClassName = 'TMemo'          ) OR
 ( Form.Components[i].ClassName = 'TCheckBox'      ) OR
 ( Form.Components[i].ClassName = 'TComboBox'      ) OR
 ( Form.Components[i].ClassName = 'TDateEdit'      ) OR
 ( Form.Components[i].ClassName = 'TRadioGroup'    ) OR
 ( Form.Components[i].ClassName = 'TCurrencyEdit'  ) OR
 ( Form.Components[i].ClassName = 'TFilenameEdit'  ) OR
 ( Form.Components[i].ClassName = 'TDirectoryEdit' ) OR
 ( Form.Components[i].ClassName = 'TRxSpinEdit'    )then
 begin
 
 { 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;
 
 { Se for do Tipo Data. }
 IF Source.DataType = ftDateTime then
 begin
 IF TEdit( Form.Components[i] ).Text <> '' then
 Source.Value := StrToDateTime( TEdit( Form.Components[i] ).Text );
 end;
 
 { Se for do Tipo Flutuante. }
 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
 begin
 
 IF( Source.Name = 'CIF' ) then
 Source.Value  := FFormate( TMaskEdit( Form.Components [i] ).Text, 0 )
 else
 Source.Value :=  TMaskEdit( Form.Components[i] ).Text;
 end;
 
 { 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]).Lines.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
 begin
 
 { Tipo de Dado = Float e Integer. }
 IF Source.DataType in [ftFloat, ftInteger] then
 begin
 IF TCurrencyEdit(Form.Components[i]).Text <> '' then
 Source.Value := StrToFloatDef( TCurrencyEdit( Form.Components[i] ).Text, 0 );
 end;
 end;
 
 { Verificar se é TFileNameEdit. }
 IF Form.Components[i] is TFilenameEdit then
 Source.Value  := TFilenameEdit( Form.Components[i] ).Text;
 
 { Verificar se é TDirectoryEdit. }
 IF Form.Components[i] is TDirectoryEdit then
 Source.Value  := TDirectoryEdit( Form.Components[i] ).Text;
 
 { Verificar se é TRxSpinEdit. }
 IF Form.Components[i] is TRxSpinEdit    then
 Source.Value  := TRxSpinEdit( Form.Components [i] ).Text;
 end;
 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.Transaction.CommitRetaining;
 end;
 { Se o Banco Retornar Algum Erro... . }
 except on E: EDataBaseError do
 begin
 
 { Mostrar a Mensagem. }
 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;
 
 
 Chame a procedure assim :
 
 { Procedimento para Levar os Dados da Tela para o Banco de Dados.}
 PTelaBC( SpClientes, Operacao );
 
 
 Espero ter ajudado voce, caso voce queira passar parametros diretamente sem utilizar esta procedure, basta colocar o nome do edit diferente do nome na base de dados e passar como parametro antes de chamar a procedure ex:
 
 Params [ 9].Value       := ednome.text;
 
 PTelaBC( SpClientes, Operacao );
 
 Ok um abraco, qualquer coisa manda ver.
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		| adriano_servitec Colaborador
 
  
 
 Registrado: Sexta-Feira, 30 de Janeiro de 2004
 Mensagens: 17618
 
 
 |  |  
		| Voltar ao Topo |  |  
		|  |  
		|  |  
  
	| 
 
 | Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido
 Editar Mensagens: Proibido.
 Excluir Mensagens: Proibido.
 Votar em Enquetes: Proibido.
 
 |  |