Ir para conteúdo
Fórum Script Brasil

robinhocne

Membros
  • Total de itens

    854
  • Registro em

  • Última visita

Tudo que robinhocne postou

  1. Olá looptel! Informa para nos qual é o seu banco de dados e seu delphi?
  2. Obrigado pelo comentário Micheus, é que eu aprendi nesse jeito meio esclusivo, mas estou inovando, dessas maneiras! Bom fiz o teste que você me passou para salvar e valor monetário, e ai deu certo, mas mudei para o que você me passou e ai deu o seguinte erro! Bom por esse erro que deu, acho que fala que tem mais colunas das quais informada, mais ou menos assim! Esses são os dados do botão salvar: procedure Tfrmcadlan.spbsalClick(Sender: TObject); var vCod, vNom : String; begin with vcpo do begin clear; add ('Aluno'); add ('Historico'); add ('Valor'); add ('Vencimento'); add ('Emissao'); Add ('Tipo'); end; tblPar.First; while ( not tblPar.eof ) do begin with vvlr do begin clear; add (#39 + TxtCod.Text + #39); Add (#39 + tblPar.Fields[00].DisplayText + #39); Add (Format('%.2f', [tblPar.Fields[02].AsFloat])); add (#39 + FormatDateTime ('mm/dd/yyyy', tblPar.Fields[01].AsDateTime ) + #39); add (#39 + FormatDateTime ('mm/dd/yyyy', StrToDate ( TxtEmi.Text ) ) + #39); Add (#39 + Edit1.Text + #39) end; incluirregistro ('Lancamento', vcpo, vvlr); tblPar.Next; end; vCod := txtCod.Text; vNom := txtAlu.Text; inherited; tblPar.close; end;
  3. Sim Utilizo o IbExpert! Olhei esta preenchendo a data do lancamento a data do dia! ******************************** Fiz uma varredura buscando esse campo no meu programa e realmente não tinha nada na tabela de lancamento, ai resolvi mexer no banco de dados e excluir o campo de dtpgto e fiz outro com o nome de pagamento (date), e ai agora deu tudo certo tá funcionando normal! Mas está acontecendo algo de errado baseado nesses dados para salvar! Tipo se eu gero as parcela no valor assim (70,50), ai ele arredonda o valor para (71,00), o que será!, oque esta de errado Há segunda coisa, como faço para no grid mostrar o valor com a virgula tipo assim ele , se eu gero a parcela de 100,00 ele só mostra 100 no grid como posso arrumar também! Acho que assim finalizo esse tópico!
  4. robinhcne, já não lembro mais... Qual o bando de dados que você está utilizando? MySQL?Por acaso, você está trabalhando com triggers? Definiu algum valor default? Se não é no código, tem que estar no banco. Não há opção. Uso o Firebird 2.0.3 Uso triggers Esse é o trigger: CREATE TRIGGER TRGCODLAN FOR LANCAMENTO ACTIVE BEFORE INSERT POSITION 0 AS DECLARE VARIABLE VCOD NUMERIC (15,0); BEGIN SELECT MAX(CODIGO) FROM LANCAMENTO INTO :VCOD; IF (:VCOD IS NULL) THEN BEGIN VCOD=0; END NEW.CODIGO = (:VCOD+1); END O Unico do Lancameto! E a tabela no banco de dados! REATE TABLE LANCAMENTO ( CODIGO NUMERIC(15,0) NOT NULL, ALUNO NUMERIC(6,0), PARCELA VARCHAR(30), VALOR NUMERIC(5,3), VENCIMENTO DATE, EMISSAO DATE DEFAULT CURRENT_DATE, HISTORICO VARCHAR(100), DTPGTO DATE, TIPO NUMERIC(1,0), HISTORICO1 VARCHAR(100) ); /******************************************************************************/ /**** Primary Keys ****/ /******************************************************************************/ ALTER TABLE LANCAMENTO ADD PRIMARY KEY (CODIGO); /******************************************************************************/ /**** Foreign Keys ****/ /******************************************************************************/ ALTER TABLE LANCAMENTO ADD FOREIGN KEY (ALUNO) REFERENCES ALUNOS (CODIGO); Mas sobre o campo DtPgto aqui não tem nada que relaciona a ele!
  5. Isso elas estão sendo quitadas automaticamente, no banco de dados estava como current_date, mas eu tirei e continua a mesma coisa, fiz até um busca Crtl+f para ver se ter no formulário de lancamentos mas nada, estou-lhe passando os codigos para você dá uma olhada! unit flancamentos; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, fpadrao, StdCtrls, psvBasiclbl, psvBorderLabel, Buttons, ExtCtrls, Mask, Grids, DBGrids, DB, RxMemDS, IBCustomDataSet, IBQuery; type Tfrmcadlan = class(Tfrmpadrao) Panel3: TPanel; psvBorderLabel1: TpsvBorderLabel; psvBorderLabel3: TpsvBorderLabel; psvBorderLabel4: TpsvBorderLabel; psvBorderLabel5: TpsvBorderLabel; txtcod: TEdit; txtalu: TEdit; psvBorderLabel6: TpsvBorderLabel; TxtPar: TEdit; TxtVen: TMaskEdit; DbgLan: TDBGrid; SpbGePar: TSpeedButton; DtsLan: TDataSource; TxtVal: TMaskEdit; tblPar: TRxMemoryData; tblParid: TSmallintField; tblParvencto: TDateField; tblParvalor: TCurrencyField; txtEmi: TMaskEdit; procedure spbsalClick(Sender: TObject); procedure SpbGeParClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure txtcodExit(Sender: TObject); procedure spbpesClick(Sender: TObject); Procedure LeRegistro(); private public { Public declarations } end; var frmcadlan: Tfrmcadlan; implementation {$R *.dfm} USES funcoes, fprincipal, FPesAluno, fdtmiza; procedure Tfrmcadlan.spbsalClick(Sender: TObject); var vCod, vNom : String; begin with vcpo do begin clear; add ('Aluno'); add ('Parcela'); add ('Valor'); add ('Vencimento'); add ('Emissao'); end; tblPar.First; while ( not tblPar.eof ) do begin with vvlr do begin clear; add (#39 + TxtCod.Text + #39); Add (#39 + tblPar.Fields[00].DisplayText + #39); Add ( TiraMascara( FormatFloat( '#########,##', tblPar.Fields[02].AsCurrency ) ) ); add (#39 + FormatDateTime ('mm/dd/yyyy', tblPar.Fields[01].AsDateTime ) + #39); add (#39 + FormatDateTime ('mm/dd/yyyy', StrToDate ( TxtEmi.Text ) ) + #39); end; incluirregistro ('Lancamento', vcpo, vvlr); tblPar.Next; end; vCod := txtCod.Text; vNom := txtAlu.Text; inherited; tblPar.close; end; procedure Tfrmcadlan.SpbGeParClick(Sender: TObject); var a, prazo : integer; data : TDate; begin if ( not tblPar.Active ) then tblPar.Open else tblPar.EmptyTable; data := StrToDate( txtVen.Text ); prazo := 30; for a := 1 to StrToInt( txtPar.Text ) do begin with tblPar do begin Insert; Fields[00].AsInteger := a; Fields[01].AsDateTime := data; Fields[02].AsCurrency := StrToFloat( txtVal.Text ); Post; end; data := ( data + prazo ); end; end; procedure Tfrmcadlan.FormCreate(Sender: TObject); begin // txtEmi.Text := FormatDateTime( 'dd/mm/yyyy', Date() ); end; procedure Tfrmcadlan.txtcodExit(Sender: TObject); begin ConsultaRegistros ('Alunos', 'Nome', 'Codigo=' + Copy (TxtCod.Text, 1, 6)); TxtAlu.Text := LeDados ('Nome'); end; procedure Tfrmcadlan.spbpesClick(Sender: TObject); begin with vcpo do begin clear; add ('Codigo'); add ('Nome'); add ('Cpf'); add ('Processo'); Add ('CnhEntregue'); Add ('(SELECT L.Vencimento FROM Lancamento L WHERE L.Aluno=A.Codigo AND EXTRACT( MONTH FROM L.Vencimento ) = EXTRACT( MONTH FROM CURRENT_DATE ) ) AS Vencimento' ); end; with vvlr do begin clear; add ('Codigo'); add ('Nome'); add ('Cpf'); add ('Processo'); end; with TFrmPesAluno.create (application) do begin try tabela := 'alunos A'; camporetorno := 'codigo'; showmodal; finally free; end; end; if (retorno<> '') then begin inherited; LeRegistro(); TxtCod.Text := StrZero( StrToFloat( TxtCod.Text ), 6 ); SpbSal.Enabled := True; txtEmi.Text := FormatDateTime( 'dd/mm/yyyy', Date() ); LiberaReadOnly; end; end; procedure Tfrmcadlan.LeRegistro; begin Consultaregistros('Alunos', 'Codigo, Nome, Cpf, Processo','Codigo =' + Retorno); TxtCod.text := Ledados ('Codigo'); TxtAlu.text := LeDados ('Nome'); end; end.
  6. Bom, daí acho que já é uma questão de procedimento seu.Se você não tem um campo de data de pagamento para saber quando foram baixadas, que informação você está utilizando para indicar isto? :unsure: Desculpa pela informação incompleta eu tenho sim o campo no banco de dados, mas nesse formulário eu não tenho! Esses são os campos que eu tenho na tabela de lancamentos no banco de dados. Mas aqui na tabela no formulário eu não coloco o campo do DtPgto, para gravar a data do pagamento! No botão salvar ficou assim: procedure Tfrmcadlan.spbsalClick(Sender: TObject); var vCod, vNom : String; begin with vcpo do begin clear; add ('Aluno'); add ('Parcela'); add ('Valor'); add ('Vencimento'); add ('Emissao'); end; tblPar.First; while ( not tblPar.eof ) do begin with vvlr do begin clear; add (#39 + TxtCod.Text + #39); Add (#39 + tblPar.Fields[00].DisplayText + #39); Add ( TiraMascara( FormatFloat( '#########,##', tblPar.Fields[02].AsCurrency ) ) ); add (#39 + FormatDateTime ('mm/dd/yyyy', tblPar.Fields[01].AsDateTime ) + #39); add (#39 + FormatDateTime ('mm/dd/yyyy', StrToDate ( TxtEmi.Text ) ) + #39); end; incluirregistro ('Lancamento', vcpo, vvlr); tblPar.Next; end; vCod := txtCod.Text; vNom := txtAlu.Text; inherited; tblPar.close; end;
  7. isto é um erro no SQL. Acho que, devido a este seu método exclusivo de gravação de dados, você terá que fazer o mesmo que você faz com os outros campos string: concatenar o caracter #39, tipo ... add (#39 + TxtCod.Text + #39); Add (#39 + tblPar.Fields[00].DisplayText + #39); // <========= AQUI ... É aquela história do "espírito da coisa", se no seu procedimento de gravação você vai precisar que o valor string contenha o #39, então já tem que cair a ficha. ;) Abraços Ok, resolvido Micheus entedi, mas na hora que eu cadastro as parcelas gero elas bonitinhas e salvo elas ai elas também já dão baixa quer dizer !?! elas já são quitadas aparece como pagas sendo que nessa tabela de lancamentos eu não tenho o campo de data do pagamento! :blink: ! E agora porque acontecesse isso?
  8. Mudei no vvlr do jeito que você me passou aqui mas dá esse erro na hora de salvar: ?:blink:?
  9. o procedimento seria o mesmo para visualizar no relatório. Mas... ... se você quer fazer deste jeito, então observe o seguinte:1 - você está utilizando uma tabela em memória, RxMemoryData, que tem um campo para parcela. Vejo que você está referenciando este campo com TbPar.Fields[00].AsInteger; Mas você deve ter criado o campo em design-time (aquele lance de duplo click no componente, Add para adicionar um novo field, provavelmente do tipo inteiro), então você tem como utilizar a propriedade DisplayFormat dele (nesta tabela em memória); 2 - você está movendo o valor do campo da tabela em memória para sua lista vvlr utilizando: Add(tblPar.Fields[00].AsString). Se você utilizar a propriedade DisplayFormat, como disse no item 1, quando você passar o valor da forma que faz (e que citei no item 2), automaticamente você estará gravando o texto "nª Parcela"! Isto porque, sempre que você define uma formatação para na propriedade DisplayFormat de algum campo, ao obter seu valor no formato string, ou seja, utilizando ".AsString", a formatação é aplicada ao resultado. Abraços Não entendi muito bem Micheus; No FieldDefs o campo das parcela, no DataType está FtSmallint! E agora?
  10. Ok, simples mesmo Micheus, mas Tipo assim Eu queria que salvasse dessa maneira que aparece, pois para eu vizualizar no grid como 1ªparcela e nos relátirios também. Como eu poderia salvar assim....?
  11. Bom, Deixa eu tentar explicar! Na tabela de lancamentos para eu fazer os lancamentos de "x" parcelas eu uso um grid para vizualizar as parcelas geradas, o grid (DbgLan) é ligado pelo datasource (DtsLan) e o datasource é ligado um RxMemoryData (TblPar): Na tabela de Lancamentos eu tenho os seguintes campos: Quantidade de Parcelas = 3 ** No caso aqui eu falo quantos parcelas eu quero gerar aqui no caso 3 igual no Dbgrid Valor = 100,00 ** Valor das parcelas 1ªVencimento = 19/11/2007 ** no caso o primeiro vencimento da 1ªparcela e assim gera os restantes vencimentos. Nesse grid eu tenho uma vizualização assim: Par Vencimento Valor 1 19/11/2007 100,00 2 19/12/2007 100,00 3 19/01/2008 100,00 No Botão (SpbGePar) é o botão que gera as parcelas e mostra no grid (dbglan), esses são os dados dele: procedure Tfrmcadlan.SpbGeParClick(Sender: TObject); var a, prazo : integer; data : TDate; begin if ( not tblPar.Active ) then tblPar.Open else tblPar.EmptyTable; data := StrToDate( txtVen.Text ); prazo := 30; for a := 1 to StrToInt( txtPar.Text ) do begin with tblPar do begin Insert; Fields[00].AsInteger := a; Fields[01].AsDateTime := data; Fields[02].AsCurrency := StrToFloat( txtVal.Text ); Post; end; data := ( data + prazo ); end; end; E para salvar isso tudo: procedure Tfrmcadlan.spbsalClick(Sender: TObject); var vCod, vNom : String; begin with vcpo do begin clear; add ('Aluno'); add ('Parcela'); add ('Valor'); add ('Vencimento'); add ('Emissao'); end; tblPar.First; while ( not tblPar.eof ) do begin with vvlr do begin clear; add (#39 + TxtCod.Text + #39); Add ( tblPar.Fields[00].AsString ); Add ( TiraMascara( FormatFloat( '#########,##', tblPar.Fields[02].AsCurrency ) ) ); add (#39 + FormatDateTime ('mm/dd/yyyy', tblPar.Fields[01].AsDateTime ) + #39); add (#39 + FormatDateTime ('mm/dd/yyyy', StrToDate ( TxtEmi.Text ) ) + #39); end; incluirregistro ('Lancamento', vcpo, vvlr); tblPar.Next; end; vCod := txtCod.Text; vNom := txtAlu.Text; inherited; tblPar.close; end; Então o que eu quero depois dessa explicação é o seguinte, gostaria em onde eu vizualizo as parcelas tipo parcela...1,2,3 etc aparecesse assim, 1ªparcela, 2ªparcela, 3ªparcela e etc, o campo parcela na tabela de dados era numeric (2,0), mas já mudei para varchar (30). Em vez de ser assim no grid e para salvar: Par Vencimento Valor 1 19/11/2007 100,00 2 19/12/2007 100,00 3 19/01/2008 100,00 Seria assim: Parcelas Vencimento Valor 1ª Parcela 19/11/2007 100,00 2ª Parcela 19/12/2007 100,00 3ª Parcela 19/01/2008 100,00 Como eu poderia fazer dessa maneira tipo eu já deixar algo dito na coluna da parcela que é parcela e atribuir a qual parcela será na frente?
  12. Ok, fiz da 1ª opção que você me passou e tudo ok! Resolvido
  13. vou ser obrigado a "plagiar" o Jhonas ;) :Erro de SQL dinâmico Código de Erro SQL = -206 Coluna desconhecida L.Aluno Aparentemente não existe uma coluna com o nome Aluno na tabela de alias L, ou seja, Lancamento. Como dica, segue um link que pode lhe ajudar com as traduções: AltaVista Babel Fish Ok, Micheus acabei fazendo umas alterações no banco de dados e mudei algumas coisas mas agora esta: Que ao abrir o formulário do caixa ele aparecer os dados no grid, mas! só os lancamentos do dia! Esses são os dados que preciso mostrar no grid: Parcela Aluno Parcela Valor DtPgto Historico Não tenho muita pratica em instrução Sql e fiz dessa maneira: With QryCaixa do Begin QryCaixa.Close; QryCaixa.SQL.Text := 'Select Parcela,Valor,Vencimento,Emissao,DtPgto From Lancamento Where Aluno = ' + TxtCod.Text; QryCaixa.Open; end; E coloquei no evento OnShow do formulario do caixa e dá esse erro: Unexpected end of command Alguém poderia me ajudar?
  14. Bom! Preciso buscar esses dados na tabela de lancamentos: Aluno Parcela Valor Vencimento Emissao DtPgto E queria colocar em order a Parcela e a Emissao: Fiz dessa maneira: With QryExtorno do Begin Close; Sql.Clear; Sql.Add ('Select L.Aluno, L.Parcela, L.Valor, L.Vencimento, L.Emissao I.Aluno From Lancamento A, ' + 'Lancamento I Where L.Aluno=' + TxtCod.Text + ' Order By L.Parcela, L.Emissao' ); Open; End; E dá esse erro na hora da busca! O que está dando de errado?
  15. Bom é bastante, mas é esses codigos aqui! Aqui eu fiz uma procedure leRegistro para retorna os dados e outra para Lê procedure Tfrmalunos.leregistro; begin Consultaregistros('Alunos', 'Codigo, DtCadastro, Servicos, Categoria, Nome, Rg, Uf_Rg, Emissor,' + 'Cpf, Cnh, Cnh_Cat, Dt_Nascimento, Naturalidade, Uf_Natu, Pai, Mae, Residencial,Telefone,' + 'Celular,Contato, Cidade, Nom_Cidade, Cep, Uf_Cid, Endereco, Numero, Bairro, Complemento,' + 'Processo, Dt_Abe, Dt_Venc, Dt_Emi, Lic_Apren, Observacoes, CnhEntregue, DtEntregue,' + 'Registro, Cedula, Venc_Cnh, Cat, Alerta','Codigo =' + Retorno); TxtMat.text := Ledados ('Codigo'); TxtDat.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('DtCadastro')); RdbHab.Checked := ( LeDados( 'Servicos' ) = 1 ); RdBalt.Checked := ( LeDados( 'Servicos' ) = 2 ); RdbRen.Checked := ( LeDados( 'Servicos' ) = 3 ); TxtCth.Text := LeDados ('Categoria'); TxtNom.text := LeDados ('Nome'); TxtRg.text := LeDados ('Rg'); TxtUf2.text := LeDados ('Uf_Rg'); CboOrg.text := LeDados ('Emissor'); TxtCpf.Text := StrZero (LeDados ('Cpf'), 11); TxtCat.Text := LeDados ('Cnh'); TxtCat.Text := LeDados ('Cnh_Cat'); TxtNas.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('Dt_Nascimento')); TxtNat.Text := LeDados ('Naturalidade'); TxtUf1.Text := LeDados ('Uf_Natu'); TxtPai.Text := LeDados ('Pai'); TxtMae.Text := LeDados ('Mae'); TxtRes.Text := LeDados ('Residencial'); TxtTel.Text := LeDados ('Telefone'); TxtCel.Text := LeDados ('Celular'); TxtCon.Text := LeDados ('Contato'); TxtCodCid.Text := LeDados ('Cidade'); TxtCid.Text := LeDados ('Nom_Cidade'); TxtCep.Text := LeDados ('Cep'); TxtUf.text := LeDados ('Uf_Cid'); TxtEnd.Text := LeDados ('Endereco'); TxtNum.Text := LeDados ('Numero'); TxtBai.Text := LeDados ('Bairro'); TxtCom.Text := LeDados ('Complemento'); TxtProc.text := LeDados ('Processo'); TxtAbe.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('Dt_Abe')); TxtVenc.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('Dt_Venc')); TxtEmi.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('Dt_Emi')); TxtLa.Text := LeDados ('Lic_Apren'); MemObs.Text := LeDados ('Observacoes'); If LeDados( 'CnhEntregue' ) = 1 then begin RdbEnt.Checked := True; RdbEnt.OnClick(Nil); end else begin RdbEnt.Checked := False; RdbEnt.OnClick(Nil); end; TxtDtEnt.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('DtEntregue')); TxtReg.Text := LeDados ('Registro'); TxtCed.Text := LeDados ('Cedula'); TxtVen.Text := FormatDateTime ('dd/mm/yyyy', LeDados ('Venc_Cnh')); TxtCate.Text := LeDados ('Cat'); If LeDados( 'Alerta' ) = 1 then begin ChekObs.Checked := True; end else begin ChekObs.Checked := False; end;
  16. Tá aparecendo esse erro na hora que eu busco os dados e retorno ai que dá o erro: Alguém sabe porque?
  17. Ok Resolvido: Muito Simples e não prestado a atenção: If RdbEnt.Checked Then Add ('1') else Add ('0');
  18. No Radio Button ele não está dando problemas, mas se eu tiro os dados do CheckBox ele funciona normal, mas se eu deixo ele com esses codigo: If ChekObs.Checked Then Add ('1') else If ChekObs.Checked Then Add ('0');
  19. Estava testando o programa e observei que se eu não selecionar o radiobutton e o check box ele não salva ai ele dá p erro. Esse é os dados do RadioButton que é salvo: e o chekbox Porque esse erro?
  20. Eu uso Firebird 2.0.3 Para conexão, IBQuery, IBDataBase e um IBTransaction. Bom eu acrescentei um Chekbox em meu projeto para que o usuario queira colocar a observação que ele queira deixar em alerta tipo assim ai aparecerá uma mensagem na aba principal do cadastro de alunos informando que tem uma observação em alerta. Então vou passar os ultimos codigos que está o ChekBox, pois é sobre isso que está dando erro. No banco de dados da tabela de alunos eu coloquei o Alerta como Numeric (1,0), para ele checar se for 1 ele ficar aparecendo zero caso contrario não! Onde está dando o erro é no ChekObs, verificam para min se eu faço a checagem assim? begin with vcpo do begin clear; add ('dtcadastro'); add ('servicos'); .... add ('observacoes'); add ('CnhEntregue'); If (EData ( TxtDtEnt.Text ) ) Then add ('DtEntregue'); add ('Registro'); Add ('Cedula'); If (EData ( TxtVen.Text ) ) Then add ('Venc_Cnh'); add ('Cat'); Add ('Alerta'); end; with vvlr do begin clear; Add ('Current_Date'); if (rdbhab.checked) then add ('1') else if (rdbalt.checked) then add('2') else if (rdbren.checked) then add ('3'); .... add (#39 + txtla.Text + #39); add (#39 + memobs.Text + #39); If RdbEnt.Checked Then Add ('1'); If ( EData (TxtDtEnt.Text) ) then Add (#39 + Formatdatetime ('mm/dd/yyyy', StrtoDate (TxtDtEnt.Text)) + #39); Add (#39 + TxtReg.Text + #39); Add (#39 + TxtCed.Text + #39); If ( EData (TxtVen.Text) ) then Add (#39 + Formatdatetime ('mm/dd/yyyy', StrtoDate (TxtVen.Text)) + #39); Add (#39 + TxtCate.Text + #39); If ChekObs.Checked Then Add ('1'); end; If (Editar) Then begin AlterarRegistro ('alunos', vCpo, vVlr, 'codigo =' + txtmat.Text) end else begin IncluirRegistro('alunos', vCpo, vVlr); imprimeFicha(); end; Inherited; End;
  21. Está dando esse erro no meu projeto, na hora de eu salvar os dados, alguém sabe o que é esse erro e porque está acontecendo?
  22. Consegui Resolver Micheus, pesquisei esta semana e peguei um monte de ideias de muita gente na net e até exemplos, ficou assim: No Botão Baixar: procedure Tfrmalunos.SpbBaixarClick(Sender: TObject); begin if ((RdbBaixa.Checked) and (QryBaixa.RecordCount > 0)and (TxtDtPg.Text <> '')) then Begin with QryUpdate do begin Close; SQL.Clear; SQL.Add('UPDATE Lancamento'); // tabela que terá o campo atualizado SQL.Add('SET DTPGTO = '+(QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtDtPg.Text) ) ))) ); // campo a ser atualizado com valor -> parâmetro SQL.Add('WHERE aluno = '+txtmat.Text+' and Vencimento = ' + (QuotedStr(FormatDateTime('dd.mm.yyyy',(strtodate(n1) ))))); ExecSQL; // instrução UPDATE é executa com este método, não o Open; Transaction.Commit; select; end; end else showmessage('Baixa não selecionado'); exit; end; Uma Procedure no Private procedure Tfrmalunos.select; begin QryBaixa.Close; QryBaixa.SQL.Text := 'select parcela,valor,vencimento,emissao,dtpgto from lancamento where aluno = ' + txtmat.Text + 'Order By Parcela'; QryBaixa.Open; end; Declarei uma String N1 e que foi atribuido no OnCellClick procedure Tfrmalunos.dbglanCellClick(Column: TColumn); begin inherited; n1 := dbglan.Fields[2].AsString; end; Com Isso resolvi o meu problema.
×
×
  • Criar Novo...