Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. Bem simples: Onde tem na select ( questao_um , questao_dois, questao_tres ... etc ) substitua por um valor e veja se o resultado será maior que 90 caso contrário, repense no seu calculo. abraço
  2. Isso depende da versão do mysql que roda local e o que está no servidor abraço
  3. migrar mysql 4 para mydql 5 do Mydql 4 para o Mysql 5 ? qual é o certo ? Se for do Mysql 4 para o Mysql 5 , não muda nada.
  4. Tente isso fdQryFiltro.Close; fdQryFiltro.SQL.Clear; fdQryFiltro.sql.Add('Select * from clientes join grupo on grupo.id_grupo = clientes.id_grupo join subgrupo on subgrupo.id_subgrupo = clientes.id_subgrupo join fpagamento on fpagamento.id_fpagamento = clientes.id_fpagamento join conta on conta.id_conta = clientes.id_conta'); fdQryFiltro.SQL.Add('WHERE (DATA >= '''+edtData1.Date+''' AND DATA <= '''+edtData2.Date+''' and 1=1 '); If edtData2.Date < edtData1.Date Then ShowMessage('Intervalo de datas inválido, a data inicial é maior que a data final!'); Obs: Coloque as datas no formato string no filtro abraço
  5. download do componente http://www.planetadelphi.com.br/download/4854/componente/hint-estilo-balao Obs: com alguma criatividade e conhecimento , vai ficar como voce está querendo outros exemplos de chat em delphi https://www.google.com.br/search?source=hp&ei=rTzZXd3uGMnQ5OUPiay3kA0&q=delphi+chat+component&o que=chat+delphi&gs_l=psy-ab.1.6.0j0i22i30l9.1522.2832..7268...0.0..0.278.2112.0j9j3......0....1..gws-wiz.....0..0i131.yzsE10NYZpE abraço
  6. Veja se esse exemplo te ajuda // Programa que calcula a idade média de um grupo de pessoas. // A finalização da entrada de números é dada por um -1 int soma, quantidade, idade; float media; soma = 0; quantidade = 0; do { printf("Idade da pessoa %d. (tecle -1 se quiser encerrar).\n", quantidade+1); scanf("%d", &idade); if (idade >=0) { soma = soma + idade; quantidade = quantidade + 1; } } while (idade != -1); // Faz o calculo da media de idade if (quantidade > 0) { media = (float) soma / quantidade; printf("A media de idade das %d pessoas é: %5.2f", quantidade, media); } else printf("Nenhum dado foi informado."); abraço
  7. if dm.CDS_LIVROS.Locate('ID_LIVRO',dm.CDS_RESERVA.FieldByName('TOMBO_LIVRO').AsInteger,[]) then // livro escolhido begin if dm.CDS_RESERVA.FieldByName('DT_RESERVA').AsDateTime =Strtodate(dbedit5.Text) then // verifica se as datas são iguais begin messagedlg('Livro reservado nesta data, escolha outra data!',mtInformation,[mbok],0); DBLookupComboBox2.SetFocus; end else begin falso(); tratabotoes(); dm.CDS_RESERVA.Post; dm.CDS_LIVROS.Edit; dm.CDS_LIVROS.FieldByName('STATUS_LIVRO').AsString:=('RESERVADO'); DM.CDS_LIVROS.Refresh; messagedlg('Registro inserido com sucesso!',mtInformation,[mbok],0); if messagedlg('Deseja imprimir o recibo?',MtConfirmation,[mbYes,mbNo],0)=mrYes then begin dm.recibo_reserva.ShowReport; end else abort; end; end; Obs: Se não existirem cópias do mesmo livro está correto. Mas se tiver mais cópias do mesmo livro, então voce não pode usar dessa maneira, pois o comando Locate sempre vai encontrar a primeira ocorrencia ( nome do livro ) nos registros da tabela. Porem vale lembrar que o comando Locate ( em caso de tabelas muitos grandes ) não é aconselhavel usar, pois voce terá perda de performance ( tempo ) na localização do registro na tabela. Nesse caso, prefira usar o comando Select dentro de um componente Query. abraço
  8. voce não informou qual é o banco de dados que está usando. Se for o MYSQL o campo Data deve ser Date e não DateTime dm.CDS_RESERVA.FieldByName('DT_RESERVA').AsDateTime =Strtodate(dbedit5.Text) Me expressei mal.... o comando acima está correto, voce só não pode definir o campo da tabela como DateTime e sim Date ... entendeu ? OBS: quando vode alterar o campo de sua tabela, voce deve apagar o campo do object inspector e coloca-lo novamente no componente ClientDataSet ou na Query ou no Table abraço
  9. dm.CDS_RESERVA.FieldByName('DT_RESERVA').AsDateTime =Strtodate(dbedit5.Text) then // verifica se as datas são iguais lembre-se que AsDateTime testa a data e a hora .... se estiverem diferentes no segundo já não são iguais. então prefira usar somente AsDate ( ou seja use somente o campo data ) defina o campo da tabela como Date somente abraço
  10. Basta testar a data prevista na tabela só preciso saber qual o banco de dados voce esta usando e a versão do seu delphi abraço
  11. ok ... vi que a sua dúvida já foi resolvida http://www.activedelphi.com.br/forum/viewtopic.php?t=96177&sid=179d8c4032a632ad352571c0c60b8d86 abraço
  12. Pelo que eu entendi, quando voce clica no botão, são criados no form 6 Timages dinamicamente, e voce quando clicar em algum TImage, quer que apareça uma mensagem referente a esse TImage ... é isso ? o nome das imagens seriam : image0, image1... image6 ( isso todas as vezes que voce clicar nesse botão ) se as imagens forem sempre as mesmas e carregadas sempre no mesmo TImage, não precisa nem usar matriz. serão diferentes todas as vezes que voce clicar no botão ? Se forem, voce não pode atribuir um nome fixo ao TImage, mas teria que carregar o TImage com o nome da foto ( imagem ) e assim fazer a referencia ao nome dessa imagem. assim como voce criou um evento dinamico para os TImages voce tambem pode criar um evento dinamico para o Onclick como é que voce quer que isso funcione ? Veja nesses links, alguns exemplos que voce pode usar https://forum.imasters.com.br/topic/212535-evento-onclick-em-imagem-criada-dinamicamente/ https://www.experts-exchange.com/questions/23448044/TForm-Create-onClick-TImage-TButton-Dynamically-created-form-with-buttons-and-events.html https://www.experts-exchange.com/questions/27313699/How-to-create-a-dynamic-event-handlers-for-components-created-at-runtime.html abraço
  13. Bom, eu sei que através de configurações do servidor é possivel aumentar o tamanho do upload. Verifique junto a empresa, se a API está configurada com essa limitação abraço
  14. Infelizmente o servidor para onde estou enviando as informações só aceita JSON. Esse servidor não tem um WebService ? Esse servidor não tem o MYSQL nativo ? Se sim, voce pode fazer o upload para o MYSQL sem usar o JSON
  15. Testei o seu código, o erro é que não encontra a biblioteca SSL ( pois não tenho ela instalada ) voce consegue enviar o arquivo sem usar o JSON ? OBS: Em um dos links que te passei, para contornar isso, o arquivo foi dividido e depois enviado ( tem um exemplo lá ). abraço
  16. experimenta dessa maneira var Resposta: String; fsParams: TFileStream; begin fsParams := TFileStream.Create('c:\temp\jason.txt', fmOpenRead or fmShareDenyNone); Handler := TIdSSLIOHandlerSocketOpenSSL.Create; JsonStreamRetorno := TStringStream.Create(''); HTTPClient := TidHTTP.Create; HTTPClient.Request.Clear; HTTPClient.Request.ContentType := 'application/json'; HTTPClient.ProtocolVersion := pv1_0; HTTPClient.Request.Accept := '*/*'; HTTPClient.Request.UserAgent := 'Mozilla/3.0 (compatible; Indy Library)'; HTTPClient.Request.AcceptEncoding := 'gzip, deflate'; HTTPClient.Request.Connection := 'keep-alive'; HTTPClient.Request.CacheControl := 'no-cache'; HTTPClient.Request.ContentEncoding := 'utf-8'; HTTPClient.IOHandler := Handler; Handler.SendBufferSize := 250000; JSonRet := TlkJSONobject.Create; //AssignFile(myFile, 'c:\temp\jason.txt'); //Reset(myFile); //myFileSize := FileSize(myFile); //HTTPClient.Request.ContentLength := MyFileSize; //CloseFile(myFile); Resposta := HTTPClient.post('https://api.emacro.com.br/fotos/criar',fsParams); ShowMessage(Resposta); JSonRet := TlkJSON.ParseText(Resposta) as TlkJSONobject; Memo2.Lines.Add(GenerateReadableText(JSonRet,i)); end; abraço
  17. Qual é a configuração do TidHTTP ? Voce experimentou mudar a configuração padrão da propriedade SendBufferSize de 32768 para 250000 ? O ultimo link que te passei, são informações sobre esse erro usando o JSON e como corrigi-lo abraço
  18. Erro 413: Um erro de solicitação 413 ocorre quando uma solicitação ( upload ) feita de um cliente é muito grande ( Tamanho ) para ser processada pelo servidor da web. Possiveis soluções: https://www.codeproject.com/Questions/882577/HTTP-Request-Entity-Too-Large https://www.hostinger.com.br/tutoriais/como-corrigir-erro-413/ https://www.codeproject.com/Articles/43272/Uploading-Large-Files-Through-Web-Service https://www.google.com.br/search?ei=bMWlXbfVOLWV5OUPqaa04Aw&q=http+1.1+413+request+entity+too+large+json&o que=HTTP%2F1.1+413+Request+Entity+Too+Large+json&gs_l=psy-ab.1.0.33i22i29i30.684762.685410..688098...0.2..0.326.1168.2-3j1......0....1..gws-wiz.......0i71.01BOPcfh_Eg abraço
  19. Não fiz nada parecido, no entanto posso te passar os links onde voce pode pesquisar mais a respeito do assunto: https://www.google.com.br/search?ei=n8mfXbWwKKWe_Qalu7_QCQ&q=enviar+sms+delphi+7&o que=enviar+sms+delphi+&gs_l=psy-ab.1.0.0l2j0i22i30l8.305818.306718..312052...0.2..0.264.1516.0j1j6......0....1..gws-wiz.......0i71.Va8gUZaSX7M https://www.google.com.br/search?source=hp&ei=i8ufXY65Jfuy5OUPzeu-qA4&q=www.activexperts.com%2Factivsms%2Fhowto%2Fhttp%2Fdelphi%2F&o que=www.activexperts.com%2Factivsms%2Fhowto%2Fhttp%2Fdelphi%2F&gs_l=psy-ab.3...1570.1570..2152...0.0..0.230.230.2-1......0....2j1..gws-wiz.S_Y0vPhk_Qk&ved=0ahUKEwjOquy8-JLlAhV7GbkGHc21D-UQ4dUDCAU&uact=5 https://www.google.com.br/search?source=hp&ei=a8ufXf-UE92x5OUPkP2N2Ac&q=www.zenvia.com.br%2Fdesenvolvedores%2Ftutoriais-e-biblioteca%2Fintegracao-delphi-para-envio-de-sms%2F&o que=www.zenvia.com.br%2Fdesenvolvedores%2Ftutoriais-e-biblioteca%2Fintegracao-delphi-para-envio-de-sms%2F&gs_l=psy-ab.3...1356.1356..1988...0.0..0.236.236.2-1......0....2j1..gws-wiz.....0.y6YzSokk5vA&ved=0ahUKEwi_9rit-JLlAhXdGLkGHZB-A3sQ4dUDCAU&uact=5 abraço
  20. A solução do erro está nesse link ( ingles ) faça a tradução https://tmssoftware.com/site/forum/forum_posts.asp?TID=1461&PID=5054&SID=7a646z75-fzb6-79b3cz4b-eb3bc84f-5ea45z5b&title=platform-error-iw-component-pack-pro-script#5054 outros links https://www.google.com.br/search?ei=MuydXeKDE5K75OUP1cqSuAU&q=[Error+Error]+Invalid+PLATFORM+variable+"BPC".&o que=[Error+Error]+Invalid+PLATFORM+variable+"BPC".&gs_l=psy-ab.3..0i22i30.10978.10978..11818...0.0..0.244.244.2-1......0....1..gws-wiz.J4s25FVE1eA&ved=0ahUKEwji5Mqqr4_lAhWSHbkGHVWlBFcQ4dUDCAo&uact=5 abraço
  21. Voce pode fazer um teste simples no seu delphi com o quickreport abra um novo aplicativo coloque um botão e um QRCompositeReport no Form crie 3 quickreports ( QuickReport2, QuickReport3 e QuickReport4 coloque em cada um deles as seguintes bands: No QuickReport2: PageHeader Title ColumnHeader Detail Summary PageFooter e coloque um Label em cada uma das bands com os nomes de cada band QRLabel1.Caption := PageHeader; QRLabel2.Caption := Title; QRLabel3.Caption := ColumnHeader; QRLabel4.Caption := Detail; QRLabel5.Caption := Summary; QRLabel6.Caption := PageFooter; Faça a mesma coisa nos demais, mudando somente o final de cada Label No QuickReport3: QRLabel1.Caption := PageHeader 1; QRLabel2.Caption := Title 1; QRLabel3.Caption := ColumnHeader 1; QRLabel4.Caption := Detail 1; QRLabel5.Caption := Summary 1; QRLabel6.Caption := PageFooter 1; No QuickReport4: QRLabel1.Caption := PageHeader 2; QRLabel2.Caption := Title 2; QRLabel3.Caption := ColumnHeader 2; QRLabel4.Caption := Detail 2; QRLabel5.Caption := Summary 2; QRLabel6.Caption := PageFooter 2; No botão voce põe o codigo: uses Unit2, Unit3, Unit4; {$R *.dfm} procedure TForm1.QRCompositeReport1AddReports(Sender: TObject); begin /// JUNTAR REPORTS with QRCompositeReport1.Reports do begin Add(QuickReport2); Add(QuickReport3); Add(QuickReport4); end; end; procedure TForm1.Button1Click(Sender: TObject); begin /// MOSTRAR REPORTS JUNTOS QRCompositeReport1.Prepare; QRCompositeReport1.Preview; end; Execute o código , se o resultado for PageHeader Title Detail Summary Title 1 Detail 1 Summary 1 Title 2 Detail 2 Summary 2 PageFooter 2 OBS: veja que apareçe o PageHeader do QuickReport2 mas não o ColumnHeader dele, nem o PageHeader e o ColumnHeader do QuickReport3 e nem o PageHeader e o ColumnHeader do QuickReport4 Por fim aparece somente o PageFooter 2 que é do QuickReport4. Ou voce muda a estrutura do QuickReport em relação as Bands ou cria uma rotina para imprimir todos os relatórios de uma só vez. abraço
  22. Marquei seu post como resolvido, porque achei que voce não iria responder....( como acontece com tantos outros, onde eu repondo a dúvida e não tenho o retorno ou resposta ... isso indica para mim que a dúvida foi resolvida ... ok ? ) A ordem entre as bandas Title e PageHeader, eu não consigo mudar, ao alterar o tipo da QRBand, ele já deixa na ordem citada automaticamente. Não sei se é bug da sua versão, mas para contornar esse problema, voce deve tirar todas as bandas do quickreport, salva-lo sem as bandas e fecha-lo. Depois voce deve abrir novamente o quickreport, e incluir as bandas novamente uma a uma, começando pelo Title. Mas ai voce vai perguntar.... se eu fizer isso, nou vou perder todos os componentes que estão na banda.? Sim... por isso voce deve criar uma cópia de cada report. Abra o report Original ( que tem toda a codificação mas sem as bandas ) Depois inclua as bandas do report ( da cópia ) uma a uma, começando pelo Title Refaça os links das procedures que forem necessários e depois salve o report. OBS: Se voce tentar mudar a posição das bandas somente pelas proriedades do objeto, não vai dar muito certo. abraço
  23. ok... esqueci de perguntar, qual é a versão do seu QuickReport ? estou usando a versão 5.02 ... fiz um teste aqui com reports que tinham as mesmas bandas, e funcionou corretamente. A única coisa que está diferente do seu, é que o meu report começa com a banda Title e depois as outras. abraço
  24. exemplo: Os 2 reports tem todas as bandas que voce mencionou procedure TForm1.QRCompositeReport1AddReports(Sender: TObject); begin /// JUNTAR REPORTS with QRCompositeReport1 do begin Add(QRClientes); Add(QRProf); end; end; procedure TForm1.Button1Click(Sender: TObject); begin /// MOSTRAR REPORT INDIVIDUAL Cadcli_IB.Active := false; CDS_Cadcli.Active := false; Cadcli_IB.Active := true; CDS_Cadcli.Active := true; CDS_Cadcli.Refresh; try if QRClientes = Nil then QRClientes := TQRClientes.Create(self); except ShowMessage('Erro na criação do relatório!!'); exit; end; QRClientes.Preview; /// MOSTRAR REPORT INDIVIDUAL CadProf_IB.Active := false; CDS_CadProf.Active := false; CadProf_IB.Active := true; CDS_CadProf.Active := true; CDS_CadProf.Refresh; try if QRProf = Nil then QRProf := TQRProf.Create(self); except ShowMessage('Erro na criação do relatório!!'); exit; end; QRProf.preview; /// MOSTRAR REPORTS JUNTOS QRCompositeReport1.Prepare; QRCompositeReport1.Preview; end; OBS: o titulo do segundo report vai sair colocado ao final do primeiro. Se voce quiser , na propriedade OnEndPage do primeiro report, voce coloca o codigo abaixo para o titulo do segundo reporte, sair em nova pagina quando ajuntar os 2. ( faça isso para os demais tambem ) // primeiro report procedure TQuickReport1.QuickRepEndPage(Sender: TCustomQuickRep); begin QuickReport1.ForceNewPage; end; Lembrando: A estrutura desses reports são: * Title * Page Header * Column Header * Detail * Summary abraço
  25. A URL do provedor teve uma modificação http://www.republicavirtual.com.br/cotacao/exemplos.php O resultado será mostrado na StringGrid em 25 a 30 segundos OBS: Acho que o provedor não está mais atualizando os valores. Código com a URL alterada unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Button1: TButton; StringGrid1: TStringGrid; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses UrlMon; procedure TForm1.Button1Click(Sender: TObject); var caminho, linha, s, f, g : string; arq : TextFile; cc, x, y, z : integer; Function Download(FSource, FDest: String): Boolean; begin try Result := UrlDownloadToFile(nil, PChar(Fsource),PChar(FDest), 0, nil) = 0; except Result := False; end; end; begin // WEB SERVICE DE COTAÇÃO DO DOLAR cc := 0; x := 0; y := 0; z := 0; caminho := 'C:\cotacao.htm'; Download('http://cotacao.republicavirtual.com.br/web_cotacao.php?formato=javascript', caminho); AssignFile ( arq, caminho); Reset ( arq ); while not Eof(arq) do begin inc(cc); Readln ( arq, linha); s := trim(linha); while Pos('''', S) > 0 do S[Pos('''', S)] := ' '; if cc > 2 then begin if Pos(':',s) > 0 then begin f := trim(copy(s,1,Pos(':',s)-1)); g := trim(copy(s,Pos(':',s)+1,20)); // MOSTRAR A COTAÇÃO EM UM STRINGGRID StringGrid1.Cells[0,0]:= 'MOEDA'; StringGrid1.Cells[1,0]:= 'COTAÇÃO'; StringGrid1.Cells[0,cc-2]:= f; StringGrid1.Cells[1,cc-2]:= g; end; end; end; CloseFile ( arq ); end; end. abraço
×
×
  • Criar Novo...