Fórum ler um arquivo do excel com várias colunas e gerar filtros.. #327591
17/08/2006
0
um olá a todos...
Estou num dilema. Preciso ler um arquivo do excel com várias colunas e gerar filtros/combobox de acordo com cada coluna para que possam ser usadas como parâmetros para gerar relatórios com base nos dados desse arquivo excel.
Ao ler a 1a coluna, gera/popula uma combobox ou dblookupcombobox com os valores dessa 1a coluna para criar um filtro para seleção e assim por diante, mas tem que ser automático pois como é um arquivo exportado de outro sistema poder vir com 10, 15 colunas, pode variar a quantidade de colunas.
Preciso de ajuda, dicas ou qualquer coisa que me ajude numa solução, o mais rápido possível, pois tenho até dia 30 para apresentar um sistema que envolve esta opção. :cry:
Desde já, um grande obrigado a todos.
Alexandre.
alexandregois@yahoo.com.br
Alexandregois
Curtir tópico
+ 0Posts
17/08/2006
Jáder Medeiros
[url]http://forum.devmedia.com.br/viewtopic.php?p=263277&sid=802eb5eed557d76f694f277590abacb0#263277[/url]
Gostei + 0
17/08/2006
Alexandregois
Mas agora preciso fazer um count dessas colunas e passando os FieldName do grid para os DBLookupComboBox sequencialmente, tipo:
TDBLookupComboBox(Components[0]).ListField:= dbgrid1.Columns[0].FieldName;
TDBLookupComboBox(Components[0]).KeyField:= dbgrid1.Columns[0].FieldName;
...
TDBLookupComboBox(Components[24]).ListField:= dbgrid1.Columns[24].FieldName;
TDBLookupComboBox(Components[24]).KeyField:= dbgrid1.Columns[24].FieldName;
Estou testando um código abaixo, mas só manda para um DBLookupComboBox, os outros ficam
invisíveis e sem o listfield e o keyfield.
Tive que colocar vários DBLookupComboBox na tela, mas gostaria de criá-los em tempo de execução conforme a quantidade de colunas do excel e ir passando os valores. Essas DBLookupComboBox serão filtros para critério de busca no dataset com os dados do excel.
procedure TForm1.Button3Click(Sender: TObject);
var
i, p : Integer;
begin
for i := 0 To 24 Do
begin
for p := 0 to ComponentCount -1 do
if Components[p] is TDBLookupComboBox then
begin
TDBLookupComboBox(Components[p]).Visible:=True;
TDBLookupComboBox(Components[p]).ListField:= dbgrid1.Columns[i].FieldName;
TDBLookupComboBox(Components[p]).KeyField:= dbgrid1.Columns[i].FieldName;
end;
end;
end;
Aguardo ajuda.
Alexandre.
Gostei + 0
18/08/2006
Jáder Medeiros
var i: Integer; const LeftCombos = 2; TopCombos = 130; begin for i := 0 to DBGrid1.Columns.Count-1 do if not Assigned(FindComponent(´lkp´+DBGrid1.Columns[i].FieldName)) then with TDBLookupComboBox.Create(Self) do begin Parent := Self; Name := ´lkp´+DBGrid1.Columns[i].FieldName; Top := Round(TopCombos+Height*(1+i)); Left := LeftCombos; ListSource := DBGrid1.DataSource; ListField := DBGrid1.Columns[i].FieldName; KeyField := DBGrid1.Columns[i].FieldName end end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)