Ir para conteúdo
Fórum Script Brasil

António44

Membros
  • Total de itens

    168
  • Registro em

  • Última visita

Tudo que António44 postou

  1. ;) Obrigado Micheus eu posso esperar que você poste ai o código,muito obrigado. Abraços pra você amigo.
  2. 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;
  3. 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.
  4. 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...
  5. 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
  6. 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.
  7. 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
  8. Eder, configura o BDE, ;) simples e 100% eficaz. Abraços ai para o brasil :D
  9. 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.
  10. 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
  11. 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.
  12. 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.
  13. :( 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
  14. 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.
  15. 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?
  16. 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.
  17. 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.
  18. 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.
  19. 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:
  20. 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;
  21. 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???
  22. 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.
  23. 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.
  24. 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.
  25. Algum amigo pode ajudar ai ? É que não estou conseguindo resolver isto... :rolleyes:
×
×
  • Criar Novo...