Ir para conteúdo
Fórum Script Brasil

robinhocne

Membros
  • Total de itens

    854
  • Registro em

  • Última visita

Tudo que robinhocne postou

  1. um outro detalhe é que informei: order by A.NomCli, A.Parcela e não está ordenando por parcela, sai tudo mistura, o cliente sai na ordenação....
  2. Micheus, realmente vocês está certo sobre o or o correto é and, sobre o "if SQLCondicao" eu já deixei preparado o código pois vou incluir mais tipo de filtro. Sobre o agrupamento do relatório ficou show de bola, do jeito que eu queria, agora só não estou conseguindo fazer que para cada agrupador(cliente) apareça um "subtotal", pois um "total" eu já coloquei em um rbSummary e deu certo, para o subtotal eu havia colocado uma child, mas para cada registro foi somando um resultado (legal), mas não o que quero...testei entre outras BandType e não consegui, você poderia me ajudar ? Obrigado.
  3. É esse código mesmo Micheus. Sim, a minha tabela Contas_Receber tem o codigo do cliente e nome também, além das informações da parcela, valor, vencimento, recebido, receber...etc.
  4. Micheus, estou quase conseguindo de acordo com suas dicas..... Eu consulto o relatorio dessa maneira: procedure TFrmLisRelCtaReceber.ConsultaRelatorio; begin SQLCondicao := ''; SQLInstCli := 'Select A.CodCli, A.NomCli From Contas_Receber A'; SQLInstrucao := 'Select A.CodCli, A.Parcela, A.Vencimento, A.Receber, A.Recebido, A.Valor From Contas_Receber A'; {Faz o filtro de data de vencimento ...} if ((TxtDtVenIni.Text <> ' / / ') or (TxtDtVenFin.Text <> ' / / ')) then begin if SQLCondicao = '' then begin SQLCondicao := ' where A.Vencimento Between (' +#39+ FormatDateTime('dd.mm.yyyy', TxtDtVenIni.Date) + #39 + ') and ' + '(' +#39+ FormatDateTime('dd.mm.yyyy', TxtDtVenFin.Date) + #39 + ') '; end else begin SQLCondicao := ' and A.Vencimento Between (' +#39+ FormatDateTime('dd.mm.yyyy', TxtDtVenIni.Date) + #39 + ') and ' + '(' +#39+ FormatDateTime('dd.mm.yyyy', TxtDtVenFin.Date) + #39 + ') '; end; end; {... Faz o filtro de data de vencimento} {Busca os Clientes ...} SQLInstCli := SQLInstCli + SQLCondicao + ' and A.SituBaixado = '+#39+'N'+#39+' group by A.CodCli, A.NomCli'; with QryRec do begin close; sql.Clear; sql.Add(SQLInstCli); open; end; TblCli.Close; TblCli.Active := true; while not QryRec.Eof do begin with TblCli do begin insert; TblCliCliente.AsString := QryRec.FieldByName('CodCli').AsString; TblCliNome.AsString := QryRec.FieldByName('NomCli').AsString; post; end; QryRec.Next; end; Memo1.Text := SQLInstCli; TblCli.SortOnFields('Cliente', true, false); {... Busca os Clientes} {Busca as Parcelas ...} SQLInstrucao := SQLInstrucao + SQLCondicao + ' and A.SituBaixado = '+#39+'N'+#39; with QryRec do begin close; sql.Clear; sql.Add(SQLInstrucao); open; end; {... Busca as Parcelas} end; na tabela temporária TblCli eu coloquei o código do cliente e nome do cliente e na Query QryRec está as parcelas, mas ao listar no relatório está saindo misturando as parcelas dos clientes, na imagem abaixo veja que a parcela do Robson saiu para a Deise e vice versa. Coloquei assim: Imagem?
  5. Sim , eu tinha verificado algo parecido, mas era para só ter 2 tipos de detalhes, esse teria que ser por quebra e detalhando e não estou conseguindo fazer.
  6. Boa tarde a todos, Sempre tenho dificuldades em relatórios, aparentemente algo simples, mas não consigo: Estou tentando fazer um relatório com quebra por cliente e os detalhes das parcelas deles; Eu utilizo o Delphi 7, BD Firebird e para fazer relatório o Quick Report 4.05. No relatório eu preciso mostrar assim: Para ligar o BD com o sistema eu utilizo um IBTable, IBTransaction e IBQuery.para consultar o Relatório eu utilizo uma IBQuery1 que está ligado ao IBTable: Eu fiz assim: O DataSet do relatório está ligado ao IBQuery1 e os seus respectivos campos; mas ai sai só um cliente e as parcelas dele não tem nada haver....já vi o Demo do Quick, tentei segui mas não consegui..... Uma ajuda ai......
  7. valeu Micheus eu não tinha achado direito.....tinha coloca na pesquisa como firebird base de dados mercados.....
  8. Alguém sabe onde posso encontrar uma base de dados de supermercados ? pesquise no google e não achei nada....
  9. Obrigado Jhonas, deu certinho, isso mesmo que eu precisava.....
  10. Perfeito, isso mesmo que precisava Jhonas, melhor do que pausar o loop, obrigado pela ajuda
  11. Estou fazendo um programinha que pega determinadas pastas minhas, ai compacta e manda para meu e-mail uma por uma, mas ai queria ver o seguinte.... estou gerando o backup assim: TblArq.First; while not TblArq.Eof do begin Data := FormatDateTime('dd-mm-yyyy hh-mm-ss', Now); NomeBack := 'BK-'+ TblArqPasta.AsString + '-' + Data; CamBackup := ChangeFileExt('C:\SisBackup\'+NomeBack,'.rar'); try WinExec(Pchar('C:\Program Files (x86)\WinRAR\WINRAR.EXE a -hp123mudar "'+CamBackup+'" "'+TblArqCaminho.AsString+'"'),sw_normal); except end; TblArq.Next; end; Mas ai eu queria ver assim, vamos supor que tenho na tabela temporária (TblArq) com umas 10 pastas para fazer o backup, então no loop vai passando uma por uma e compactando, mas eu queria que ao compactar a primeira o loop ficasse pausado e ai depois verificar se já gerou o backup e ai pula para o proximo. Tem como fazer isso ?
  12. Descobri porque estava dando o erro....que no Formulario eu tenho um DbGrid e nele vou gravando em um RxMemoryData os caminhos das pastas para a visualização e para relacionar o grid e a tabela eu utilizo um DataSource, quando coloco o RxMemoryData na Uses é incluida a unit DB, então quando está declarado ela dá conflito com essa função, para arrumar eu coloquei tudo em um DataModule para separar do formulario.
  13. Valre Jhonas otimas dicas......foi muito util...obrigado
  14. Eu tinha me confudido todo aqui, misturei, virou uma bagunça ai organizei tudo principalmente minha ideia e deu certo....estava fazendo errado mesmo, valeu pela ajuda Jhonas.
  15. uses SysUtils, FileCtrl; eu declarei, mas está dando erro de na FileCtrl
  16. Mas não compilou e acusou um erro: [Erro] FSisBackup.pas (278): tipos incompatíveis [Erro Fatal] SisBackup.dpr (9): Não foi possível compilar unidade usada 'FSisBackup.pas' e ao compilar fica setado no faArchive
  17. está dando vários erros: [Warning] FSisBackup.pas(67): Unit 'FileCtrl' is specific to a platform [Warning] FSisBackup.pas(112): For loop control variable must be simple local variable [Warning] FSisBackup.pas(276): Symbol 'faArchive' is specific to a platform [Warning] FSisBackup.pas(276): Symbol 'faHidden' is specific to a platform [Warning] FSisBackup.pas(277): Symbol 'faVolumeID' is specific to a platform [Warning] FSisBackup.pas(278): Symbol 'faSysFile' is specific to a platform [Error] FSisBackup.pas(278): Incompatible types [Fatal Error] SisBackup.dpr(9): Could not compile used unit 'FSisBackup.pas'
  18. tenho um arquivo txt que carrego em uma StringList, esse aquivo contém várias linhas Ex.: Então queria carregar isso em um DbGrid, mas cada ';' é um coluna então o resultado tem que ser assim: assim eu carrego apenas o nome da pasta e caminho: var Carac, CaracPos : Integer; Pastas : TStringList; {Extrai o nome da pasta ...} Carac := length(Pastas[a]); CaracPos := pos(';', Pastas[a]); {... Extrai o nome da pasta} with TblArq do begin insert; TblArqAquivo.AsString := Trim(copy(Pastas[a],1,CaracPos-1)); TblArqCaminhoArq.AsString := Trim(copy(Pastas[a],CaracPos + 1,Carac - CaracPos)); post; end; Como faço para copiar o tamanho e data ?
  19. Estou usando essa função para retornar o tamanho de um diretório: function DirSize(Dir:string):integer; {Retorna o tamanho de um diretório} var SearchRec : TSearchRec; Separator : string; DirBytes : integer; begin DirBytes := 0; if Copy(Dir,Length(Dir),1)='\' then begin Separator := ''; end else begin Separator := '\'; end; if FindFirst(Dir+Separator+'*.*',faAnyFile,SearchRec) = 0 then begin if FileExists(Dir+Separator+SearchRec.Name) then begin DirBytes := DirBytes + SearchRec.Size; {Memo1.Lines.Add(Dir+Separator+SearchRec.Name);} end else if DirectoryExists(Dir+Separator+SearchRec.Name) then begin if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin DirSize(Dir+Separator+SearchRec.Name); end; end; while FindNext(SearchRec) = 0 do begin if FileExists(Dir+Separator+SearchRec.Name) then begin DirBytes := DirBytes + SearchRec.Size; {Memo1.Lines.Add(Dir+Separator+SearchRec.Name);} end else if DirectoryExists(Dir+Separator+SearchRec.Name) then begin if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin DirSize(Dir+Separator+SearchRec.Name); end; end; end; end; FindClose(SearchRec); end; em um ShellTreeView eu listo as pastas e ao clica duas vezes eu jogo o Nome da pasta e caminho para uma tabela temporária e apresento em um Dbgrid: procedure TFrmConfPastas.TrePasDblClick(Sender: TObject); begin if not TblArq.Active then TblArq.Active := true; TblArq.Insert; TblArqPasta.AsString := TrePas.Selected.Text; TblArqCaminho.AsString := TrePas.Path; TblArqTamanho.AsCurrency := DirSize(TrePas.Path); TblArq.Post; end; Mas no campo TblArqTamanho sempre traz o mesmo valor da primeira que eu cliquei e acho que também o resultado retornado não está certo.... alguém pode me ajudar ?
  20. resolvido...... Fonte function isEnviarEmail(de,para,cc,assunto,smtp,porta,usuario,senha,corpo : String) : Boolean; var IdMessage1: TIdMessage; IdSMTP1 : TIdSMTP; //Declarar na uses IdMessage, IdSMTP; begin IdMessage1 := TIdMessage.Create(nil); IdSMTP1 := TIdSMTP.Create(nil); //Pegar parametros do .ini se não for informado. if (Length(de) = 0) then begin de := dtybel@dominio.com.br; para := dtybel@dominio.com.br; smtp := smtp.dominio.com.br; usuario := dtybel@dominio.com.br; //Aqui é o erro, se deixar sem o @dominio.com.br senha := "123456" porta := 25; end; //Configuração do IdMessage (dados da mensagem) //e-mail do remetente IdMessage1.From.Address := de; //e-mail do destinatário IdMessage1.Recipients.EMailAddresses := para; //if ( para <IdMessage1> 0) then //IdMessage1.CCList.EMailAddresses := cc; IdMessage1.Body.Clear; IdMessage1.Subject := assunto; //Assunto IdMessage1.Body.Add('==========================================================='); //Corpo da mensagem IdMessage1.Body.Add( corpo ); //Corpo da mensagem IdMessage1.Body.Add('==========================================================='); //Corpo da mensagem //Configuração do IdSMTP //Configurações remente IdSMTP1.AuthenticationType := atLogin; IdSMTP1.Host := smtp; IdSMTP1.Username := usuario; IdSMTP1.Password := DecryptSTR( senha ,1,2,3); IdSMTP1.Port := StrToInt( porta ); IdSMTP1.Connect; //Estabelece a conexão IdSMTP1.Authenticate; //Faz a autenticação try IdSMTP1.Send(IdMessage1); //Envia a mensagem Result := True; except on e:exception do begin Result := False; Application.MessageBox(Pchar(e.Message), Pchar('Erro.'), mb_ok+mb_iconerror ); end; end; IdSMTP1.Disconnect; end;
  21. Pessoal estou com um erro aqui ao tentar enviar: IdMessage1.Recipients.EMailAddresses := edtPara.Text; //email destinatario IdMessage1.Subject := EdtAssunto.Text;//assunto IdMessage1.Body := mmoMsg.Lines; // Mensagem que será enviada IdMessage1.From.Address := edtUsuario.Text; // Email do Remetente IdMessage1.From.Name := edtOrigem.Text; // Nome do Remetente, que aparecerá quando chegar. IdSMTP1.Connect; try IdSMTP1.Send(IdMessage1); finally IdSMTP1.Disconnect; Application.ProcessMessages; end; Application.MessageBox('Email Enviado!', 'Confirmãção', MB_ICONINFORMATION + MB_OK); o erro que retorna é : O que pode ser ?
  22. não deu certo também, mas eu fiz um POG aqui para fazer a verificação de cada célula
  23. hum....por isso não conseguia achar no meu.....mas o estranho é uma coisa tão importante de saber o horário da celula selecionada....mas vou continuar procurando antes de fazer POG.
×
×
  • Criar Novo...