Fórum Jogar dados automaticamente no banco cfe.preenchimento edits #336060

12/01/2007

0

Bom dia pessoal, bom eu gostaria de saber se tem como eu fazer com que doze edits de valores jogarem o resultado para os doze meses do ano:
Exemplo
Tenho uma tabela com os campos ano, data, historico, valor
entao minha ideia seria no form selecionar o ano e o historico e nessas 12 edits colocar os valores depois num button ele jogar para os devidos meses do ano automaticamente tipo assim
2007---31/01/2007------pg.mensalidade n/mes--------40,00
2007---28/02/2007------pg.mensalidade n/mes--------40,00
...
...
...

Ou seja os meses que eu preencher no edit vao para o banco de dados sem eu precisar gravar mes a mes, penso eu que talvez seja feito isso com um IF nos edits tipo if edit1.text <> ´´ then, nao sei, gostaria primeiro da opiniao do pessoal se tem como fazer isso.

Grato
Adriano


Adriano_servitec

Adriano_servitec

Responder

Posts

12/01/2007

Aroldo Zanela

Colega,

Por favor, coloque a estrutura de sua tabela.


Responder

Gostei + 0

12/01/2007

Adriano_servitec

[quote:0a78db940c=´Aroldo Zanela´]Colega,

Por favor, coloque a estrutura de sua tabela.[/quote:0a78db940c]

Vai ser em firebird 2.0

ano varchar (4),
data date,
historico varchar(100),
conta varchar (15),
contred varchar (5),
valor numeric 15,2

e talvez algo mais que vou ter que colocar nela

Obrigado por me ajudar amigo


Responder

Gostei + 0

12/01/2007

Aroldo Zanela

Colega,

Primeiramente, crie uma nova aplicação e copie o código abaixo e solte sobre o formulário (isso vai criar os componentes):

object edtAno: TEdit
  Left = 10
  Top = 32
  Width = 121
  Height = 21
  TabOrder = 0
end
object edtHistorico: TEdit
  Left = 135
  Top = 32
  Width = 371
  Height = 21
  TabOrder = 1
end
object edtValorPadrao: TEdit
  Left = 134
  Top = 70
  Width = 121
  Height = 21
  TabOrder = 2
end
object lblAno: TLabel
  Left = 12
  Top = 18
  Width = 19
  Height = 13
  Caption = ´Ano´
end
object lblHistorico: TLabel
  Left = 135
  Top = 18
  Width = 41
  Height = 13
  Caption = ´Hist´#243´rico´
end
object lblValor: TLabel
  Left = 68
  Top = 74
  Width = 60
  Height = 13
  Caption = ´Valor padr´227´o´
end
object edtJaneiro: TEdit
  Tag = 1
  Left = 134
  Top = 98
  Width = 121
  Height = 21
  TabOrder = 3
end
object edtFevereiro: TEdit
  Tag = 2
  Left = 134
  Top = 125
  Width = 121
  Height = 21
  TabOrder = 4
end
object edtMarco: TEdit
  Tag = 3
  Left = 134
  Top = 151
  Width = 121
  Height = 21
  TabOrder = 5
end
object edtAbril: TEdit
  Tag = 4
  Left = 134
  Top = 178
  Width = 121
  Height = 21
  TabOrder = 6
end
object edtMaio: TEdit
  Tag = 5
  Left = 134
  Top = 204
  Width = 121
  Height = 21
  TabOrder = 7
end
object edtJunho: TEdit
  Tag = 6
  Left = 134
  Top = 231
  Width = 121
  Height = 21
  TabOrder = 8
end
object edtJulho: TEdit
  Tag = 7
  Left = 134
  Top = 257
  Width = 121
  Height = 21
  TabOrder = 9
end
object edtAgosto: TEdit
  Tag = 8
  Left = 134
  Top = 284
  Width = 121
  Height = 21
  TabOrder = 10
end
object edtSetembro: TEdit
  Tag = 9
  Left = 134
  Top = 310
  Width = 121
  Height = 21
  TabOrder = 11
end
object edtOutubro: TEdit
  Tag = 10
  Left = 134
  Top = 337
  Width = 121
  Height = 21
  TabOrder = 12
end
object edtNovembro: TEdit
  Tag = 11
  Left = 134
  Top = 363
  Width = 121
  Height = 21
  TabOrder = 13
end
object edtDezembro: TEdit
  Tag = 12
  Left = 134
  Top = 390
  Width = 121
  Height = 21
  TabOrder = 14
end
object lbl1: TLabel
  Left = 78
  Top = 104
  Width = 49
  Height = 299
  Alignment = taRightJustify
  Caption = 
    ´Janeiro´#13101310´Fevereiro´13101310´Mar´231´o´13101310´Abril´13101310´Maio´13101310´Junho´13101310´Julho´ +
    #13101310´Agosto´13101310´Setembro´13101310´Outubro´13101310´Novembro´13101310´Dezembro´
end
object btnCarregar: TButton
  Left = 260
  Top = 68
  Width = 75
  Height = 25
  Caption = ´&Carregar´
  TabOrder = 15
  OnClick = btnCarregarClick
end
object btnGravar: TButton
  Left = 340
  Top = 68
  Width = 75
  Height = 25
  Caption = ´&Gravar´
  TabOrder = 16
  OnClick = btnGravarClick
end
object cdsDados: TClientDataSet
  Active = True
  Aggregates = <>
  Params = <>
  Left = 582
  Top = 18
  Data = {
    7E0000009619E0BD0100000018000000040000000000030000007E0003416E6F
    010049000000010005574944544802000200040009486973746F7269636F0100
    490000000100055749445448020002003200034D657304000100000000000556
    616C6F72080004000000010007535542545950450200490006004D6F6E657900
    0000}
  object cdsDadosAno: TStringField
    FieldName = ´Ano´
    Size = 4
  end
  object cdsDadosHistorico: TStringField
    FieldName = ´Historico´
    Size = 50
  end
  object cdsDadosMes: TIntegerField
    FieldName = ´Mes´
  end
  object cdsDadosValor: TCurrencyField
    FieldName = ´Valor´
  end
end
object dsDados: TDataSource
  DataSet = cdsDados
  Left = 580
  Top = 82
end
object dbgrd1: TDBGrid
  Left = 262
  Top = 100
  Width = 417
  Height = 311
  DataSource = dsDados
  TabOrder = 17
  TitleFont.Charset = DEFAULT_CHARSET
  TitleFont.Color = clWindowText
  TitleFont.Height = -11
  TitleFont.Name = ´MS Sans Serif´
  TitleFont.Style = []
end


Agora, pegue este código e coloque na Unit (código pascal):
procedure TForm1.btnCarregarClick(Sender: TObject);
var i, n: SmallInt;
begin
  N := ComponentCount;
  for I := 0 to N-1 do
  begin
    if (Components[I] is TEdit) then
      if (Components[I] as TEdit).Tag > 0 then
        (Components[I] as TEdit).Text := edtValorPadrao.Text;
  end;
end;

procedure TForm1.btnGravarClick(Sender: TObject);
var i, n: SmallInt;
begin
  N := ComponentCount;


  for I := 0 to N-1 do
  begin
    if (Components[I] is TEdit) then
      if (Components[I] as TEdit).Tag > 0 then
      begin

        cdsDados.Append;
        cdsDadosAno.Value         := edtAno.Text;
        cdsDadosHistorico.Value   := edtHistorico.Text;
        cdsDadosMes.Value         := (Components[I] as TEdit).Tag;

        Case (Components[I] as TEdit).Tag of
          1: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          2: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          3: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          4: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          5: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          6: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          7: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          8: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          9: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          10: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          11: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
          12: cdsDadosValor.Value    := StrToCurrDef((Components[I] as TEdit).Text, 0);
        end;
        cdsDados.Post;
      end;

  end;

end;



Responder

Gostei + 0

12/01/2007

Adriano_servitec

Olah [b:6d7d12185c]Aroldo Zanela[/b:6d7d12185c]

Primeiramente muito obrigado pela ajuda.

CDSDados eh um DataSet? Se for pode ser um IBQuery ou um IBTable no lugar?

Outra coisa amigo da erro na hora de compilar
[color=red:6d7d12185c][Error] Unit9.pas(85): Undeclared identifier: ´StrToCurrDef´[/color:6d7d12185c]

Estou usando o Delphi 5 :(


Responder

Gostei + 0

12/01/2007

Adriano_servitec

Tive que tirar o [b:e6e78ff3d0]StrToCurrDef[/b:e6e78ff3d0] acho que nao aceita no Delphi 5
Case (Components[I] as TEdit).Tag of
          1: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          2: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          3: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          4: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          5: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          6: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          7: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          8: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          9: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          10: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          11: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);
          12: cdsDadosValor.Value    := StrToCurr((Components[I] as TEdit).Text);

Agora soh faltou a duvida sobre o ClientDataSet, nunca usei esse componente, ele grava aonde amigo? depois devo jogar esses valores para um query? Vou utilizar tambem um Storedprocedure que eu criei que grava junto com um query.

Na parte do dbgrid esta perfeito, ficou muito bom o resultado.

Obrigado amigo
Abraços
Adriano.


Responder

Gostei + 0

12/01/2007

Aroldo Zanela

Colega,

O CDS é ClientDataSet e pode ser substituido por qualquer descendente de TDataSet ou você pode mudar de acordo com o seu padrão de programação.


Responder

Gostei + 0

12/01/2007

Adriano_servitec

[quote:b6b3e2c530=´Aroldo Zanela´]Colega,

O CDS é ClientDataSet e pode ser substituido por qualquer descendente de TDataSet ou você pode mudar de acordo com o seu padrão de programação.[/quote:b6b3e2c530]

Mais uma pergunta amigo, esse componente CDS ele grava temporario?

Se eu quiser continuar usando ele depois tem como jogar no banco de dados?

Outra coisa amigo, como incluir mais campos no CDS?

Desculpe perguntar, mais nao conheço esse componente :oops:


Responder

Gostei + 0

12/01/2007

Truck1n

Boa tarde,

Acho que isto pode ajudar vc!!

http://www.clubedelphi.net/artigos/ClientDataSet.asp


Abraços!


Responder

Gostei + 0

12/01/2007

Adriano_servitec

Valeu amigo, muito obrigado.

Agora estou entendendo melhor sobre CDS.


Responder

Gostei + 0

12/01/2007

Truck1n

Opa,

CDS não mais é do que a Abreviação do nome Clientdataset
Ex: 
cdsnome = ClientDataSet
edtnome = editnome
btnnome = buttonnome
...
lblnome = labelnome



Até mais!!!

abraços!


Responder

Gostei + 0

12/01/2007

Adriano_servitec

Valeu amigo,

Agora continuando sobre o codigo
Coloquei 12 checkbox de acordo com a TAG do edit para marcar quais edits devem ser preenchidos
procedure TFTodoMes.btnCarregarClick(Sender: TObject);
var
  i, n: SmallInt;
begin
  N := ComponentCount;
  for I := 0 to N-1 do
  begin
    if (Components[I] is TEdit) then
      if (Components[I] as TEdit).Tag > 0 then
      begin
        if (FindComponent(´Checkbox´+IntToStr((Components[I] as TEdit).Tag)) As tCheckBox).Checked then
        (Components[I] as TEdit).Text := edtValorPadrao.Text;
      end;
  end;
end; 
Bom esta funcionando certinho

O que eu preciso eh saber se tem como gravar no banco somente referente aos edits preenchidos, pois desta forma esta dando erro
´IS NOT A VALID FLOATING POInT VALUE´

Grato pela ajuda.
Adriano


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar