Pesquisar na Comunidade
Showing results for tags 'clientdataset'.
Encontrado 7 registros
-
Bom dia pessoal. Estou iniciando com o lazarus e gostaria de saber o que usar no lugar do clientdataset do delphi 7? Lembrando que o ClientDataSet não segura a conexão com o servidor, além de ter o evento onReconcilieError que gerencia transações concomitantes que possam estar ocorrendo no servidor no mesmo registro. @Daniel Simoes e @Juliomar Marchetti quais componentes vocês utilizam? Desde já agradeço a todos.
- 11 replies
-
- clientdataset
- lazarus
-
(e 1 mais)
Tags:
-
ClientDataSet com problema no filtro
um tópico no fórum postou cmonteiro Object Pascal - Delphi & Lazarus
Tenho um ClientDataSet com filter = ' saldo > 0 ' que está dando o erro "Type mismatch in expression" . mas isso só ocorre no Delphi 10.4 Sydney, no Delphi 7 funciona perfeitamente. Alguém tem ideia do que pode ser? o campo é tipo Extended-
- delphi 10.4
- clientdataset
-
(e 1 mais)
Tags:
-
Arredondamento em campos Aggregate no ClientDataSet
um tópico no fórum postou Mariana Tamy Object Pascal - Delphi & Lazarus
Boa tarde gente, tudo bem? Me falta um pouco de conhecimento sobre o ClientDataSet, procurei em tudo quanto é lugar e não encontrei a solução, espero que alguém possa me dar uma luz. Seguinte, tenho um ClientDataSet com um campo como Float, fkInternalCalc e com a mascara #,##0.00. Nesse campo os valores estão sendo arredondados, mas no Aggregate Field a soma (usei SUM no exp) é feito sem o arredondamento. Exemplo: Tenho 2 item com valor de 35.9450 No meu DbGrid aparece 35.95, a soma daria 71.90, mas no Aggregate aparece 71.89... Eu vi em um post que > 5 arredonda para cima = 5 mantem < 5 arredonda para baixo Mas no meu caso, eu só coloquei a mascara #,##0.00 no DisplatFormat e ele está arredondando sozinho dessa forma. Tentei usar o Currency = True para ambos, também tentei mudar o campo de Float para Currency e deu na mesma. Então, pelo o que eu li no forum não deveria arredondar o valor para 35.95, mas ele está fazendo isso... Com apenas dois itens a diferença é pouca, mas quando são tipo uns 56 itens a diferença fica grande. Alguém poderia me dar uma luz? -
Problema com Cliente Data Set
um tópico no fórum postou Isaias_Souza Dúvidas não relacionadas ao ACBr
Olá comunidade do ACBR, Tudo bem com vocês? Então vim aqui procurar um socorro porque estou com um problema que vem me tirando o sossego , o problema é bem simples imagino,mas não sei o que posso estar fazendo errado,já que sou iniciante em Delphi. Descrição do problema : Precisei usar um ClienteDataSet em meu projeto em determinada tela , e nas condições que os erros se apresentam já descobri que o erro está no CDS, pois em testes que executei aqui quando eu não o crio não ocorre estes erros. Trechos do código - Criação: 1 2 3 4 5 6 procedure TF_FinContaReceber.FormShow(Sender: TObject); begin Cds_Lanc.CreateDataSet; Cds_Lanc.Open; {...} end; - Fechando o Form: 1 2 3 4 5 6 7 8 9 10 11 procedure TF_FinContaReceber.FormClose(Sender: TObject; var Action: TCloseAction); begin Cds_Lanc.Close; {...} Action := caFree; end; procedure TF_FinContaReceber.FormDestroy(Sender: TObject); begin F_FinContaReceber := nil; end; Propriedades do ClientDataSet: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 object Cds_Lanc: TClientDataSet Aggregates = <> AggregatesActive = True FieldDefs = <> IndexDefs = <> Params = <> StoreDefs = True OnCalcFields = Cds_LancCalcFields Left = 32 Top = 389 object Cds_LancSequencialLanc: TIntegerField FieldName = 'SequencialLanc' end object Cds_Lancflag: TStringField DisplayLabel = 'X' FieldName = 'flag' Size = 1 end object Cds_LancVencimento: TDateField FieldName = 'Vencimento' end object Cds_LancCodEnti: TIntegerField FieldName = 'CodEnti' end object Cds_LancEntidadeNome: TStringField FieldName = 'EntidadeNome' Size = 67 end object Cds_LancReferencia: TStringField FieldName = 'Referencia' Size = 65 end object Cds_LancValor: TFloatField DefaultExpression = '0' FieldName = 'Valor' DisplayFormat = '#,###,###,##0.00' end object Cds_LancJuros: TFloatField DefaultExpression = '0' FieldName = 'Juros' DisplayFormat = '#,###,###,##0.00' end object Cds_LancDesconto: TFloatField DefaultExpression = '0' FieldName = 'Desconto' DisplayFormat = '#,###,###,##0.00' end object Cds_LancValorReceber: TFloatField DefaultExpression = '0' FieldKind = fkInternalCalc FieldName = 'ValorReceber' DisplayFormat = '#,###,###,##0.00' end object Cds_LancSelecTotal: TFloatField FieldKind = fkInternalCalc FieldName = 'SelecTotal' DisplayFormat = '#,###,###,##0.00' end object Cds_LancSelecJuros: TFloatField FieldKind = fkInternalCalc FieldName = 'SelecJuros' DisplayFormat = '#,###,###,##0.00' end object Cds_LancSelecDesc: TFloatField FieldKind = fkInternalCalc FieldName = 'SelecDesc' DisplayFormat = '#,###,###,##0.00' end object Cds_LancSelecValor: TFloatField FieldKind = fkInternalCalc FieldName = 'SelecValor' DisplayFormat = '#,###,###,##0.00' end object Cds_LancVendaCod: TIntegerField FieldName = 'VendaCod' end object Cds_LancDataPagto: TDateField FieldName = 'DataPagto' end object Cds_LancParcela: TStringField FieldName = 'Parcela' Size = 6 end object Cds_LancDataEmissao: TDateField FieldName = 'DataEmissao' end object Cds_LancFormaPagto: TStringField FieldName = 'FormaPagto' Size = 40 end object Cds_LancCPFCNPJ: TStringField FieldName = 'CPFCNPJ' Size = 32 end object Cds_LancDocumento: TStringField FieldName = 'Documento' Size = 15 end object Cds_LancTotValor: TAggregateField FieldName = 'TotValor' Active = True DisplayName = '' DisplayFormat = '#,###,###,##0.00' Expression = 'Sum(SelecValor)' end object Cds_LancTotReceber: TAggregateField FieldName = 'TotReceber' Active = True DisplayName = '' DisplayFormat = '#,###,###,##0.00' Expression = 'Sum(SelecTotal)' end object Cds_LancTotDesc: TAggregateField FieldName = 'TotDesc' Active = True DisplayName = '' DisplayFormat = '#,###,###,##0.00' Expression = 'Sum(SelecDesc)' end object Cds_LancTotJuros: TAggregateField FieldName = 'TotJuros' Active = True DisplayName = '' DisplayFormat = '#,###,###,##0.00' Expression = 'Sum(SelecJuros)' end end Somente postei estes trechos de código porque os erros que serão mostrados já ocorrem quando eu apenas abro e fecho o formulário em questão. Então é isso ,se alguém me ajudar ficarei muito agradecido,como dito anteriormente,sou iniciante em Delphi e mesmo que possa ser um problema básico ainda não tenho conhecimento necessário para resolvê-lo. -
aggregate Campos aggregate em rumtime no clientdataset
um tópico no fórum postou Fabrício Melo Object Pascal - Delphi & Lazarus
Compartilhando essa classe que achei no site do Marcos Salles, pra quem gosta de usar campos aggregate no DataSet, essa função é uma mão na roda pois não precisamos mais cria-los, só chamar a função e passar o campo que queremos totalizar. -- unit UTypeAggregate; //https://marcosalles.wordpress.com/2011/01/30/criacao-de-campos-aggregates-rumtime-clientdataset/ interface uses DBClient, SysUtils; Type TypeAggregateERROR = class(Exception); TAggregateRetorne = (ftSomar,ftMaxima,ftContar,FtMedia); TOperacoes =class class function Retornar(ClientDataSet:TClientDataSet; Const cField:String; Tipo:TAggregateRetorne):String; end; implementation { TOperacoes } class function TOperacoes.Retornar(ClientDataSet: TClientDataSet; const cField: String; Tipo: TAggregateRetorne): String; begin try //ATENÇÃO: NÃO DEIXE O CAMPO TRAZER VALORES NULO NA PESQUISA DO SQL, ERRO NO CALCULO with ClientDataSet do begin case Tipo of ftSomar: begin AggregatesActive := False; if Aggregates.Find('SOMAR_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Sum('+cField+')'; AggregateName := 'SOMAR_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('SOMAR_'+ cField).Value; end; ftMaxima: begin AggregatesActive := False; if Aggregates.Find('MAXIMA_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Max('+cField+')'; AggregateName := 'MAXIMA_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('MAXIMA_'+ cField).Value; end; ftContar: begin AggregatesActive := False; if Aggregates.Find('CONTAR_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Count('+cField+')'; AggregateName := 'CONTAR_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('CONTAR_'+ cField).Value; end; ftMedia: begin AggregatesActive := False; if Aggregates.Find('MEDIA_'+ cField) = nil then with Aggregates.Add do begin Expression := 'Avg('+cField+')'; AggregateName := 'MEDIA_'+ cField; Active := True; end; AggregatesActive := True; Result := Aggregates.Find('MEDIA_'+ cField).Value; end; end; end; except on e:Exception do raise TypeAggregateERROR.Create('Erro na Totalização.'+sLineBreak+ 'Verifique se o campo contém valores NULO ou se o DataSet esta inativo'+ sLineBreak+ E.Message); end; end; end. Ex: FSUB_TOTAL_A := StrToFloatDef(TOperacoes.Retornar(cdsItensRateio, cdsItensRateioVALOR_TOTAL_A.FieldName, ftSomar), 0); FSUB_TOTAL_B := StrToFloatDef(TOperacoes.Retornar(cdsItensRateio, cdsItensRateioVALOR_TOTAL_B.FieldName, ftSomar), 0); -
Bom dia, Caros amigos, quero compartilhar convosco um problema que esta ocorrendo aqui comigo, tenho um seguinte cenário: Uso Banco de Dados FireBird usando a seguinte arquitetura de acesso aos dados: FDQuery + DatasetProvider + ClientDataSet. Obs uso delphi berlin up1. Bem o que está acontecendo em alguns clientes é seguinte, as vezes os campos entram como "NULL" no banco de dados, sendo que os valores foram informados na aplicação, inclusive os campos chave primária, estou utilizando os midas.dll atualizado que vem junto com o delphi na pasta bin, também utilizo as fbclient.dll atualizado que vem junto com o firebird 2.5. Alguém já passou por isto? tem alguma dica? Para evitar problemas mais sério, tive que mapear os campos de extrema importância no banco e deixar como not null. para assim poder levantar uma exception na aplicação... Uma coisa interessante é que, no BDS2006 usando DBExpress não tinha este tipo de problema, depois que migrei para XE + FireBird 2.5 começou este problema, ele não ocorre com frequência não, e nem em todos os clientes...!
-
- clientdataset
- midas
-
(e 1 mais)
Tags:
-
Provavel Bug No Clientdataset Delphixe7
um tópico no fórum postou William Mattos Object Pascal - Delphi & Lazarus
Olá a todos, Peço Desculpas se estou postando na area errada. Recentemente estive testando o Delphi XE7 , e me deparei com um provável bug. gostaria que alguém que tivesse o Delphi XE7 , pudesse fazer um teste para realmente constatar se é um bug do delphi ou uma anormalidade apenas na minha IDE, pois pesquisei e não achei nada relacionado na Internet. O bug e o seguinte, Aparentemente o ClientDataSet esta com um problemas com os agreggates , estou postando um print-screen para relatar melhor. Percebam que tenho alguns valores filtrados da minha database no dbgrid, porém o SUM não esta funcionando corretamente, apresenta um valor completamente errado. o mesmo exemplo compilado no Delphi XE2 funciona perfeitamente. Se alguem puder testar em sua maquina e postar aqui o resultado , ou souber de uma solução para isso , ficaria grato pela resposta. Obs: - Utilizo Delphi XE7 Update 1 - Windows 7 - Tenho o Delphi XE2 Instalado na maquina também. - Eu não realizei o procedimento ao instalar 2 IDE's http://isaquesp.blogspot.com.br/2011/09/varias-versoes-do-delphi-instaladas-sem.html , simplismente instalei as duas IDE's e as utilizei ( será que poderia ser isso? ) att William Mattos