Extravasamento da pilha processo stopped..

Delphi

04/01/2004

Bom! Tudo o que eu queria era o seguinte: 1º o que eu tenho, uma tabela paradox com os campos código tipo N, Referencia tipo A, datapag tipo D e valorpag tipo $. Então no formulário eu tenho um botão imprimir quando click nele aparece um outro form com dois maskedit onde eu quero informar uma data inicial e uma data final para sair no quickrep só aquele período que eu quero. Me deram essa dica no fórum, mais continua não dando certo agora com essa mensagem de erro, o que isso? Alguém já viu e pode me ajudar?

O codigo e esse o erro esta mais abaixo(o erro ocorre em tempo de execução)
var
Pesq:String; // campo a ser pesquisado
Begin
Pesq := ´datapag´;
if (MaskEdit1.Text = ´ / / ´) or (MaskEdit2.Text = ´ / / ´) then
ShowMessage(´Voce Tem que Digitar as Datas´)
else
begin
Query1.Sql.Clear;
Query1.SQL.Add(´Select * from reccond´);
Query1.SQL.Add(´Where ´+Pesq+´ between :Inicio and :Final´);
Query1.SQL.Add(´Order By ´+Pesq);
Query1.ParamByName(´Inicio´).AsDate:=StrToDate (MaskEdit1.text);
Query1.ParambyName(´Final´).AsDate:=StrToDate (MaskEdit2.text);
Query1.Prepare; // devido alteração na query em tempo de execução
Query1.Open;
F_relrectaxa:= F_relrectaxa.Create(Self);
F_reltaxa.QuickRep1.Preview;
end;
end;

O erro
´ project admincondo1.exe raised exception class estackoverflow with message ´extravasamento da pilha processo stopped use step on run to continue ´

Obrigado
wagnernormando@ig.com.br


Wagner

Wagner

Curtidas 0

Respostas

Wagner

Wagner

04/01/2004

Caramba ninguem sabe essa?


GOSTEI 0
Rodolpho123

Rodolpho123

04/01/2004

Bem, tente declarar os valores de ´início´ e ´final´ bem no início do bloco, como variáveis, e também vai uma dica: Sempre que eu faço uma abertura de tabela usando uma Query e em seguida eu mando executar um QuickReport.PreviweModal, 90¬ dos casos o formulário sai em branco, devido ao QR abrir mais rápido que a Query, então o que eu faço, só mando executar um QuickReport.PreviewModal quando eu realmente tenho certeza de que a Query está completamente aberta.
Abraços e espero te-lo ajudado


GOSTEI 0
Wagner

Wagner

04/01/2004

Na teoria esta certo, mais na pratica como sou iniciante ainda continuo sem saber como fazer


GOSTEI 0
Wagner

Wagner

04/01/2004

Socorro tá dificil, por favor alguem pode analizar esse codigo acima e ver o que eu estou fazendo errado, eu so quero de uma tabela com codigo, datapag, referencia e valorpag dai abrir um pequeno form com 2 maskedit __/__/___ a ___/___/____ e informa um periodo que eu quero imprimir. Alguem pode me ajudar?


GOSTEI 0
Wagner

Wagner

04/01/2004

Socorro....


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

if (MaskEdit1.Text = ´ / / ´) or (MaskEdit2.Text = ´ / / ´) then
ShowMessage(´Voce Tem que Digitar as Datas´)
else
begin
Query1.disablecontrols;
Query1.Close;
Query1.SQL.Clear;
Query1.Sql.Add(´Select * from reccond´);
Query1.Sql.Add(´Where datapag>=:Datainicial´);
Query1.ParamByName(´datainicial´).asdate:=strtodate(Maskedit1.text);
Query1.Sql.Add(´And datapag<=:DataFinal´);
Query1.ParamByName(´DataFinal´).asdate:=strtodate(maskedit2.text);
Query1.Prepare;
Query1.open;
Query1.EnableControls;
end;//Fim do Else
end;
Apos Esta Consulta Se Voce Tiver Um DbGrid No Formulário Ele Apresentará o Conteúdo Da Pesquisa, Que Foi Limitado Pelas Datas Contidas Nos Componentes MaskEdit...
Com Isto Voce Deve Ter Um Outro Botão Para Selecionar o Formulário Do QuickReport. Com Isto Voce Evita Que o Quick Report Abra Em Branco
Como Foi Levantado Pelo Nosso Colega ´rodolpho123´...Se Der Tudo Certo, O Próximo Passo é Trabalhar Para Evitar Datas Inválidas No MaskEdit.Isto Já é Um Outro Problema


GOSTEI 0
Wagner

Wagner

04/01/2004

Desculpe-me a insistencia, pelo o que eu entendi alem de dois maskedit para informar as data tem que ter um dbgrid? ok! esse condigo eu informo aonde? em que evento do form ou botao?

Obrigado


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

O DbGrid Não É Obrigatório.Mas é Interresante Para Você Visualizar Os Dados. Para Voce Ver O Resultado De Sua Pesquisa.Você Pode Colocar O DbGrid No Form ,Selecionando Suas Propiedades Correta, e Depois Elimina-lo, Se For o Caso. Quanto Ao Código, Voce Pode Informar No Evento OnClick De Um Botão.
P:S : O Primeiro Passo Que Voce Tem Que Fazer é Visualizar O Resultado De Sua Pesquisa e Depois, Imprimir o Relatório.Porque o Seu Problema Pode Estar Na Definição Do QuickReport e Naõ Na Sua Pesquisa.
Concluido a Pesquisa e Se Der Tudo Certo, Como eu Acredito Que Irá Dar , Aí Sim , Voce Vai Se Preocupar Com a Impressão Dos Dados.


GOSTEI 0
Wagner

Wagner

04/01/2004

Valeu.. :D Vou tentar agora mesmo te dou um retorno assim que puder, mais uma vez obrigado pela ajuda, paciencia e atenção

Um abraço

´Saúde e Paz o resto agente corre atraz ´


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

E AÍ Wagner :?: Tudo Certo :?:


GOSTEI 0
Wagner

Wagner

04/01/2004

Eu novamente, coloquei desta forma, não deu erro ao compilar mas quando informo a data nao acontece nada..nem erro! so quando eu nao informo nenhuma data ai ele diz ´ / / data invalida´ o que eu estou fazendo de errado? esquecendo de colocar? como fica o dbgrid? com as propriedades do table? estou todo confuso! iniciante apanha mesmo, pior quando não conhece SQL.

procedure TF_relrectaxa.BitBtn1Click(Sender: TObject);
//não ficou faltando declarar nenhuma variavel????
begin
if (MaskEdit1.Text = ´ / / ´) or (MaskEdit2.Text = ´ / / ´) then
ShowMessage(´Voce Tem que Digitar as Datas´)
else
begin
Query1.disablecontrols;
Query1.Close;
Query1.SQL.Clear;
Query1.Sql.Add(´Select * from reccond´);
Query1.Sql.Add(´Where datapag>=:Datainicial´);
Query1.ParamByName(´datainicial´).asdate:=strtodate(Maskedit1.text);
Query1.Sql.Add(´And datapag<=:DataFinal´);
Query1.ParamByName(´DataFinal´).asdate:=strtodate(maskedit2.text);
Query1.Prepare;
Query1.open;
Query1.EnableControls;
end;
end;


GOSTEI 0
Wagner

Wagner

04/01/2004

Aguardando.....


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

Vamos Por Partes. No Seu Formulário Entre Outras Coisas Deve Ter:Um Query(e Não Um Table), Um DataSource,Um DbGrid, Dois MaskEdit,Um Botão(Para Realisar a Pesquisa).No Query Selecionar (Propiedades DataBaseName<Caminho Onde Esta Sua Tabela Paradox>, e a Propriedade Sql , Escreva ´Select *From NOMEDASUATABELA´. Para Saber Em Tempo De Projeto Se Esta Tubo Bem Selecione a Propiedade Active:=True Do Query.(Voce Não Pode Receber Nenhuma Mensagem De Erro).Ok?.Selecione Agora A Propiedade DataSet:=Query1 Do DataSoure1. E Finalmente a Propiedade DataSouce:=DataSource1 Do
DbGrid. A Sua Tabela Escrita No Parardox Tem Que Aparecer No DbGrid.O Que Irá Limitar o Conteúdo Dos Valores Apresentados Pelo DbGid Em Tempo De Execução Será a Sua Pesquisa( Que Será Executada Pelo Evento ONClik Do Botão). Escreva o Código No Botão , e Mande Rodar. Não Tem Jeito De Dar Errado. Agora Isto Não Tem Nada a Ver Com a Impressão, Que Deve Ser Realosado No Formulário A Parte.Voce Tem Que Previnir Contra Datas Invalidas No MaskEdit(Mas Tambem é Uma Outra Parte).Continue Tentando, Voce Esta No Caminho Certo, E Entre Em Contato o Mais Rápido Possível.
P:S Quando eu Falo o Caminho Da Sua Tabela é Para Selecionar o Nome Da Aliase. Se Ainda Não Tiver Um Aliase, Não Tem Problema, Digite o Diretorio Onde Esta Armazenado Sua Tabela. Exemplo:C:\NomeDo Arquivo.....Etc....
Obs: Mas a Criacao De Um Aliase é Fácil e De Muita Importancia.


GOSTEI 0
Wagner

Wagner

04/01/2004

Caro colega, em primeiro quero agradecer. são explicações bem detalhadas como a sua que facilita a vida dos iniciantes.

Bom! mais ainda estou fazendo alguma coisa errada coloquei uma query no meu form, No Query Selecionei (Propiedades DataBaseName o caminho onde esta minha Tabela Paradox, e a Propriedade Sql , Escrevi ´Select *From reccond´. Selecionei a Propiedade Active:=True do Query(nenhuma mensagem de erro). So que agora vem o problema, no datasouce1 na Propiedade DataSet que é para ser :=Query1 não esta aparecendo o query1, o que eu estou esqucendo de fazer?


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

Isto Seria Quase Que Imediato.(Seria Uma Opção ÚNICA). Mas o Que Acho Que Você Deve Te Feito Que Daria Um ´Erro´ Deste Tipo, e Alem Das Propiedades Que Lhe Sugeri, Voce Deve Ter Selecionado a Propiedade DataSource Do QUERY1.[color=red:1f25bb204b]ESTA PROPRIEDADE PARA ESTE EXEMPLO ESPECÍFICO [/color:1f25bb204b]NÃO PODE ESTAR CONFIGURADA COM NENHUM VALOR.TIRE ESTE VALOR DESTA PROPIEDADE SE FOR O CASO E AI VOCE VAI TER A OPÇÃOP DE QUERY1 NO DATASET DO DATASOURCE.Foi Claro :?:


GOSTEI 0
Wagner

Wagner

04/01/2004

:D :D :D :D :D :D Colega, valeu mesmo deu certinho agora.
Ai...... galera do forum quem tiver esse mesmo problema pode seguir essa dica que quente.

:lol: Ops! ainda tenho um problema como imprimir? como jogar os dados selecionados para o quickrep1?

:lol: Ainda pode me ajudar?


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

Vamos Tentar.O Primeiro Passo Que Voce Deve Fazer é Criar Um Novo Form. Escolha Um Nome Para Este Form Por Exemplo:
´FormQuickRelatorio´. Salve-o Chamando Sua Respectiva Unit Pelo Nome De ´UFormQuickRelatorio´.Vá em ´Project options´ e Passe Este Form Para
a Secção ´Available Forms´.OK :?: Antes De Passar Para o Próximo Passo,
Vá No Form Onde Estara Sendo Feito a Consulta e na Seção Uses Declare a Uses Do UFormQuickRelatorio
......................
var
FormPrincipal: TFormPrincipal;

implementation

Uses
UFormQuickRelatorio;
No Formulário Do Relatorio Na Mesma Seção Voce t.B Deve Fazer Referencia Ao Form Principal.
var
FormQuickRelatorio: TFormQuickRelatorio;

implementation

uses
UFormPrincipal;

{$R *.DFM}
Voltemos Nossa Atenção Agora Para a Construção Do Relatorio
No ´FormQuickRelatorio´ Insira Um Componente QuickReport
Alterer a Propiedade ´Report Title´ Do QuickReport Para O Título Que Voce Que Usar
Na Sua Propiedade DataSet Selecione a FormPrincipal.Query1;
Insira Um Componete QRband e Altere Sua Propiedade BandType Para
RbPageHeader,
Brinque Com as Propiedades Frame Desta Banda....
Insira Nesta Banda Um Componente QrSysData e Configure Sua Propiedade Data Para QrsReportTitle. Voce Nesta Banda Pode Colocar Outros Componetes QrSysData e Selecionar Sua Propriedades Data etc....
Insira Agora Um Novo Componete Qrband e Altere Sua Propriedade BandType Para rbTitle.
Insira Nesta Nova Banda Um QrLabel...:[color=red:448ba5e284]IMPORTANTE . É ESTE LABEL QUE RECEBERÁ O PERIODO DE SUA PESQUISA. IREMOS DEFINI-LO NO OUTRO FORMULÁRIO. SE ESTA VARIÁVEL OU O FORMULÁRIO NÃO TIVER CRIADO CORRETAMENTE , PODEREMOS TER O ERRO QUE VOCE ABRIU ESTE TÓPICO[/color:448ba5e284]
Insira Outro Componete QrBand e Altere Sua Propriedade BandType Para rbColumnHeader... Coloque Nesta Banda a Quantidade De Labeis Necessário e Configure Sua Propriedade Caption Com o Valor Devido.
Insira Novo Componente QrBand e Altere Sua Propriedade BandType Para
rbDetail..Coloque Nesta Banda os Componetes QRDBText e Configure Suas Propiedades DatSet Para ´FormPrincipal.Query1´ e a Propiedade DataField Para o Campo Correspondende. Claro Que Deve Estar Aninhados Com Os QrLabels Definidos Na Banda Acima.
Insira a Ultima Banda e Altere Sua Propriedade BandType Para PageFooter...Este Passo é o Rodapé e Vou Deixar Com Voce....Se Você Der Um Click Como o Botão Direito Do Mouse Escolha a Opção Preview
Para Voce Ver Como Esta a Constriução De Seu Relatório.Par Isto Deixe a Propriedade Active Do Query1 Em True.Vou Para Por Aqui. Faça Isto e Me Comunique Quando Terminar.
Obs:Se Voce Já Montou Um Form Contendo Um Relatório, Não é Recomdendável Que Voce Fique Remendando , Porque Alguma Propriedade Indesejável Pode Ficar Selecionada[color=red:448ba5e284](COMO FICOU A PROPRIEDADE DATASOURCE DO QUERY NO CASO ANTERIOR. E APARECER UMA SITUAÇÃO QUE A GENTE NÃO CONSIGA POR LINHAS RESOLVER.EM OUTRAS PALAVRAS , FAÇA UM NOVO FORM. É RÁPIDO E NÃO DOI.... [/color:448ba5e284]


GOSTEI 0
Wagner

Wagner

04/01/2004

Ufa! terminei fiz do jeito que voce ensinou, esta dando o seguinte erro

´Violação do acesso no endereço 004F851B no modulo nomedoprograma.exe ler do endereço 000002F0´


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

Wagner. O Domingo Esta Terminando Então Vamos Nos Apressar.Não é Par Dar Erro Nenhum. É O Que Você e eu Esperamos.Ate Aonde Eu Parei
Voce Não Rode O programa. Apenas Compile o Programa Para Verificar Eventuais Erros Ortográficos.[color=red:6103ed882d]Você Pode e Deve No Form Do Relatório Dar
Um Click e Selecionar a Opção Preview.[/color:6103ed882d]Con Certeza Irá Ter Uma Idéia Do Relatório.Se Não Consiguir Revise Os Valores Das Bandas Criadas.Comunique o Mais Rápido Quando Acabar


GOSTEI 0
Wagner

Wagner

04/01/2004

Fiz da forma que ensinou, quando compilo não da nenhum erro quando dou o preview ele me mostra o formulario com todos os itens da tabela

Fica assim:

Pageheader
-----------------------------------------------------------------------
´Report Title´ = Relatório demonstrativo (QrSysData1)
´QrSysData2´ = datatime
´QrSysData3´ = pagenumber
-----------------------------------------------------------------------
tetler
Qrlabel1 //no preview aparece dessa forma
-----------------------------------------------------------------------
collunheader

-----------------------------------------------------------------------
detail

----------------------------------------------------------------------

Não entendi essa parte

[color=red:aa1830976d]Insira Agora Um Novo Componete Qrband e Altere Sua Propriedade BandType Para rbTitle.
Insira Nesta Nova Banda Um QrLabel...:IMPORTANTE . É ESTE LABEL QUE RECEBERÁ O PERIODO DE SUA PESQUISA. IREMOS DEFINI-LO NO OUTRO FORMULÁRIO. SE ESTA VARIÁVEL OU O FORMULÁRIO NÃO TIVER CRIADO CORRETAMENTE , PODEREMOS TER O ERRO QUE VOCE ABRIU ESTE TÓPICO [/color:aa1830976d]


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

Mas E Exatamente Aí Que Eu Queri Que Vove Chegasse. Vamos Para a Outra Etapa.No Evento OnShow Do Form Principal Digite a Instrução Para Criar o Form Do Relatorio:
Application.CreateFor(TFormQuickRelatorio,FormQuickRelatorioVendas);
A Seguir Em Um Outro Botão No Evento Onclick Tambem Vamos Escrever o Código :
FormQuickRelatorioVendas.QrLabel1.Caption:=´Período de :´+
MaskEdit1.Text+´ A ´+MaskEdit2.Text;
FormQuickRelatorioVendas.QuickRep1.PreviewModal;
FormQuickRelatorio.Release;
[color=red:49338dac68]Obs: Eu Não Sei oNome Do Seu Label Que Esta Localisado Na Banda Title
Do FormQuickRelatorio. Estou Referindo a Este Label Como Label1.[/color:49338dac68]
Rapas , Se Voce Já Consegui Efetuar Uma Pesquisa(Limitando As Datas),
Verificou o Relatório Com o Comando Preview, Compilou Sem Dar Erro no
Projeto, Voce Esta Esperando O Que :?: É SÓ DIGITAR ESTES CÓDIGOS,
INSERIR ESTE NOVO BOTÃO E SER FELIZ....

OBS:é claro que voce tem que melhorar muito a estética de Seu Relatório,
Bem Como Escrever, métodos Para Previnir Datas Inválidas Digitadas No MaskEdit,Ate Mesmo Melhorar a Aparencia Do MaskEdit, Tambem Rotinas Para Que Ao Abrir o Seu Form Principal Datas Específicas(Escolhidas Com Algum Critério Por Voce) Estejam Selecionadas Nos MaskEdits e a Pesquisa Seja Feita AUTOMATICAMENTE. Tambem Botoes Para Realisar Novas Pesquisas.Emfim voce Tem Um Mundarel De Coisas Para Se Preocupar. [color=red:49338dac68]Contudo Eu Tenho Certeza, Que Realizando Esta Primeira Etapa a Que Nós Nos Propusemos, Eu Tenho Certeza Que Ganhamos O
DOMINGO....[/color:49338dac68]


GOSTEI 0
Wagner

Wagner

04/01/2004

So um pequeno detalhe enquanto eu coloco as outras coisas

[color=blue:a2bc2377e4]Application.CreateFor(TFormQuickRelatorio,[/color:a2bc2377e4][color=red:a2bc2377e4]FormQuickRelatorioVendas);[/color:a2bc2377e4]

O azul eu entendi
mais o vermelho relatoriovendas?


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

Desculpe-me. Não Tem ´Vendas. É Só FormQuickRelatorio.Corrigindo:
No Evento OnShow Do Form Principal Digite a Instrução Para Criar o Form Do Relatorio:
[color=red:58b612cd8d]Application.CreateForm(TFormQuickRelatorio,FormQuickRelatorio); [/color:58b612cd8d]


GOSTEI 0
Wagner

Wagner

04/01/2004

Meu amigo Marco :D :D :D :D :D :D :D Cara valeu mesmo..muito obrigado isso foi demais, obrigado pela sua paciência, obrigado pelo seus detalhes passo-a-passo obrigado por tudo :D :D :D :D :D deu certinho, funcionou, Oh! domigão, quem sabe depois voce pode olhar um outro topico sobre :lol: mais voce já ajudou demais valeu mesmo quando tiver um tempo voce ´Se puder´ da uma olhadinha, enquanto isso estou aqui. Um Abraço meu amigo

10/11/2003 colocar 100,00 no Credito. Saldo = 100,00
11/11/2003 colocar 100,00 no Credito. Saldo = 200,00
12/11/2003 colocar 50,00 no Debito. Saldo = 50,00

wagnernormando@ig.com.br


GOSTEI 0
Wagner

Wagner

04/01/2004

Desculpe-me saldo = 150,00


GOSTEI 0
Marco Salles

Marco Salles

04/01/2004

VALEU,VALEU,VALEU,MUITO.Quanto ao Outro Tópico, Se Atê Sábado Que Vem(Internet no Meio De Semana é CARO....)Você Não Ter Conseguido,
Vamos Juntos Vencer Mais Este Obstáculo. Agora, Estou Trocando ´Z´Com´S´,´M´Com´N´,´P´Com´B´´Etc...´Por´Ctc...Domingão :D


GOSTEI 0
Wagner

Wagner

04/01/2004

Claro, tambem uso a net nos fins de semana, uma boa semana e ate lá


GOSTEI 0
POSTAR