for em componentes diferentes, para gravar em uma tabela.
Boa Noite,
Mais uma vez estou com problemas
Tenho a seguinte situação.
Preciso fazer um for, em todos os componentes do meu form, os componentes que estão visiveis eu preciso gravar em uma tabela os valores deles.
O Problema é que os componetes são de classes diferentes, e preciso inserir um por um na base.
O Código acima é só um teste, acompanhando com break, da para perceber que o edtvalor, e o edtobs recebem sempre os mesmos valores.
Tirando esse problema não sei se é possível fazer isso com um componente TDateTimePicker junto.
:?
Mais uma vez estou com problemas
Tenho a seguinte situação.
Preciso fazer um for, em todos os componentes do meu form, os componentes que estão visiveis eu preciso gravar em uma tabela os valores deles.
TDateTimePicker1 EdtValor1 EdtObs1 TDateTimePicker2 EdtValor2 EdtObs2 TDateTimePicker3 EdtValor3 EdtObs3 TDateTimePicker4 EdtValor4 EdtObs4 ... etc
O Problema é que os componetes são de classes diferentes, e preciso inserir um por um na base.
for i:=0 to Self.ComponentCount -1 do begin if Self.Components[i].ClassType = TEdit then begin if (Self.Components[i] as TEdit).Visible then begin Close; SQL.Clear; *SQL PARA INSERIR* ParamByName(´edtvalor´).AsString:= (Self.Components[i] as TEdit).Text; ParamByName(´edtobs´).AsString:= (Self.Components[i] as TEdit).Text; end; end; end;
O Código acima é só um teste, acompanhando com break, da para perceber que o edtvalor, e o edtobs recebem sempre os mesmos valores.
Tirando esse problema não sei se é possível fazer isso com um componente TDateTimePicker junto.
:?
Lynx
Curtidas 0
Respostas
Rjun
12/10/2005
Todos os componentes visuais herdam de TControl. Acho que você poderia fazer algo assim:
for i:=0 to Self.ComponentCount -1 do begin if (Self.Components[i] as TControl).Visible then begin Close; SQL.Clear; ParamByName(´edtvalor´).AsString:= (Self.Components[i] as TControl).Text; ParamByName(´edtobs´).AsString:= (Self.Components[i] as TControl).Text; end; end;
GOSTEI 0
Lynx
12/10/2005
Com TControl, não funciona o .text
GOSTEI 0
Davicarrano
12/10/2005
cara, a propriedade Text do Edit é implementada pela classe TCustomEdit que é ancestral do Edit, mas não é ancestral do TDateTimePicker....
ou seja, um component do tipo TDateTimePicker não possui essa propriedade Text.... Ele possui uma propriedade Date que não é do tipo string como a propriedade Text, ou seja armazena data mesmo, do tipo TDate...
entao eu sugiro que você faça assim...
for i:=0 to Self.ComponentCount -1 do
begin
if Self.Components[i].ClassType = TEdit then
begin
if TEdit(Self.Components[i]).Visible then
begin
Close;
SQL.Clear;
*SQL PARA INSERIR*
ParamByName(´edtvalor´).AsString:= TEdit(Self.Components[i]).Text;
ParamByName(´edtobs´).AsString:= TEdit(Self.Components[i]).Text;
end;
end;
if Self.Components[i].ClassType = TDateTimePicker then
begin
if TDateTimePicker(Self.Components[i]).Visible then
begin
Close;
SQL.Clear;
*SQL PARA INSERIR*
ParamByName(´edtvalor´).AsString:= Datetostr(TDateTimePicker(Self.Components[i]).Date);
ParamByName(´edtobs´).AsString:= DatetoStr(TDateTimePicker(Self.Components[i]).Date);
end;
end;
end;
se der certo manda a resposta....
espero ter ajudado....
um abraço...
ou seja, um component do tipo TDateTimePicker não possui essa propriedade Text.... Ele possui uma propriedade Date que não é do tipo string como a propriedade Text, ou seja armazena data mesmo, do tipo TDate...
entao eu sugiro que você faça assim...
for i:=0 to Self.ComponentCount -1 do
begin
if Self.Components[i].ClassType = TEdit then
begin
if TEdit(Self.Components[i]).Visible then
begin
Close;
SQL.Clear;
*SQL PARA INSERIR*
ParamByName(´edtvalor´).AsString:= TEdit(Self.Components[i]).Text;
ParamByName(´edtobs´).AsString:= TEdit(Self.Components[i]).Text;
end;
end;
if Self.Components[i].ClassType = TDateTimePicker then
begin
if TDateTimePicker(Self.Components[i]).Visible then
begin
Close;
SQL.Clear;
*SQL PARA INSERIR*
ParamByName(´edtvalor´).AsString:= Datetostr(TDateTimePicker(Self.Components[i]).Date);
ParamByName(´edtobs´).AsString:= DatetoStr(TDateTimePicker(Self.Components[i]).Date);
end;
end;
end;
se der certo manda a resposta....
espero ter ajudado....
um abraço...
GOSTEI 0
Massuda
12/10/2005
... ParamByName(´edtvalor´).AsString:= (Self.Components[i] as TEdit).Text; ParamByName(´edtobs´).AsString:= (Self.Components[i] as TEdit).Text; ...
GOSTEI 0
Lynx
12/10/2005
na verdade eu poderia controlar tudo, sem fazer um for nos componentes.
Mas controlando tudo vou precisar digitar o comando SQL várias vezes.
ous seja:
TDateTimePicker1 edtValor1 edtObs1
TDateTimePicke2 edtValor2 edtObs2
etc...
poderia verificar se não está em branco os componentes acima, e colocar o comando sql para inserir.
O Problema disso que preciso repetir o comando sql para cada linha, de componentes visiveis em meu form
Mas controlando tudo vou precisar digitar o comando SQL várias vezes.
ous seja:
TDateTimePicker1 edtValor1 edtObs1
TDateTimePicke2 edtValor2 edtObs2
etc...
poderia verificar se não está em branco os componentes acima, e colocar o comando sql para inserir.
O Problema disso que preciso repetir o comando sql para cada linha, de componentes visiveis em meu form
GOSTEI 0
Massuda
12/10/2005
Eu não entendi onde encaixa na estória o TDateTimePicker, mas acho que você poderia fazer algo assim...
type TMeuGrupo = record DTPicker: TDateTimePicker; EditValor: TEdit; EditObs: TEdit; end; .... const MeuGrupo: array[1..4] of TMeuGrupo = ( (DTPicker: TDateTimePicker1; EditValor: EdtValor1; EditObs: EdtObs1), ... (DTPicker: TDateTimePicker4; EditValor: EdtValor4; EditObs: EdtObs4) ); ... for I := Low(MeuGrupo) to High(MeuGrupo) do begin if MeuGrupo[I].EditValor.Visible and MeuGrupo[I].EditObs.Visible then begin SuaQuery.Close; SuaQuery.SQL.Clear; SuaQuery.SQL.Add(...) SuaQuery.ParamByName(´edtvalor´).AsString:= MeuGrupo[I].EditValor.Text; SuaQuery.ParamByName(´edtobs´).AsString:= MeuGrupo[I].EditObs.Text; ... end; end;
GOSTEI 0
Lynx
12/10/2005
Valeu Massuda, é isso ai mesmo.
Eu não estava conseguindo fazer o TDateTimePicker, ficar junto com os edit´s na hora de inserir.
Agora que você postou esse exemplo com array, já vou conseguir me virar
Obrigado mesmo :)
Eu não estava conseguindo fazer o TDateTimePicker, ficar junto com os edit´s na hora de inserir.
Agora que você postou esse exemplo com array, já vou conseguir me virar
Obrigado mesmo :)
GOSTEI 0