
Eder
Membros-
Total de itens
1.002 -
Registro em
-
Última visita
Tudo que Eder postou
-
tenta no final assim: edttotal.Text := 'R$ ' + FloatToStr(cota+juros+multa+extra+total); somei todas as suas variaveis..se você ver que tem alguma que não deveria somar...retire agora se você quizer somente somar todas menos as total....então faça assim: edttotal.Text := 'R$ ' + FloatToStr(cota+juros+multa+extra); se você quizer mostrar somente a total..pois ela já estava somando as outras então faça assim: edttotal.Text := 'R$ ' + FloatToStr(total); bom espero que um dos casos acima..seja o que você quer valeu.. :D
-
Ola...Pessoal Eu uso paradox somente, e tenho o costume de trabalhar com Tables e Querys. Então pra configurar as tabelas em digito no DatabaseName da Table ou query...o alias ou o caminho do banco tipo c:\bdados Mas eu gostaria de saber se tem alguma maneira de eu configurar pra pegar as tabelas aonde esta o programa executavel, ou seja, não usar nem alias e nem o endereço c:\bdados Neste caso eu queria jogar as tabelas e o executavel(programa) numa unica pasta...e ai o programa seria inteligente o suficiente pra saber que as tabelas estão juntas e ai executar..... Vamos supor que o usuario resolvesse pegar esta pasta com o executavel e as tabelas e renomear ou copiar pra outra pasta....o programa continuaria sempre funcionando..pois sempre estariam juntas o executavel + as tabelas... Tem como?? Grato
-
Jonas...não deu certo...ai tava dando uma testada agora a tarde...e verifiquei que este erro é somente na minha máquina os demais usuários de outras maquinas..estão usando sem problema Acredito que com a remoção do Microsoft Office...algo foi removido junto...e como eu uso esta função ..acredito que ela precisa de algum arquivo ou configuração do Microsoft office..sei lá...é uma ideia...pois o erro é somente na minha maquina. Se tiveres mais alguma ideia?? Carinha não tens alguma dica mais eficiente pra mandar email pelo delphi sem depender do Outlook express? Grato
-
R.: Ola..Baixei pro quick 3, legal ...tem um exemplo com fontes muito bom....vou dar uma estudada e adpatar a minha necessidade. Era isto mesmo que eu precisava.. valeu a dica...e o endereço do download... ;) Abraço :D
-
Ola..pessoal. Foi removido o microsoft office de uma maquina de um usuario..e instalado o BrOffice, porem agora tenho um programa e nele tem um botão que monta o email em cima do outllok express..mas este..não foi removido somente o Office(word, excel etc...). Então agora ao clickar no botão da a seguinte mensagem de erro: Error While Trying to send email Eu uso esta função pra mandar o email: Uses Mapi function SendEMail(Handle: THandle; Mail: TStrings): Cardinal; type TAttachAccessArray = array [0..0] of TMapiFileDesc; PAttachAccessArray = ^TAttachAccessArray; var MapiMessage: TMapiMessage; Receip: TMapiRecipDesc; Attachments: PAttachAccessArray; AttachCount: Integer; i1: integer; FileName: string; dwRet: Cardinal; MAPI_Session: Cardinal; WndList: Pointer; begin dwRet := MapiLogon(Handle, PChar(''), PChar(''), MAPI_LOGON_UI or MAPI_NEW_SESSION, 0, @MAPI_Session); if (dwRet <> SUCCESS_SUCCESS) then begin MessageBox(Handle, PChar('Error while trying to send email'), PChar('Error'), MB_ICONERROR or MB_OK); end else begin FillChar(MapiMessage, SizeOf(MapiMessage), #0); Attachments := nil; FillChar(Receip, SizeOf(Receip), #0); if Mail.Values['to'] <> '' then begin Receip.ulReserved := 0; Receip.ulRecipClass := MAPI_TO; Receip.lpszName := StrNew(PChar(Mail.Values['to'])); Receip.lpszAddress := StrNew(PChar('SMTP:' + Mail.Values['to'])); Receip.ulEIDSize := 0; MapiMessage.nRecipCount := 1; MapiMessage.lpRecips := @Receip; end; AttachCount := 0; for i1 := 0 to MaxInt do begin if Mail.Values['attachment' + IntToStr(i1)] = '' then break; Inc(AttachCount); end; if AttachCount > 0 then begin GetMem(Attachments, SizeOf(TMapiFileDesc) * AttachCount); for i1 := 0 to AttachCount - 1 do begin FileName := Mail.Values['attachment' + IntToStr(i1)]; Attachments[i1].ulReserved := 0; Attachments[i1].flFlags := 0; Attachments[i1].nPosition := ULONG($FFFFFFFF); Attachments[i1].lpszPathName := StrNew(PChar(FileName)); Attachments[i1].lpszFileName := StrNew(PChar(ExtractFileName(FileName))); Attachments[i1].lpFileType := nil; end; MapiMessage.nFileCount := AttachCount; MapiMessage.lpFiles := @Attachments^; end; if Mail.Values['subject'] <> '' then MapiMessage.lpszSubject := StrNew(PChar(Mail.Values['subject'])); if Mail.Values['body'] <> '' then MapiMessage.lpszNoteText := StrNew(PChar(Mail.Values['body'])); WndList := DisableTaskWindows(0); try Result := MapiSendMail(MAPI_Session, Handle, MapiMessage, MAPI_DIALOG, 0); finally EnableTaskWindows( WndList ); end; for i1 := 0 to AttachCount - 1 do begin StrDispose(Attachments[i1].lpszPathName); StrDispose(Attachments[i1].lpszFileName); end; if Assigned(MapiMessage.lpszSubject) then StrDispose(MapiMessage.lpszSubject); if Assigned(MapiMessage.lpszNoteText) then StrDispose(MapiMessage.lpszNoteText); if Assigned(Receip.lpszAddress) then StrDispose(Receip.lpszAddress); if Assigned(Receip.lpszName) then StrDispose(Receip.lpszName); MapiLogOff(MAPI_Session, Handle, 0, 0); end; end; exemplo de envio no botão: procedure TForm1.BitBtn5Click(Sender: TObject); var mail: TStringList; begin mail := TStringList.Create; try mail.values['to'] := 'Email@test.xyz'; ///AQUI VAI O EMAIL DO DESTINATARIO/// mail.values['subject'] := 'Hello'; ///AQUI O ASSUNTO/// mail.values['body'] := 'blah'; ///AQUI O TEXTO NO CORPO DO EMAIL/// mail.values['attachment0'] := 'C:\Test.txt'; ////AQUI O ENDEREÇO ONDE ENCONTRAM OS ARQUIVOS// mail.values['attachment1']:='C:\Test2.txt'; ///IDEM - NO ATTACHMENT1 TEM QUE COLOCAR A SEQUNCIA DO EMAIL A QUAL DESEJA ENVIAR EXEMPLO: ATTACHMENT1 sendEMail(Application.Handle, mail); finally mail.Free; end; end; alguém teria alguma ideia pra resolver este problema?? Obs> Na verdade eu queria abandonar este tipo de envio de email(senão fico dependente), gostaria de fazer tudo pelo delphi...mas peguei uns exemplo na net e nenhum funcionou.....a maioria dava problemas de incompatibilidade com servidores SMTP Mas se alguém tiver algo eficiente por favor me apresente... Agradecido..
-
pessoal..então quer dizer... que não seria muito facil assim..como parecia... resumindo seu eu quizer visualizar e imprimir um arquivo QRP já salvo e precisar usar o PrinterSetup teria que construir meu proprio Preview? Bom eu uso um aplicativo de terceiros free pra visualizar os arquivos salvos e funciona perfeito, acho que o camarada construiu ele desta forma....eu gostaria de ter meu proprio aplicativo..mas...fazer o que... E vocês usam de terceiros ou tem seu proprio aplicativo?? valeu..Grato :)
-
Oba...Micheus..agora fechou...testado e aprovado...deu certo..coloquei no: procedure TFormRanking.QRSubDetail1AfterPrint(Sender: TQRCustomBand; BandPrinted: Boolean); begin if not Query1.EOF then begin Query1.Next; // avançamos na mão para o próximo registro Inc(ContaHanking); // incrementamos item impresso end; end; e deu certo...pois só tinha a banda columaHeader e SubDetail e Sumary...então coloquei na SubDetail..e deu certo. Comparei com outros dois relatorio de ranking e deu tudo certo. Bom é isto ai...chega de encher a tua paciência :) ....vamos encerrar este tópico :D ...foi muito proveitoso esta discussão deste tópico com certeza vai ajudar mais usuários..pois foi sanado mtas dúvidas. Um Grande Abraço e muito grato pela ajuda. t+ :D
-
Entendi ...sim...muito boa explicação....peguei o esquema....realmente eu só sabia sobre a variavel global...as demais não sabia mesmo.. valeu..Grato Micheus...tava testando com dados reais...o exemplo que você me passou: Testando como disse acima com dados reais..notei agora..que tem uma falhilha.....sempre o CLIENTE em primeiro lugar não aparece...eu sei porque como fiz varios tipos de relatorio de ranking...então comparei e notei que sempre o primeio não aparece...ou seja..aparece pra mim assim: aparece como primeiro ....o segundo na real. depois o segundo .....é o terceiro na real depois o terceiro....é o querto na real..e assim por diante... e o verdadeiro cliente em primeiro lugar não aparece...em colocação alguma...é como ele passasse por cima..e desconsiderasse ele... Tens ideia do problema??? Grato
-
Ola..pessoal Tou tentando montar um pequeno aplicativo pra ler arquivos *.qrp do quickreport. é muito simples....e fiz apenas..inserindo: *um quickrep1 no form *coloquei o No OnCreate do form: quickrep1.viseble=false *um botão com o codigo assim: quickrep1.preview; tudo muito simples....ai o usuario apenas click no botão do preview, ai depois ele apenas click na caixinha abrir do preview e acesso o arquivo QRP e visualiza..... Porem ...quando ele abre e visualiza o arquivo QRP, o icone PRINTER SETUP desabilita, impossibilitando do usuario escolher o tipo de impressora e qtas paginas poderia imprimir...só deixando a opção de Print(IMPRIMIR) mesmo.... Tem uma maneira de eu deixar o BOTÃO DE PrinterSetup abilitado??? ou alguma outra ideia?? Grato
-
R.: Bingo....tu é o cara....deu certo....na pinta. :D Carinha...uma coisa que queria perguntar a algum tempo...Q Qual a dirença da Variavel abaixo do private p/ a variavel abaixo do Var?? private ContaHanking :integer; para var FormRanking: TFormRanking; TOTALGFRETE:REAL; //VARIVEL QUE PEGA O VALOR TOTAL GERAL DO FRETE Valeu...Grato ;)
-
Micheus.....achei que era mais simples....é muito complicado...deixa quieto.... ;) Do Jeito que ta já ta bom pra caramba....hehehe A hora que tiver mais inspirado...vou dar um estudada. Por enquanto meu muito obrigado pelo esforço e paciência. O que eu queria realmente você me ajudou...e ficou muito bom...t+ :D Abraço Oba...eu de novo....tive uma ideia....eu tinha colocado um QrSysData que mostrava a colocação do cliente no ranking... então eu pensei não daria pra fazer o controle em cima deste componente?? eu fiz assim: procedure TFormRanking.QRSysData3Print(sender: TObject; var Value: String); begin If value = '4' then begin Abort; end else begin VALUE := formatfloat('000',StrToFloat(VALUE))+'º'; end; end; até funcionou em parte...ele mostrou os 4 clientes maiores.....só não terminou o relatorio corretamente...derepente você saberia como fazer para o relatório em cima deste componente e encerra-lo corretamente... O que acha??? é só uma ideia..aqui deu certo como te falei apenas não encerrou corretamente: o layout ficou assim> c===cliente======valor 1.......XXXX.............10,00 2.......YYYY..............15,00 3.......ZZZZ.............18,00 .......mmm.............12,00 pode notar que ele não mostrou o nr 4 e não mostrou a banda sumary e o somatorio, é claro eu abortei.... mas será que teria jeito? se não der beleza...foi uma ideia... abraço
-
R.: fiz isto e abandonei por enquando o periodo ...pois deu erro...resolvi fazer um testezinho sem o periodo...pois antes quando tinha dito que tinha dado tudo certo, eu fazia os codigos sql nas proprias querys...no SQL-Tstrings....mas como eu queria testa-los também com o codigo a instrução sql no botão....exemplo: Qry2 := 'SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) ORDER BY SIGLA_CTRC, NUMERO_CTRC'; R.: bom....ta tudo certo como acima, exceto as bandas....tenho somente as bandas: Micheus....só pra você entender...o relatorio funciona 100% se eu colocar este codigo na query1 SQL TStrings: SELECT PAG_CNPJ, PAGADOR_NOME, SUM(VALOR_FRETE) AS [quote]VALOR_FRETE_TOTAL FROM CTRC WHERE (SITUACAO_CTRC <> "C") GROUP BY PAG_CNPJ, PAGADOR_NOME ORDER BY 3 DESC e na Query2 SQL TStrings: SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE FROM CTRC WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) ORDER BY SIGLA_CTRC, NUMERO_CTRC entendeu?? funciona certinho.. Agora que vem a pepa....eu não queria usar mais o codigo direto nas querys SQL TStrings, pois como vou ter que deixar o usuario selecionar a data (periodo desejado)...então gostaria de deixar estes codigo na query num BOTÃO. pra isto tenho que trabalhar estes codigos pro botão....e coloca-los em string´s..como coloquei logo acima.....mas eles não funcionam ...duplicam.... não sei porque...pois estou usando o mesmo critério....apenas mudando a forma de processar...que antes tava nos TString direto nas queryes...e agora coloquei no botão...exatamente igual. Valeu..Grato opa deu certo era este codigo abaixo que dava o problema e duplicava: query2.open; ai retirei ele e ficou assim: procedure TFormRanking.XiButton2Click(Sender: TObject); var Qry1, Qry2 : String; begin If DateTimePicker2.Date < DateTimePicker1.Date Then begin ShowMessage('Intervalo de datas Inválido, a data Inicial é maior que a data Final!'); DateTimePicker2.Date := DateTimePicker1.Date; exit; end; {QUERY1} Qry1 :='SELECT PAG_CNPJ, PAGADOR_NOME, SUM(VALOR_FRETE) AS VALOR_FRETE_TOTAL '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") '+ 'AND DATA_EMISSAO between :datai and :dataf '+ 'GROUP BY PAG_CNPJ, PAGADOR_NOME ORDER BY 3 DESC'; Query1.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query1.SQL.Text := Qry1; //a instrucao sql recebe o texto acima//Query1.ParamByName('datai').AsDate := DateTimePicker1.Date; // você ta passando as datas iniciais para o parametro Query1.ParamByName('datai').AsDate := DateTimePicker1.Date; Query1.ParamByName('dataf').AsDate := DateTimePicker2.Date; // você ta passando as datas finais para o parametro Query1.Open; {QUERY2} Qry2 :='SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, '+ 'NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE '+ 'FROM WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) '+ 'AND DATA_EMISSAO between :datai and :dataf '+ 'ORDER BY SIGLA_CTRC, NUMERO_CTRC'; Query2.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query2.SQL.Text := Qry2; //a instrucao sql recebe o texto acima Query2.ParamByName('datai').AsDate := DateTimePicker1.Date; Query2.ParamByName('dataf').AsDate := DateTimePicker2.Date; // você ta passando as datas finais para o parametro // If query1.IsEmpty Then begin ShowMessage('Nenhum Registro Encontrado!'); exit; end; FormRAbast1.qrlabel20.Caption:=DateToStr(DateTimePicker1.Date); FormRAbast1.qrlabel22.Caption:=DateToStr(DateTimePicker2.Date); quickrep1.Preview; End; Agora fechou tudo certinho....até por periodo.. :D O que é um codigo colocado incorretamente né :D Carinha sem querer abusar ...lembra da outra dúvida?? acho que esta é facil pra você.. Eu gostaria de saber se da pra listar apenas os 10 maiores clientes..... É facil?? li uns artigos que diz que tem usar um comando chamado:top 10 tentei usar mas não deu certo...não sei se coloquei certo. Grato ;)
-
R.: Oba....Micheus...ta deixa ver se entendi.. a inicialização que você diz é o parametro da query? se for ....acrescentei esta linha no codigo: Query2.ParamByName('pag_cnpj').asString := QUERY1pag_cnpj.AsString; codigo abaixo completo var Qry1, Qry2 : String; Begin Qry1 := 'SELECT PAG_CNPJ, PAGADOR_NOME, SUM(VALOR_FRETE) AS VALOR_FRETE_TOTAL '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") '+ 'GROUP BY PAG_CNPJ, PAGADOR_NOME ORDER BY 3 DESC'; Query1.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query1.SQL.Text := Qry1; Query1.Open; {QUERY2} Qry2 := 'SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) ORDER BY SIGLA_CTRC, NUMERO_CTRC'; Query2.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query2.SQL.Text := Qry2; //a instrucao sql recebe o texto acima Query2.ParamByName('pag_cnpj').asString := QUERY1pag_cnpj.AsString; Query2.Open; quickrep1.Preview; Mesmo assim ta duplicando como mencionei acima... Estou fazendo errado?? Antes eu tava fazendo na propria query..e funcionava.
-
R.: Opa.....cheguei....foi mal... na correria nem me toquei do nome do campo.... :) Mas..Micheus...mesmo assim...o relatorio saiu loco....duplicando cliente........cnpj.......valor ================= xxxxx.......99999.......10,00 xxxxx.......99999.......10,00 xxxxx.......99999.......10,00 repete um monte de vezes...ai depois muda pra outro cliente yyyyy.......99999.......15,00 yyyyy.......99999.......15,00 e vai repetindo.....não sei porque...ai só pra testar tirei o codigo de DATA_EMISSÃO para ficar igual ao codigo sql que esta na PROPRIA query1 e query2 no quickreport ficando assim: procedure TFormRanking.XiButton2Click(Sender: TObject); var Qry1, Qry2 : String; begin {QUERY1} Qry1 := 'SELECT PAG_CNPJ, PAGADOR_NOME, SUM(VALOR_FRETE) AS VALOR_FRETE_TOTAL '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") '+ 'GROUP BY PAG_CNPJ, PAGADOR_NOME ORDER BY 3 DESC'; Query1.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query1.SQL.Text := Qry1; //a instrucao sql recebe o texto acima Query1.Open; {QUERY2} Qry2 := 'SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) ORDER BY SIGLA_CTRC, NUMERO_CTRC'; Query2.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query2.SQL.Text := Qry2; //a instrucao sql recebe o texto acima Query2.Open; quickrep1.Preview; END; e ai continua repetindo......estranho não deveria pois..estou passando atraves do Qry1 e Qry2 variaveis Texto...a instrução sql igualzinho que ta la nas querys no proprio form do quick. O que você acha?? Grato
-
Ola..Micheus....Carinha...meti a cara hoje de manhã..e ttrabalhei em cima do seu exemplo e CONSEGUI montar exatamente como queria....funcionar 100%....mostrou os totais em ordem de Ranking e totalizei na sumary o relatorio, coloquei também mais um campo o cnpj dos clientes e também coloquei um QrsysData=que mostra a colocação do clientes....ficou show. :D ficou assim as duas queryes query1: SELECT PAG_CNPJ, PAGADOR_NOME, SUM(VALOR_FRETE) AS VALOR_FRETE_TOTAL FROM CTRC WHERE (SITUACAO_CTRC <> "C") GROUP BY PAG_CNPJ, PAGADOR_NOME ORDER BY 3 DESC Query2: SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE FROM CTRC WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) ORDER BY SIGLA_CTRC, NUMERO_CTRC Segui exatamente seus passos, e claro que ai eu mudei algumas coisinhas no codigo, tipo mais campos e filtros etc...mas a sua ideia deu certo. Carinha seguinte: me surgiu duas duvidas agora, só por curiosidade. Uma delas é que se eu quizer consultar por data. Eu fiz assim mas da erro: procedure TFormRanking.XiButton2Click(Sender: TObject); var Qry1, Qry2 : String; begin If DateTimePicker2.Date < DateTimePicker1.Date Then begin ShowMessage('Intervalo de datas Inválido, a data Inicial é maior que a data Final!'); DateTimePicker2.Date := DateTimePicker1.Date; exit; end; {QUERY1} Qry1 :='SELECT PAG_CNPJ, PAGADOR_NOME, SUM(VALOR_FRETE) AS VALOR_FRETE_TOTAL '+ 'FROM CTRC WHERE (SITUACAO_CTRC <> "C") '+ 'AND between :datai and :dataf '+ 'GROUP BY PAG_CNPJ, PAGADOR_NOME ORDER BY 3 DESC'; Query1.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query1.SQL.Text := Qry1; //a instrucao sql recebe o texto acima Query1.ParamByName('datai').AsDate := DateTimePicker1.Date; // você ta passando as datas iniciais para o parametro Query1.ParamByName('dataf').AsDate := DateTimePicker2.Date; // você ta passando as datas finais para o parametro Query1.Open; {QUERY2} Qry2 :='SELECT DATA_EMISSAO, PAG_CNPJ, PAGADOR_NOME, SIGLA_CTRC, '+ 'NUMERO_CTRC, REMET_CIDADE, VALOR_FRETE '+ 'FROM WHERE (SITUACAO_CTRC <> "C") AND (PAG_CNPJ = :PAG_CNPJ) '+ 'AND between :datai and :dataf '+ 'ORDER BY SIGLA_CTRC, NUMERO_CTRC'; Query2.Close; //fecha para limpar qualquer instrução que esteje na memoria.... Query2.SQL.Text := Qry2; //a instrucao sql recebe o texto acima Query2.ParamByName('datai').AsDate := DateTimePicker1.Date; // você ta passando as datas iniciais para o parametro Query2.ParamByName('dataf').AsDate := DateTimePicker2.Date; // você ta passando as datas finais para o parametro Query2.Open; If query1.IsEmpty Then begin ShowMessage('Nenhum Registro Encontrado!'); exit; end; quickrep1.Preview; END; e a outra dúvida....bom...esta deixa pra depois... Bom é isto ai....valeu a ajuda..agradecido. Abraços :D
-
R. Opa..me desculpe eu me atrapalhei no final do codigo.....não havia notado que o total era a variavel..na hora achei que era uma string ou seja que era um EDIT.....perdão...foi mal. E quanto aos edit´s com o mesmo nome da variavel..concordo com nosso colega. Abraço :(
-
Ola... tenta mudar a linha que soma assim: procedure Trecibo.Button3Click(Sender: TObject); var cota:real; juros:real; multa:real; extra:real; total:real; begin cota:=strtofloat(cota.text); juros:=strtofloat(juros.text); multa:=strtofloat(multa.text); extra:=strtofloat(extra.text); total:= FloatToStr(cota + juros + multa + extra); end; Acho que resolve..... :D
-
R. Oba...desculpe a demora em responder só agora vi que você havia respondido ;) Entendi o que você mencionou..e já alterei também incluindo o DESC R.: Jóia....valeu...é bom contar com pessoas dispostar a ajudar... Abraços..t+:)
-
Resposta p/ Micheus: sim...vou pegar o exemplo do Jonas e dar uma estudada, parece que nele tem tudo o que preciso.. Valeu Jonas...qualquer coisa eu peço ajuda aos colegas.. Grato a atenção Micheus e Jonas. Abraço :)
-
Ola..Jonas...Bza? carinha ...isto tou sabendo beleza... Mas o que eu queria e não to conseguindo fazer é como este exemplo abaixo: Entendeu?? terias algum exemplo como mostro acima?? Grato
-
Ola..pessoal...tou montando este codigo pra mostrar a data por extenso ...igual se mostra em Promissória. assim: procedure TForm1.Edit3Enter(Sender: TObject); Var DataVencimento : TDateTime; begin DataVencimento:=StrToDateTime(maskedit5.text); Edit3.Text := 'Aos ' + FormatDateTime('dd "dias do mês de " mmmm "do ano de " yyyy',DataVencimento); //converte para exenso end; o resultado ta saindo assim: Não sei ao certo, gostaria de uma dica.....mas acho que deveria sair assim: Ao(s) primeiro dia do mês de Janeiro do ano de dois mil e oito Alguém poderia me dar uma dica e o que eu alteraria no codigo?? Obs.: teria que ser algo que não precisasse da DATEUTILS..pois meu delphi é 4 e não tem ela. Grato
-
Carinha..achei a solução....até por sinal muito fácil...e deu certo. With Query3 Do Begin Close; With Sql do Begin Clear; Add('Select IVISBLU.CODITEM, IVISBLU.CODVISITA From IVISBLU '); Add('WHERE IVISBLU.CODVISITA ='+ QuotedStr(table1CODIGO.Text)); Add('ORDER BY IVISBLU.CODVISITA'); end; Open; Query3.LAST; Table2CODITEM.Value := Query3CODITEM.AsInteger +1; END; Finalmente deu certo..na verdade a ideia principal é a sua...mas ai ao invés de comparar com a propria table2...fiz a comparaçao entre table1 e table2...ai fechou direitinho. :D ;) Carinha...muito Grato pela Ajuda e pela paciência...afinal foram mais de 20 partes este tópico..ufa... Abraços :D
-
R. sim...o primeiro grava certinho...nem preciso abrir o database desktop pois tenho o Dbgrid que me mostra exatamente o que vai acontecendo. Como falei em tópico anterior..a consulta não me traz nada....só funciona o primeiro item na gravação...pois é + 1 e é esto hum que é gravado como primeiro registros..após sempre da erro de key..pois ele quer gravar um de novo...pois a consulta não traz nada. Só mais uma curiosidade: se a consulta Query3 está "Select MAX(CODITEM) From IVISBLU where CODVISITA = :CODVISITA", como é que você tem um campo adicionado a query chamado Query3CODITEM? Supostamente deveria ser algo como Query3MAXOFcodigo, já que você não declara um nome para a coluna, e neste caso, a consulta deveria estar "Select MAX(CODITEM) AS CODITEM From IVISBLU where CODVISITA = :CODVISITA" R. aqui eu pipoquei mesmo...eu incluia no braço o CODITEM NA QUERY3.....pois senão ele não me deixava compilar...mas ai mudei agora assim como você me pede: Select MAX(CODITEM) AS CODITEM From IVISBLU where CODVISITA = :CODVISITA Mas mesmo assim.....a consulta não continua me trazendo valor....Não sei porque..deveria trazer, pois concordo a select ta correta...fiz um testezinho coloquei um label e coloquei este codigo no botão: label1.caption:=floattostr(Query3CODITEM.AsFloat + 1); e nada...só me traz o resultado 1 Grato...t+ Abraços
-
R. Ok....substitui R. Sim tudo certinho. Carinha eu fiz um testezinho e reparei que a query3 não me traz resultado algum...ou seja nada...pois quanto tento gravar o primeiro registro da detalhes não da erro..pois como esta somando o + 1(mas 1) ela grava normalmente..ai explica quando vou pro segundo e da erro de KeyViolation...pois ela torna a querer gravar o 1 de novo...porque a query3 na me traz a qtidade de registros gravados...a consulta da query não funca. :( Então acho que o codigo na propria query3 com o parametro codvisita não funciona...é ali que acho que ta o erro..apartir do momento que a query3 me trazer o resultados da quantidade registros gravados ai funcionará certinho. O que você acha?? :rolleyes: E pra converter estes dados de numerico pra autoincremento...daria?? ai resolveria esta pepa. Tentei fazer isto no database desktop mas ele não me deixa...converter. é eu acho que teria que criar um campo intermediário (inteiro), mover apenas a parte inteira para ele, dropar a coluna numeric, criá-la novamente como integer, mover a coluna temporária para a nova e transformá-la em autoincremente (mais ou menos tudo isso) Independente disto, é recomendado que você não utilize campos numeric para a finalidade aque exposta (código sequencial de controle) R. Este nem vou tentar de emediato....só vou tentar a hora que eu ver que não tem mais jeito da maneira que estamos discutindo acima ;) ....beleza?? :) Abraço e bom final de semana... t+
-
R. Carinha...fiz e não deu certo. Pra não ter que recriar tudo de novo....ainda bem que tinha uma copia em casa...e como era uma alteração pequena em um qrlabel....então usei o backup e fiz a alteração e na cópia de casa não tinha este problema. É por isto que digo que não tem backup mtas vezes se ferra...hehehe :D Este me safei!!! ;) Valeu Micheus e Jonas..valeu a tentativa. Abraço a todos. t+