
António44
Membros-
Total de itens
168 -
Registro em
-
Última visita
Tudo que António44 postou
-
Preview com mais de uma página, apresenta um erro ?
pergunta respondeu ao António44 de António44 em Delphi, Kylix
;) Obrigado Micheus eu posso esperar que você poste ai o código,muito obrigado. Abraços pra você amigo. -
Preview com mais de uma página, apresenta um erro ?
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Testei esta variavel 1º Code , e ela funciona...mas muda o TMP para C:\Windows\Temp...?estou na duvida se ela devia mudar ou não a TMP...??? e não retorna,fica definitivo.???? No micro onde estou rodando a Aplicação que é na Camara...que vocês no Brasil chamam de Prefeitura penso ? eles usam uma internet Movel por USB e cada vez que liga ela dá um erro de Run Time 32 até ai tudo normal eu pensava que não tinha a ver com o meu programa mas na via das duvidas eu quis testar com a outra variavel que retorna ao TMP original que está no 2º Code primeiro liguei a net entrei na rede e depois executei o meu programa...e lá estava o erro:?????no soft. da Net Movel , sai voltei a executar e não há duvidas, tb eles usam o OpenOfice e ao abrir o editor de texto foi criar uma pasta em Meus documentos com o nome %USERPROFILE%\definicões locais\Temp...???,será que não haveria outra maneira de dar a volta a isso???. uses Registry; // unit com a declaração de TRegistry // função para mudança de variáveis de ambiente function SetGlobalEnvironment(const Name, Value: string; const User: Boolean): Boolean; resourcestring REG_MACHINE_LOCATION = 'System\CurrentControlSet\Control\Session Manager\Environment'; REG_USER_LOCATION = 'Environment'; begin with TRegistry.Create do try if User then { User Environment Variable } Result := OpenKey(REG_USER_LOCATION, False) else { System Environment Variable } begin RootKey := HKEY_LOCAL_MACHINE; Result := OpenKey(REG_MACHINE_LOCATION, False); end; if Result then begin WriteString(Name, Value); { Write Registry for Global Environment } { Update Current Process Environment Variable } SetEnvironmentVariable(PChar(Name), PChar(Value)); { Send Message To All Top Window for Refresh } SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment'))); end; finally Free; end; end; { SetGlobalEnvironment } procedure TBrwChaves.FormCreate(Sender: TObject); var LongPath :array[0..512] of char; ShortPath :array[0..MAX_PATH] of char; begin GetTempPath(SizeOf(LongPath), LongPath); if LongPath <> '' then begin if GetShortPathName(LongPath, ShortPath, MAX_PATH) > 0 then begin if not SetGlobalEnvironment('TMP', ShortPath, True) then ShowMessage('Erro ao tentar mudar a variável de ambiente "TMP"'); end else ShowMessage('Erro ao obter o path curto.'); end; end; 2º Code. uses Registry; // unit com a declaração de TRegistry // função para mudança de variáveis de ambiente function SetGlobalEnvironment(const Name, Value: string; const User: Boolean): Boolean; resourcestring REG_MACHINE_LOCATION = 'System\CurrentControlSet\Control\Session Manager\Environment'; REG_USER_LOCATION = 'Environment'; begin with TRegistry.Create do try if User then { User Environment Variable } Result := OpenKey(REG_USER_LOCATION, False) else { System Environment Variable } begin RootKey := HKEY_LOCAL_MACHINE; Result := OpenKey(REG_MACHINE_LOCATION, False); end; if Result then begin WriteString(Name, Value); { Write Registry for Global Environment } { Update Current Process Environment Variable } SetEnvironmentVariable(PChar(Name), PChar(Value)); { Send Message To All Top Window for Refresh } SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment'))); end; finally Free; end; end; { SetGlobalEnvironment } // função para obtenção do valor de variáveis de ambiente function GetGlobalEnvironment(const Name: string; const User: Boolean): string; resourcestring REG_MACHINE_LOCATION = 'System\CurrentControlSet\Control\Session Manager\Environment'; REG_USER_LOCATION = 'Environment'; var Resultado :Boolean; begin with TRegistry.Create do try if User then { User Environment Variable } Resultado := OpenKey(REG_USER_LOCATION, False) else { System Environment Variable } begin RootKey := HKEY_LOCAL_MACHINE; Resultado := OpenKey(REG_MACHINE_LOCATION, False); end; if Resultado then Result := ReadString(Name); finally Free; end; end; { GetGlobalEnvironment } procedure TForm1.FormCreate(Sender: TObject); var TMP, WinDir :String; begin TMPOld := ''; // variável declarada na sessão private do form WinDir := GetGlobalEnvironment('windir', False); // o código abaixo só irá funcionar no Windows XP e superior, abaixo destes // não deve haver problemas com nomes longos if WinDir = '%SystemRoot%' then begin TMP := GetGlobalEnvironment('TMP', False); Delete(TMP, 1, Length(WinDir)); TMPOld := GetGlobalEnvironment('TMP', True); if not SetGlobalEnvironment('TMP', 'c:\windows'+TMP, True) then ShowMessage('Não foi possível alterar a variável de ambiente "TMP"'); end; end; procedure TBrwChaves.FormDestroy(Sender: TObject); begin if TMPOld <> '' then // se variável foi alterada... SetGlobalEnvironment('TMP', TMPOld, True); end; -
Tem aqui tb outros jeitos de fazer esse filtro. dm.q_clientes.Sql.Add('Select * from tbl_clientes where fim_contrato <> ' ' and ( data >= :DataIni and Data <= :DataFim ); begin dm.q_clientes.Close; dm.q_clientes.Filter:='Data >= ''' +DateToStr(Date1.date)+ ''' and fim_contrato <= '''+DateToStr(Date2.Date) +''''; dm.q_clientes.Filtered:=True;//aqui uso 2 dateTimePicker ou 2 DateEdit dm.q_clientes.Open; end; Abraços.
-
Tem aqui tb uma forma de mostrar o seu resultado. procedure TBusca.SpeedButton2Click(Sender: TObject); begin if EdCodigo.text ='' then showmessage('Digitar Código...! ') else begin if EdCodigo.text <> DM.GeralCodigo.value then showmessage('Não tem esse Código Registado') else begin DM.Geral.Close; DM.Geral.Filter:='Codigo >= ''' + EdCodigo.text +''''; DM.Geral.Filtered:=True; DM.Geral.Open; FormDetalhe.show;//Onde você tem a descricao. end; end; end; Abraço ai pro brasil...
-
O que pode ter acontecido é que você instalou o BDE antes de ter instalado o D4...? se foi isso então eu sugueria que você desinstale o BDE apague todas as pastas criadas pela instalação do mesmo em C:\Borland ou se criou em C:\Arquivos de Programas e volte a instalar tudo junto com o instalador do D4,isto porque alguns instaladores da BDE que se encontram por ai instalan-se nestes directórios diferentes... para rodar aplicativos já desenvolvidos funcionam bem, mas para aceder a partir do Delphi não funcionan .!O directório tem que estar em C:\Programas\Borland\Common Files\BDE que é onde se encontra tb o Delphi C:\Programas\Borland\Delphi 4 Tente isso e depois diga algo Abraços
-
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Micheus,eu tenho relatórios diferentes,embora os dados estejam todos na mesma DB tanto a informação como o design de cada um deles é diferente não sei o que poderá ser feito mais...quando você fala '' criar as consultas dinamicamente e ajustar o relatório de modo a mostrar os dados conforme opção''. você podia dar-me um pequeno exemplo do que podia fazer? Abraços. -
(Resolvido) Trocar Cursores em Delphi
pergunta respondeu ao -= NemesiS =- de António44 em Delphi, Kylix
Colega tem aqui uma dica de como usar seus cursores animados. unit UnitLogin; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, jpeg, ExtCtrls,db, Buttons, DBCtrls, yupack, RXCtrls, Mylabel, RxGrdCpt; const MythNo =1; //aqui você declara o cursor, ou os cursores...(só o nome dos cursor sem .ani ) type TFrmLogin = class(TForm) iblnome: TLabel; iblsenha: TLabel; EdSenha: TEdit; PnlMensagem1: TPanel; SpeedButton1: TSpeedButton; SpeedButton2: TSpeedButton; EdNome: TComboBox; PnlMensagem: TLabel; Bevel1: TBevel; RxGradientCaption1: TRxGradientCaption; Image1: TImage; procedure BtnCancelarClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure EdNomeChange(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure EdSenhaKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } procedure CreateEdNomeList; end; var FrmLogin: TFrmLogin; implementation Para usar o cursor,meta ele no directório da Aplicação e use assim.;) procedure TFrmLogin.FormCreate(Sender: TObject); begin Screen.Cursors [MythNo] := LoadCursorFromFile ('MythNo.ani');//Aqui você chama o cursor ??? .ani. Screen.cursor:=MythNo; end; Espero que tenha ajudado você. :D Abraços -
Eder, configura o BDE, ;) simples e 100% eficaz. Abraços ai para o brasil :D
-
Tem aqui uma função que você pode adptar. unit Ext; interface function extenso (valor: real): string; implementation uses SysUtils, Dialogs; function extenso (valor: real): string; var Centavos, Centena, Milhar, Milhao, Texto, msg: string; const Unidades: array[1..9] of string = ('Um', 'Dois', 'Tres', 'Quatro', 'Cinco', 'Seis', 'Sete', 'Oito', 'Nove'); Dez: array[1..9] of string = ('Onze', 'Doze', 'Treze', 'Quatorze', 'Quinze', 'Dezesseis', 'Dezessete', 'Dezoito', 'Dezenove'); Dezenas: array[1..9] of string = ('Dez', 'Vinte', 'Trinta', 'Quarenta', 'Cinquenta', 'Sessenta', 'Setenta', 'Oitenta', 'Noventa'); Centenas: array[1..9] of string = ('Cento', 'Duzentos', 'Trezentos', 'Quatrocentos', 'Quinhentos', 'Seiscentos', 'Setecentos', 'Oitocentos', 'Novecentos'); function ifs(Expressao: Boolean; CasoVerdadeiro, CasoFalso: String): String; begin if Expressao then Result:=CasoVerdadeiro else Result:=CasoFalso; end; function MiniExtenso (trio: string): string; var Unidade, Dezena, Centena: string; begin Unidade:=''; Dezena:=''; Centena:=''; if (trio[2]='1') and (trio[3]<>'0') then begin Unidade:=Dez[strtoint(trio[3])]; Dezena:=''; end else begin if trio[2]<>'0' then Dezena:=Dezenas[strtoint(trio[2])]; if trio[3]<>'0' then Unidade:=Unidades[strtoint(trio[3])]; end; if (trio[1]='1') and (Unidade='') and (Dezena='') then Centena:='cem' else if trio[1]<>'0' then Centena:=Centenas[strtoint(trio[1])] else Centena:=''; Result:= Centena + ifs((Centena<>'') and ((Dezena<>'') or (Unidade<>'')), ' e ', '') + Dezena + ifs((Dezena<>'') and (Unidade<>''),' e ', '') + Unidade; end; begin if (valor>999999.99) or (valor<0) then begin msg:='O valor está fora do intervalo permitido.'; msg:=msg+'O número deve ser maior ou igual a zero e menor que 999.999,99.'; msg:=msg+' Se não for corrigido o número não será escrito por extenso.'; showmessage(msg); Result:=''; exit; end; if valor=0 then begin Result:=''; Exit; end; Texto:=formatfloat('000000.00',valor); Milhar:=MiniExtenso(Copy(Texto,1,3)); Centena:=MiniExtenso(Copy(Texto,4,3)); Centavos:=MiniExtenso('0'+Copy(Texto,8,2)); Result:=Milhar; if Milhar<>'' then if copy(texto,4,3)='000' then Result:=Result+' Mil Reais' else Result:=Result+' Mil, '; if (((copy(texto,4,2)='00') and (Milhar<>'') and (copy(texto,6,1)<>'0')) or (centavos='')) and (Centena<>'') then Result:=Result+' e '; if (Milhar+Centena <>'') then Result:=Result+Centena; if (Milhar='') and (copy(texto,4,3)='001') then Result:=Result+' Real' else if (copy(texto,4,3)<>'000') then Result:=Result+' Reais'; if Centavos='' then begin Result:=Result+'.'; Exit; end else begin if Milhar+Centena='' then Result:=Centavos else Result:=Result+', e '+Centavos; if (copy(texto,8,2)='01') and (Centavos<>'') then Result:=Result+' Centavo.' else Result:=Result+' Centavos.'; end; end; end.
-
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
E por fim a coisa deu certo... :D eu que já estava para desistir,mas graças a você Micheus acabou tudo dando certinho.O problema era mesmo na hora de extrair o ano da data no DateEdit...simples B) Mais uma vez obrigado e se você precisar de algo...que não seja programação.:D porque ai eu ainda sou muito fraquinho. Já agora que terminei o aplicativo,pergunto se você se importa que acrescente seu nome na Form ''Créditos'' você merece. Qualquer coisa disponha um Portugués ao seu dispor aqui. Abraços -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
WHERE extract(year from data) = extract(year from :DatReferencia) (com espaço antes do ":") eu usei assim e deu o mesmo erro ''Type mismatch in expression EDBEngineError'' eu usei ''date'' e deu erro ''invalid word keyword Token:date. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Eu usei assim e organiza o relatório por ano dá tudo de 2008 e o que tem de 2009. mostra tudo o que está gravado e organiza pelo ano. SELECT extract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T WHERE extract(year from data) = extract(year from data) Order by 1, 2, Clube,Escalao procedure TRelatorio.FlatSpeedButton5Click(Sender: TObject); begin With Report4 do begin Query1.Active := false; Query1.Prepare; Query1.Active := true; QuickRep1.preview; end; end; Mas se usar assim. SELECT extract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T WHERE extract(year from data) = extract(year from:Data) Order by 1, 2, Clube,Escalao procedure TRelatorio.FlatSpeedButton5Click(Sender: TObject); begin With Report3 do begin Query1.Active := false; Query1.Params[0].AsDate := Date1.Date; Query1.Prepare; Query1.Active := true; QuickRep1.preview; end; end; Gera um erro na execução do FlatSpeedButton5Click ''Type mismatch in expression EDBEngineError'' Aqui o parâmetro ''Query1.Params[0].AsDate := Date1.Date;'' que é um ''DateEdit'' eu pretendia selecionar o ano exemplo '' 2008'' e me mostrava só os registos feitos em 2008 dede Janeiro a dezembro..., se tivesse outra data de 2009 daria tudo só de 2009...só que no DateEdit ele data 03-01-2009 é daqui que extraimos o ano ''extract(year from data) = extract(year from:Data) '' não é verdade? Abraço Micheus. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
:( Olhe Micheus eu vou mesmo desistir desta consulta por ano...não tou conseguindo fazer isto funcionar,fico com a consulta entre datas que está funcionando bem. Já tentei de varias maneiras e só gera erro...e não estou conseguindo ver onde é ? Obrigado por ter tentado ajudar-me. Abraços -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Eu mudei o parâmetro Data,mas eu terei que ter sempre uma data...''Query1.Params[0].AsDate := Date1.Date;'' ou não é preciso? O SQL está directo no componente Tquery1. SQL SELECTextract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T WHERE extract(year from data) = extract(year from date) Order by 1, 2, Clube,Escalao procedure TRelatorio.FlatSpeedButton5Click(Sender: TObject); begin With Report4 do begin Query1.Active := false; Query1.Params[0].AsDate := Date1.Date; Query1.Prepare; Query1.Active := true; QuickRep1.preview; end; end; Continua a não dar. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
procedure TRelatorio.FlatSpeedButton6Click(Sender: TObject); begin botoes:=Tbotoes.Create(self); botoes.show; end; eu uso uma form para escolher o tipo de Report que se quer. E tambem uso uma TQuerry para cada Report. Esta é que tá dando erro... SQL SELECTextract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T WHERE extract(year from data) = extract(year from :Data) Order by 1, 2, Clube,Escalao Dá erro ''List index out of bounds(1). Dá tb a variabe D,M,A ''is declared bat never used in EndOfTheMonth''. ...não é erro perdoe-me sou inesperiente. :wacko: FlatSpeedButton4Click é para ver um relatório mas mas não é entre datas. posso remover elas é isso? -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
unit UnitRelatorio; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, TFlatSpeedButtonUnit, ExtCtrls, yupack, Grids, DBGrids, ComCtrls,Quickrpt, StdCtrls, Mask, ToolEdit, TFlatComboBoxUnit; type TRelatorio = class(TForm) YusoftWallpaper1: TYusoftWallpaper; Panel1: TPanel; FlatSpeedButton1: TFlatSpeedButton; FlatSpeedButton2: TFlatSpeedButton; Date1: TDateEdit; Date2: TDateEdit; Bevel1: TBevel; FlatSpeedButton3: TFlatSpeedButton; FlatSpeedButton4: TFlatSpeedButton; FlatSpeedButton5: TFlatSpeedButton; FlatSpeedButton6: TFlatSpeedButton; procedure FlatSpeedButton1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FlatSpeedButton2Click(Sender: TObject); procedure FlatSpeedButton3Click(Sender: TObject); procedure FlatSpeedButton4Click(Sender: TObject); procedure FlatSpeedButton5Click(Sender: TObject); procedure FlatSpeedButton6Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Relatorio: TRelatorio; implementation uses Unit1,UnitDM, UnitReport1, Manygrp, Unit3, UnitReport4, UnitBotoes; {$R *.DFM} function StartOfTheMonth(aDate :TDateTime) :TDateTime; var D, M, A :Word; begin DecodeDate(aDate, A, M, D); Result := EncodeDate(A,M, 1); end; function EndOfTheMonth(aDate :TDateTime) :TDateTime; var D, M, A :Word; begin Result := StartOfTheMonth(aDate) +32; // forçamos uma data no mês seguinte Result := StartOfTheMonth(Result) -1; // pegamos o último dia do mês end; procedure TRelatorio.FlatSpeedButton1Click(Sender: TObject); begin Close; end; procedure TRelatorio.FormCreate(Sender: TObject); begin Form1.Enabled:=False; DecimalSeparator:='.'; Date1.Text:=(Datetostr(Date)); Date2.Text:=(Datetostr(Date)); end; procedure TRelatorio.FormClose(Sender: TObject; var Action: TCloseAction); begin Form1.Enabled:=true; release; end; procedure TRelatorio.FlatSpeedButton2Click(Sender: TObject); begin With ManyGrpForm do begin RepQuery.Active := false; RepQuery.Params[0].AsDate := Date1.Date; RepQuery.Params[1].AsDate := Date2.Date; RepQuery.Prepare; RepQuery.Active := true; QuickRep.preview; end; end; procedure TRelatorio.FlatSpeedButton3Click(Sender: TObject); begin With Report3 do begin Query1.Active := false; Query1.Params[0].AsDate := Date1.Date;; Query1.Params[1].AsDate := Date2.Date;; Query1.Prepare; Query1.Active := true; QuickRep1.preview; end; end; procedure TRelatorio.FlatSpeedButton4Click(Sender: TObject); begin With Report1 do begin Query1.Active:=false; Query1.Prepare; Query1.Active:=true; Preview; end; end; procedure TRelatorio.FlatSpeedButton5Click(Sender: TObject); begin With Report4 do begin Query1.Active := false; Query1.Params[0].AsDate := StartOfTheMonth(Date1.Date); //eu uso aqui no Report4 Query1.Params[1].AsDate := EndOfTheMonth(Date1.Date); //Query1.Params[0].AsDate := Date1.Date; desabilitado //Query1.Params[1].AsDate := Date2.Date; Desabilitado Query1.Prepare; Query1.Active := true; QuickRep1.preview; end; end; procedure TRelatorio.FlatSpeedButton6Click(Sender: TObject); begin botoes:=Tbotoes.Create(self); botoes.show; end; end. Dá erro ''List index out of bounds(1) Voc~e entendeu a ideia é filtrar por ano dar tudo de 2008 sem meter datas. Da tb as variabe D,M,A is declared bat never used in EndOfTheMonth. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Select extract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T where data between :DataIni and :DataFim Order by 1, 2, Clube,Escalao Assim dá certinho mas usando os dois dateTimePicker entre datas. SQL Select extract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T extract(year from data) = extract(year from :Data) Order by 1, 2, NomeClube, NomeEscalão Order by 1, 2, Clube,Escalao Micheus eu uso o velhinho D3 não tem essa unit DateUtils, assim dá erro ''Invalid use of Keyword. Token: extract(year abraço. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Select extract(year from data) as Ano, extract(month from data) as Mes, T.* from Agenda T where data between :DataIni and :DataFim Order by 1, 2, Clube,Escalao Usando assim este SQL tenho que usar dois DateTimePicker. O que eu pergunto é o que posso alterar para que em lugar da busca ser feita entre datas ser feita por ano,como extrair só o ano da DataIni ?? e isto terá que ser alterado...where data between DataIni and :DataFim. Eu quero um formulário que consulte o ano sem ter que meter a dataIni em 01-01-2008 e DataFim 31-12-2008 bastava que o dataIni tivesse em qualquer data de 2008 só para extrair o ano. Abraço a todos e bom ano. -
Que recebam muita paz,saude,e amor...Obrigado aqueles que me tem ajudado aqui em especial para o Micheus e o Jhonas e tb para todos os colegas que visitam este espectacular Fórum,que eu duvido que se encontre melhor em toda a Web. Abraço. :rolleyes:
-
Preview com mais de uma página, apresenta um erro ?
pergunta respondeu ao António44 de António44 em Delphi, Kylix
A variavel tá dando erros : 1 nesta linha const User: Boolean = True): Boolean; 1 nesta linha with TRegistry.Create do 1 nesta linha Result := OpenKey(REG_USER_LOCATION, True) 1 nesta linha RootKey := HKEY_LOCAL_MACHINE; 1 nesta linha WriteString(Name, Value); { Write Registry for Global Environment } 1 nesta linha Free; -
Preview com mais de uma página, apresenta um erro ?
pergunta respondeu ao António44 de António44 em Delphi, Kylix
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, ComCtrls, Buttons, StdCtrls; type TForm1 = class(TForm) DBNavigator1: TDBNavigator; DBGrid1: TDBGrid; SpeedButton1: TSpeedButton; Edit1: TEdit; DateTimePicker1: TDateTimePicker; DateTimePicker2: TDateTimePicker; DataSource1: TDataSource; Tabela: TTable; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; SpeedButton2: TSpeedButton; TabelaData: TDateField; TabelaHorainicial: TStringField; TabelaHorafinal: TStringField; TabelaClube: TStringField; TabelaEscalao: TStringField; TabelaAtletas: TFloatField; TabelaEspaco: TStringField; TabelaBalneario: TFloatField; TabelaUtilizacao: TFloatField; TabelaValor: TFloatField; TabelaNota: TMemoField; TabelaDescr: TStringField; SpeedButton3: TSpeedButton; procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses Unit2, Manygrp, Unit3; {$R *.DFM} function SetGlobalEnvironment(const Name, Value: string; const User: Boolean = True): Boolean; resourcestring REG_MACHINE_LOCATION = 'System\CurrentControlSet\Control\Session Manager\Environment'; REG_USER_LOCATION = 'Environment'; begin with TRegistry.Create do try if User then { User Environment Variable } Result := OpenKey(REG_USER_LOCATION, True) else { System Environment Variable } begin RootKey := HKEY_LOCAL_MACHINE; Result := OpenKey(REG_MACHINE_LOCATION, True); end; if Result then begin WriteString(Name, Value); { Write Registry for Global Environment } { Update Current Process Environment Variable } SetEnvironmentVariable(PChar(Name), PChar(Value)); { Send Message To All Top Window for Refresh } SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, Integer(PChar('Environment'))); end; finally Free; end; end; { SetGlobalEnvironment } procedure TForm1.SpeedButton1Click(Sender: TObject); begin Form2.Query1.Active := false; Form2.Query1.Params[0].AsDate := DateTimePicker1.Date; Form2.Query1.Params[1].AsDate := DateTimePicker2.Date; Form2.Query1.Prepare; Form2.Query1.Active := true; Form2.QuickRep1.preview; end; procedure TForm1.SpeedButton2Click(Sender: TObject); begin ManyGrpForm.RepQuery.Active := false; ManyGrpForm.RepQuery.Params[0].AsDate := DateTimePicker1.Date; ManyGrpForm.RepQuery.Params[1].AsDate := DateTimePicker2.Date; ManyGrpForm.RepQuery.Prepare; ManyGrpForm.RepQuery.Active := true; ManyGrpForm.QuickRep.preview; end; procedure TForm1.SpeedButton3Click(Sender: TObject); begin Form3.Query1.Active := false; Form3.Query1.Params[0].AsDate := DateTimePicker1.Date; Form3.Query1.Params[1].AsDate := DateTimePicker2.Date; Form3.Query1.Prepare; Form3.Query1.Active := true; Form3.QuickRep1.preview; end; procedure TForm1.FormCreate(Sender: TObject); begin CreateDir('C:\Temp'); SetGlobalEnvironment('TMP', 'C:\Temp'); end; end. Ocolega Churc sugere isto:? Eu não sei onde estão os sources do quickreport no delphi3 :rolleyes: ..??? eu tentei tb usar a variavel acima mas não sei como usa-la...falta qualquer coisa??? -
Preview com mais de uma página, apresenta um erro da Classe: EFCreateError com a seguinte mensagem: Cannot Create file [][][] alguém pode ajudar-me?? Agradeço. Abraço.
-
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Estive aqui a fazer uns testes e reparei que no meu Micro funciona tudo lindamente sem erro tenho 1.6GHz e 500 MB Ram mas o CPU vai até aos 97% e fica ali até que fecho o Preview do Report e no outro Micro onde dá erro tem 3.2Ghz e 256 MB Ram acontesse que roda o XP e eu estive a ver na memória disponivel ele tem apenas de 233696 sobra 50896 ou seja 50 MB Ram livres...será isto que faz com que ao criar o Report gera erros e bloqueia o programa...? o Report Preview é carregado na memória quando é chamado..? tenhgo duvida aqui se você Micheus me souber dizer qualquer coisa sobre isto eu agradeço.Abraços. Problema tá resolvido olhei com mais carinho e retirei o TQRBand com BandType=rbDetail assim fica sem espaço em branco e o que preçiso mesmo é só a contagem. Obrigado Micheus. Abraço. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Eu dei a olhada com carinho... se não fosse você estaria olhando o resto da vida...obrigado. E deu certo sumou os valores todos bem, o valor da media não? QRLabel1.Caption := FormatFloat('0.00', QRExpr1.Value.dblResult/QRExpr2.Value.dblResult);o valor é 1.00. Usei QRExpr2.Expression(AVERAGE) e tá dando a Média,não sei se quando o numero de registos aumentar ele fica bem...espero que sim. e tb tenho outro problema quando a Report passa das 2 paginas gera um erro (Cannot Create file...Metafile is not valid)...? se voltar a aceder ao Report programa bloqueia, que chatice isto das reports :wacko: uso este code no botão da report será que está certo ou pode ser mais elaborado ? procedure TForm1.FlatSpeedButton19Click(Sender: TObject); begin with Report2 do begin Query1.Active := false; Query1.Params[0].AsDate := Form1.DateEdit1.Date; Query1.Params[1].AsDate := Form1.DateEdit2.Date; Query1.Prepare; Query1.Active := true; QuickRep1.preview; end; end; Aqui tb no - TQRGroup (3º) com a propriedade Expression contendo o campo NomeEscalão se tiver só um registo ele fica com um espaço pequeno mas se tiver 20 e por ai fora ele vai alongando o espaço...? tem maneira de manter sempre com o mesmo espaço mesmo que o numero de registos aumentem? é que assim se tiver 100 ou 1000 registos de um escalão fica um espaço em branco enorme eu já olhei com carinho...e nada . Abraço. -
(Resolvido) Filtrar dados de tabela paradox e visualizar em uma report
pergunta respondeu ao António44 de António44 em Delphi, Kylix
Algum amigo pode ajudar ai ? É que não estou conseguindo resolver isto... :rolleyes: