Ir para conteúdo
Fórum Script Brasil

robinhocne

Membros
  • Total de itens

    854
  • Registro em

  • Última visita

Tudo que robinhocne postou

  1. Quando eu busco ele mostra que está recebendo o valor, mas nada mostra, agora a questão,se for no form voce tem que referenciar a unit do form no QR se for no QR voce tem que referenciar a unit do QR no form, ??????????? :wacko: :mellow: :blink:
  2. Resposta: Neste ponto peço ajuda aos universitários de plantão. Pois trabalho com MySQL e não sei nada de Firebird. Tá para o caminho eu fiz simples mesmo: Coloquei: >TEdit (TxtCaminhoBanco) >SpeedButton (SpbLocBanco) >OpenDialog (OpnBanco) >IbDatabase (DbaUp) >IbQuery (QryUp) >IbTransaction (TraUp) No botão coloquei esses comandos: if ( not opnBanco.Execute ) then Exit; txtCaminhoBanco.Text := opnBanco.FileName; Toda a Estrutura: procedure TFrmIzaUpDate.SpbATualizarClick(Sender: TObject); begin DbaUp.DatabaseName := TxtCaminhoBanco.Text; DbaUp.Connected := True; with QryAtualizacao do begin close; SQL.Clear; SQL.Add('#39 + MScript + #39'); ExecSql; end; DbaUp.Connected := False; DbaUp.Connected := True; end; procedure TFrmIzaUpDate.SpeedButton1Click(Sender: TObject); begin if ( not opnBanco.Execute ) then Exit; txtCaminhoBanco.Text := opnBanco.FileName; end; end. Ai estou conectando em um banco de dados e acrescentando tipo assim: Alter Table Cidades Add Local Varchar (50) E clico no botão para atualizar, mas dá esse erro: Dynamic SQL Error SQL error code = -104 Token unknown - line, char 0 # E agora?
  3. voce tem certeza que valor1 := QrySomasLancados.FieldByName('Soma').AsFloat; está recebendo valor da QrySomasLancados ? verifique... Tenho sim, pois está assim: With QrySomasLancados do Begin QrySomasLancados.Close; QrySomasLancados.Sql.Text :='Select sum(Valor)as "SOMA" From Lancamento where cheque is not null'; QrySomasLancados.Open; end; valor1 := QrySomasLancados.FieldByName('Soma').AsFloat;
  4. no evento onprint do QrLabel Total coloque Value := FloatToStr(valor1); abraço Não aconteceu nada continua na mesma.
  5. Acho que terminei um relatório, mas ele não me mostra a soma total: Uso o Delphi 7 e Firebird 2.0 Primeiramente montei um relatório no QuickReport 4 bandas, 1> RbTitle = com o titulo de relatórios 2> RbColumnReader = especificando os dados. 3> RbDetail = com os campos que vai me mostrar no relatório, no caso me mostra: o codigo do aluno, numero do cheque, conta, agencia e data de vencimento do cheque. 4> RbSummary = com um QrLabel nome de Total, onde vai me mostrar o meu total da soma: Os dados ficaram assim: Primeiramente declarei uma variavel na public: valor1, valor2, valor3 : Real; Acrescentei uam IbQuery para a instrução do relatório, a : > DtmIza => DataModule > QryIza => IbQuery que busca os dados do relatório na tabela de lancamentos de acordo com a instrução: > QrySomasLancados => IbQuery responsavel pela soma de valores para mostrar no QrLabel (Total), Pois estou fazendo um filtro para buscar os cheques por data de vencimentos. O Relatório (QuickRep1) esta linkado ao (DtmIza.QryIza). E no botão para exibir o relatório coloquei esses dados: With DtmIza.QryRelEmp do Begin Close; Sql.Clear; Sql.Add ('Select Codigo, Empresa, Cnpj From Empresa'); Open; end; With DtmIza.QryIza Do begin Close; Sql.Clear; Sql.Add('Select Aluno, Valor, Vencimento, Pagamento, Conta, Agencia, cheque, Tipo From Lancamento'); Sql.Add('where (Vencimento >= :d1) and (Vencimento <= :d2) and cheque is not null Order By Cheque, Vencimento '); ParambyName('d1').value := FormatDateTime ('dd/mm/yyyy' , StrToDate (TxtDataInicial.Text)); ParambyName('d2').value := FormatDateTime ('dd/mm/yyyy' , StrToDate (TxtDataFinal.Text)); Open; End; If DtmIza.QryIza.RecordCount = 0 Then Begin ShowMessage('Sem dados para relatório!'); exit; End Else With QrySomasLancados do Begin QrySomasLancados.Close; QrySomasLancados.Sql.Text :='Select sum(Valor)as "SOMA" From Lancamento where cheque is not null'; QrySomasLancados.Open; end; valor1 := QrySomasLancados.FieldByName('Soma').AsFloat; With TFrmRelChequePre.Create(Application) Do Try QuickRep1.Preview; Finally Free; end; close; Pois no Evento BeforePrint da banda QrSummary onde mostra os valores eu acrescentei : procedure TFrmRelChequePre.QRBand4BeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean); begin Total.Caption := FloatToStr(valor1); end; Onde o Total é o QrLabel que me mostra o total. Mas o problema é que não mostra o resultado da soma pois aparece zero igual a imagem abaixo, pois preciso de ajuda nisso. http://www.4shared.com/file/36411957/4e2ae...ulo-1_cpia.html E ai o que será? :blink:
  6. Oi, 'robinhocne'! Não tenho acesso ao site que você enviou. Sou adepto ao quanto mais simples melhor. Se você vai executar isto no cliente sem a sua presença, então não há necessidade de floreamento. basta uma tela(label) informando que está sendo atualizado e outra que, ao fim do processamento, informe que foi atualizado. É apenas um processamento batch. Mas, vá fundo. Dê asas à sua criatividade. É a melhor coisa do mundo. Um abraço Esse projeto eu iria fazer no cliente mesmo, não iria mandar, mas andei vendo hoje e acho que vou fazer assim se possivel: Coloquei um (TFilenameEdit) do pacote do RxLib esse componente é igual o outro de caminho que comentei: -O Nome ficou como (TxtCaminhoBanco): >Então ai eu busco o banco a ser atualizado - Ok? -Coloquei um TMemo com o Nome de (MScript): >Então aqui eu iria colocar as alterações de tais tabelas - Ok? -Coloquei uma IbQuery com o Nome de (QryAtualizacao): >Ai seria mais ou menos assim na Query: procedure TFrmIzaUpDate.SpbATualizarClick(Sender: TObject); begin with QryAtualizacao do begin close; SQL.Clear; SQL.Add('#39 + MScript + #39'); ExecSql; end; end; >>No caso esse comando seria no Botão(SpbAtualizar) que vai fazer a atualização, mas ai para a QryAtualizacao saber qual mudança para fazer no banco ele ai pegaria a instrução que eu iria digitar no TMemo (MScript), mas ai ficaria como esse parte >SQL.Add('Alter Table Cliente add Nome varchar (100)');<, pois ai teria que implementar para a instrução fazer do que está escrito no MScript (TMemo), ficaria mais ou menos assim: SQL.Add('#39 + MScript + #39'); Mas outra coisa que faltou e que eu não sei fazer, no TxtCaminho eu teria que pegar o banco e conectar na query para fazer isso, como, eu faço isso para ter o caminho para a Query.
  7. Resposta: Como você quizer. Mas separado é melhor, pois você não mistura a aplicação com a atualização da aplicação. Resposta: Sim. Você poderá usar qualquer script de atualização. Resposta: Sim. Como o nome e extensão que você quizer. Resposta: Basicamente O programa de atualização pega o script de atualização, que neste caso chamarei de arquivo.sql; Lê, linha a linha, sendo que em cada linha há um comando SQL completo. E, a cada linha lida, executa a atualização necessária. De uma olhada na estrutura do projeto que seria: http://www.4shared.com/file/36318934/e1746f08/IzaUpdate.html Pois o que eu teria que ter nesse programa, digo quais componentes, estava pensando assim: Um (JvFilenameEdit1) para a localizacao do banco de dados antigo. Um (DbGrid) ou algo que eu possa vizualizar os dados alterados ou um (TMemo). Um (JvFilenameEdit2) para a localizacao do Script. Um (SpeedButton) para fazer o procedimento de atualizacao. Amigo seria assim a estrutura? depois vamos para os dados.!
  8. Oi, 'robinhocne'! Mais fácil que o exemplo que dei só assim: procedure atualiza; var F TextFile; bufer: string; begin AssignFile(F, 'C:\nomedoarquivo.sql'); Reset(F); Readln(F, buffer); while not eof(F) do begin with query1 do begin Active := False; SQL.Clear; SQL.Add(buffer); grava; end; Readln(F, buffer); end; CloseFile(F); end; procedure grava; begin Try Database.StartTansaction; query1.ExecSQL; Database.Commit; except showmessage('Deu caca na gravacao'); Database.Rollback; end; end; Como você pode observar acima, eu criei um arquivo texto contendo o script de modificações no banco e chamei este arquivo de 'arquivo.sql'. Logo depois, alterei a procedure para abrir o arquivo texto, ler o conteúdo e executar no banco a alteração. O 'arquvo.sql' possui uma instrução para linha. Mas você pode modificar para melhorar o entendimento de quem quizer ler o conteúdo do 'arquivo.sql' A vantagem deste código é que o executável pode ficar no seu cliente e você pode enviar somente o script para atualização . Outra vantagem é que posso ter uma ou N instruções SQl dentro do script. Divirta-se. Ok, Denis então me ajude do começo: 1- Eu vou fazer isso no programa ou vou fazer um programa separado? arquivo 2- Caso seja separado ou junto, fiz um form que tem um edit de busca, esse componente é dos pacotes do Jedi nome dele é JvFilenameEdit1, pois ele localiza o arquivo, ai no caso esse seria para mostrar o caminho do Script, para a atualização. 3- Esse script seria em arquivo txt no caso com o nome de "Arquivo.Sql"? 4- Me explica passo a passo para eu poder enteder melhor, pois isso é bem novo para min "Se Possivel'!
  9. Resposta: Sim em ambos os casos 1 e 2. Resposta: Não. Um form simples com apenas um botão e todo o código escrito é a melhor solução. Resposta: Sim. Seria o código de checagem para evitar que a mesma atualização fosse feita mais de uma vez. Resposta: Já fiz isso no post anterior. Pegue a idéia, transforme para seu banco Firebird e teste. Sim, mas ai eu teria que fazer isso no IbExpert e não poderia desenvolver algo que seria facil.
  10. Sim, mas como onde ? Oi, 'robinhocne'! Não sei que tipo de banco você está usando. Então vou falar de modo genérico, mas com exemplos que o guiarão melhor neste caminho. Crie um programinha delphi e coloque nele os objetos de banco que você utiliza. Neste exemplo vou usar o TQuery, mas você faça como achar melhor. De modo simples o que você necessita é uma execução para cada atualização. Assim, se tenho duas tabelas a atualizar e tenho que enviar a correção para meu cliente, então seria assim em linhas gerais que o codigo seria construido. procedure atualiza; begin with query1 do begin Active := False; SQL.Clear; SQL.Add('ALTER TABLE tabela1 ' + 'ADD COLUMN colunax char(10) NOT NULL'); grava; SQL.Clear; SQL.Add('ALTER TABLE tabela2 ' + 'ADD COLUMN colunax char(10) NOT NULL'); grava; end; end; procedure grava; begin Try Database.StartTansaction; query1.ExecSQL; Database.Commit; except showmessage('Deu caca na gravacao'); Database.Rollback; end; end; P.S. Não testei o código. O que tem aí é só para exemplificar. Um abraço. Ops... Desculpas esqueci o principal, eu uso o Firebird e as minhas conexões eu uso o componente do InterBase com um, IbDataBase, IbQuery e IbTransaction. Sim etendi, mas só não entendi uma coisa, na instrução que você passou: 1-Eu terei que colocar de cada tabela que eu vou alterar? :blink: 2-Tipo assim se eu acrescentei um campo na tabela ou fiz outra tabela, para cada isso terei que fazer na instrução? :blink: 3-Teria como ser assim, no programa que fazerei isso, eu coloquei um componene do Jedi o JvDotNetFilenameEdit1, esse componente busca o caminho do banco certo e ai (agora preciso de ajuda nessas ideias), teria um grid ou alguma coisa que mostra todas as tabelas do banco de dados, e ai eu clicava na tabela que iria atualizar e no outro canto eu teria um TMemo ou algo que vocês posso me ajudar, com os dados da tabela a ser atualizada, ai coloco os dados certo no TMemo. 4-Ai terei um botão, para que faça a toda a atualização já pegando o caminho do banco e falando que seria aquele para ser atualizado e comparando com a tabela a ser altera ou acrescetada. Então será que teria como desenvolver com essa ideia fertil minha? :rolleyes:
  11. Escreva scripts de atualização de tabelas para o seru banco. As instruções variam de banco para banco. Sim, mas como onde ?
  12. Queria saber como poderia fazer um programa extra de atualização de banco de dados, pois tipo assim: Tenho o meu programa em um comercio, ai eu faço novas atualizaçoes tanto no banco de dados, mas ai quero atualizar ele, mas o cliente já tem os dados cadastrados nele, e ai queria fazer isso sem pegar o banco de dados e ficar mexendo, queria algo que acrecentasse o que e adcionei a mais no banco olhando pelo o banco original e sem alterar os dados que estão salvos no banco de dados! Alguém poderia me ajudar! :mellow:
  13. Bom eu uso assim para mostrar formatado no meu grid, Na Query que faço a instruçao Sql eu uso o Evento AfterOpen, mas se você uso o ClientDataSet pode usar nele tbém tem o mesmo evento lá: TFloatField(NomeDaQueryouDataSet.FieldByName('NomeDoCampoNoBancoDeDadosDaTabelaAReceberAFormataçao')).DisplayFormat := 'R$ #,##0.00';
  14. e será que você lembrou de adicionar este campo à sua consulta (SQL na QryPraticas)? Resolvido Faltou colocar na Procedure STPCSLAUL ...BEGIN pOrd = 0; pCuntCatA = 0; pCuntCatB = 0; pCuntCatC = 0; pCuntCatD = 0; pCuntCatE = 0;...[/quote]Então ficou assim: [quote] CREATE PROCEDURE STPCSLAUL ( palu integer) returns ( paul numeric(3,0), pord smallint, pins smallint, pdat date, phor time, pcat char(1)) as declare variable pcuntcate integer; declare variable pcuntcatd integer; declare variable pcuntcatc integer; declare variable pcuntcatb integer; declare variable pcuntcata integer; BEGIN pOrd = 0; pCuntCatA = 0; pCuntCatB = 0; pCuntCatC = 0; pCuntCatD = 0; pCuntCatE = 0; FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria From Praticas P, Instrutores I Where P.Aluno=:pAlu AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario INTO :pIns, :pDat, :pHor, :pCat DO BEGIN pOrd = :pOrd + 1; IF (:pCat = 'A') THEN BEGIN pCuntCatA = :pCuntCatA +1; pAul = :pCuntCatA; END ELSE IF (:pCat = 'B') THEN BEGIN pCuntCatB = :pCuntCatB +1; pAul = :pCuntCatB; END ELSE IF (:pCat = 'C') THEN BEGIN pCuntCatC = :pCuntCatC +1; pAul = :pCuntCatC; END ELSE IF (:pCat = 'D') THEN BEGIN pCuntCatD = :pCuntCatD +1; pAul = :pCuntCatD; END ELSE IF (:pCat = 'E') THEN BEGIN pCuntCatE = :pCuntCatE +1; pAul = :pCuntCatE; END SUSPEND; END END E no Evento DrawColumnCell do grid que me mostra esses dados que são buscados pela procedure: procedure Tfrmpraticas.DbgRelDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); Var R : TRect; begin If Not odd(dtmiza.DtsPraticas.DataSet.RecNo) Then If Not (gdSelected in State) Then begin DbgRel.Canvas.Brush.Color:=clSkyBlue; end; if (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'A') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'B') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'D') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'E') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5) then begin DbgRel.Canvas.Font.Color:=clred; end; DbgRel.Canvas.FillRect(Rect); DbgRel.DefaultDrawDataCell(Rect, DbgRel.Columns[DataCol].Field, State); end;
  15. Bom ai eu implementei os dados no evento DrawColumnCell do DbGrid que me mostra as aulas marcadas, mas está dando esse erro: procedure Tfrmpraticas.DbgRelDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); Var R : TRect; begin if (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'A') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'B') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 15) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'D') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5) or (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'E') and (DtmIza.QryPraticas.FieldByName('pAul').AsInteger > 5) then // coloque aqui a sua query ou table begin DbgRel.Canvas.Font.Color:=clred; // define uma cor de fundo DbgRel.Canvas.FillRect(Rect); // pinta a célula DbgRel.DefaultDrawDataCell(rect,Column.Field,State); // pinta o texto padrão end; DbgRel.DefaultDrawDataCell(Rect, DbgRel.Columns[DataCol].Field, State); end;
  16. como consigo encontrar esse 'RxCtl7.res'? você tem o executavel dele é melhor instala tudo de uma vez. http://www.delphibr.com.br/baixar.php?tipo=4&id=23
  17. robinhocne, você utiliza alguma ferramenta para mexer com a estrutura do banco de dados? Tipo IBExpert, por exemplo? Sim Exatamente, eu utilizo o IbExpert para mexer no banco de dados, e estou fazendo o procedimento no Ib Mesmo
  18. Bom Andreia, o principal seria você instalar o Firebird na maquina do cliente e ai instalar o programa normal, na maquina do cliente!
  19. Micheus, fiz o procedimento no bando de dados, mas está dando erro na Declare pCuntCatA, nas declarações!
  20. Você viu o seu post que eu mencionei?Lá tem o código da Stored Procedure STPCSLAUL em seu banco. Não é dela que você obtém os dados para serem mostrados no DBGrid? Se for, o que eu queria dizer é que você poderia acrescentar mais um campo a ser retornado por ela, como você fez quando criou o campo pOrd apenas para retornar um número sequencial. A diferença é que este sequencial seria por categoria. Será que captou agora? Se não for, ignore o que eu disse até agora. Abraços Tá então seria mais ou menos assim: CREATE PROCEDURE STPCSLAUL ( palu numeric(6,0)) returns ( pord numeric(3,0), pAul Numeric (3,0), pins numeric(2,0), pdat date, phor time, pcat char(2)) as BEGIN pOrd = 0; FOR Select P.Instrutor, P.Data, P.Horario, P.Categoria From AulasPraticas P, Instrutores I Where P.Aluno=:pAlu AND P.Status=1 AND I.Codigo=P.Instrutor ORDER BY P.Data, P.Horario INTO :pIns, :pDat, :pHor, :pCat DO BEGIN pOrd = :pOrd + 1; pAul = :pAul + 1; SUSPEND; END END Mas tá então ele iria contando a aula e apartir da 16 aula ele iria começar a contar como extra e me mostrar de vermelho ?
  21. R.: Nesses Edits eu só mostro o total de aulas marcadas da respectiva categoria. R.: Não, a listagem para esse procedimento que estou tentando fazer é para as categorias B,C,D e E.É, então como está não vai rolar. :( Observe o seguinte, vamos supor que a categoria "C" tenha umas 7 aulas, então o seu TxtC.Text terá seu valor igual a "7". Certo?! Nesta condição, quando você testar: (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (StrToInt(TxtC.Text) > 5) o resultado vai ser verdadeiro e, por tanto, para cada linha a ser pintada no grid, a cor será alterada para clRed. Como resultado, você verá todo o seu grid em vermelho e não apenas os itens que ultrapassam a contagem 5. Esta contagem de excedentes é baseada na quantidade de aulas para o dia? Acho que você poderia utilizar aquela procedure que você criou no banco, para retornar estes dados no DBGrid (procedure STPCSLAUL neste post), e além de retornar o seqüencial (Ord), você poderia também retornar o número de ordem por categoria. Deste modo, supondo o nome pOrdCat, ao invés de você testar os Txt?.Text, você testaria este campo. Por ex.: (Trim(DtmIza.QryPraticas.FieldByName('pCat').AsString) = 'C') and (DtmIza.QryPraticas.FieldByName('pOrdCat').AsInteger > 5) acho que é por aí. Não são as aulas totais que tem marcadas independetemente do dia. Mas esse pOrdCat onde eu atribu-o isso? :blink: Me explica melhor!
  22. R.: Nesses Edits eu só mostro o total de aulas marcadas da respectiva categoria. R.: Não, a listagem para esse procedimento que estou tentando fazer é para as categorias B,C,D e E. Só não gostei pela a coisa ter complicado!rsrsr :wacko: Bom dei uma arrumada aqui,mas nada ainda: procedure Tfrmpraticas.DbgRelDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); Var R : TRect; begin if ( ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'A' ) and ( StrToInt( TxtA.Text ) > 15 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'B' ) and ( StrToInt( TxtB.Text ) > 15 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'C' ) and ( StrToInt( TxtC.Text ) > 5 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'D' ) and ( StrToInt( txtD.Text ) > 5 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'E' ) and ( StrToInt( txtE.Text ) > 5 ) ) ) then // coloque aqui a sua query ou table begin DbgRel.Canvas.Font.Color:=clred; DbgRel.Canvas.FillRect(Rect); DbgRel.DefaultDrawDataCell(rect,Column.Field,State); end; DbgRel.Canvas.FillRect(Rect); DbgRel.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; ? :blink: :wacko: E agora, como esta indo esse procedimento.
  23. Olá pessoal, Fiz esse procedimento, para mostrar as aulas no DbGrid. If odd( DtmIza.QryPraticas.FieldByName( 'pOrd' ).AsInteger ) then // coloque aqui a sua query ou table begin DbgRel.Canvas.Font.Color:= clBlack; DbgRel.Canvas.Brush.Color:= cl3DLight; end else begin DbgRel.Canvas.Font.Color:= clBlack; DbgRel.Canvas.Brush.Color:= clMoneyGreen; end; DbgRel.Canvas.FillRect(Rect); DbgRel.DefaultDrawColumnCell(Rect, DataCol, Column, State); } { if ( ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'A' ) and ( StrToInt( TxtA.Text ) > 15 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'B' ) and ( StrToInt( TxtB.Text ) > 15 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'C' ) and ( StrToInt( TxtC.Text ) > 5 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'D' ) and ( StrToInt( txtD.Text ) > 5 ) ) or ( ( Trim( DtmIza.QryPraticas.FieldByName( 'pCat' ).AsString ) = 'E' ) and ( StrToInt( txtE.Text ) > 5 ) ) ) then begin DbgRel.Canvas.Font.Color:= clRed; DbgRel.Canvas.FillRect(Rect); end; Então funciona o seguinte, este procedimento seria para que acima de 15 aulas da categoria de A e B que são mostradas fazendo uma contagem e mostrando nos respectivos edits, e assim 5 aulas para as categorias C,D e E. Mas ai eu marco alem das aulas para que possa mostrar no grid em vermelha, as aulas que são maiores de 15 e 5, mas ai nada faz. Um exemplo: Ord Data Horario Cat Ins 1 01/01/2008 08:00 C 1 2 01/01/2008 09:00 C 1 3 01/01/2008 10:00 C 1 4 01/01/2008 11:00 C 1 5 01/01/2008 12:00 C 1 6 01/01/2008 08:00 C 1 7 01/01/2008 08:00 C 1 Então seria assim, marco as 5 aulas e apartir da 6 do tal dia e horario ele mostra no grid em vermelho
×
×
  • Criar Novo...