Dividir coluna de tabela e duas no dbgrigd
Pessoal boa tarde!
Preciso muito da ajuda de vcs, tenho tabela que os dados estão da seguinte forma:
Campo1 Campo2
teste1 2
teste1 3
teste1 4
teste2 1
teste2 3
teste2 4
Preciso mostrar no dbgrid da seguinte forma:
Campo1 Campo2 Campo1 Campo2
teste1 2 teste2 1
teste1 3 teste2 3
teste1 4 teste2 4
Ou seja, preciso dividir uma coluna da tabela em duas do dbgrid, não se como fazer.
Uso D7 e FB1.5
Obrigado.
Marcelo
Marcelo Vieira
Curtidas 0
Respostas
Marcelo Vieira
09/07/2011
Será que nínguem sabe?
GOSTEI 0
Marcelo Vieira
09/07/2011
Ninguem mesmo??????????
GOSTEI 0
Eduardo Marcolongo
09/07/2011
Boa tarde.
Acho que com DBGrid vc não consiga, não pode ser stringgrid ?
Acho que com DBGrid vc não consiga, não pode ser stringgrid ?
GOSTEI 0
Thiago Mury
09/07/2011
Realmente, em um DBGrid não irá conseguir fazer isso. Como o Eduardo disse você pode usar o StringGrid. Mas terá que carregar manualmente as informações.
GOSTEI 0
Marcelo Vieira
09/07/2011
Estou tentando com o ListView, podem dar alguem exemplo, no caso do dbgrid, será que não tem nenhuma instrução em SQL que faça isto?
Obrigado.
Marcelo
GOSTEI 0
Marco Salles
09/07/2011
O DEvEXpress tem uma gird que faz exatamente isto.. Não sei se nos componentes da Jedi tem esta Grid.
acredito que vale a pena dar uma procurada
acredito que vale a pena dar uma procurada
GOSTEI 0
Marcelo Vieira
09/07/2011
O DevExpress é pago e o JEDI segundo o que vi não funciona com o RXLIB e preciso dele, ainda acho que dá pra fazer com os componentes nativos ou com alguma instrução sql.
Continuo atrás da solução.
Obrigado.
Marcelo
GOSTEI 0
Marcelo Vieira
09/07/2011
Alguém tem mais alguma sugestão?
Marcelo
GOSTEI 0
Carlos Catanduva
09/07/2011
Será q não daria pra vc fazer usando duas Querys? Uma retornaria "x" consula e a outra "y" consulta.....seria bem na gambiarra mais se vc precisa fazer o q.....
Bom se conseguir posta ai pra gente q pode ser util para alguem em algum momento
Abraço
GOSTEI 0
Marcelo Vieira
09/07/2011
Pois é amigo, é o que estou tentando mas até agora nenhuma instrução sql me retornou o resultado que preciso, tentei tb com o listview e quase me deu o resultado, mas até o momento nada.
Marcelo
GOSTEI 0
Marcelo Vieira
09/07/2011
Pessoal, ainda procuro a solução!!!!!!
Marcelo
GOSTEI 0
Marco Salles
09/07/2011
Vc conhece o componente DBCtrlGrid ???
Formatando ele devidamente , vc consegue sem digitar praticamente nada este efeito que vc quer obter
Fiz aqui rapidinho sem nenhuma formatação Zero praticamente
Formatando ele devidamente , vc consegue sem digitar praticamente nada este efeito que vc quer obter
Fiz aqui rapidinho sem nenhuma formatação Zero praticamente
GOSTEI 0
Marcelo Vieira
09/07/2011
Amigo, não consegui o resultado, me informe as configurações e se vc usou vários DBCtrlGrids com dbedits ligados a eles, outra coisa as colunas variam de quantidade, ou seja, em determinados momentos podem haver 10 ou 20.
Na verdade é um sistema para auto escola onde na tabela de horários de aulas eu tenho todos os horários do dia com respectivo veículo então aparece assim na tabela:
campo hora aula campo veiculo
07:00 corsa
...
21:00 corsa
07:00 pálio
...
21:00 pálio
Então tenho que montar um grid onde os véiculo aparecam não verticalmente nos seus horário mas sim horizontalmente cada um, e só pego os veículos tem agendamentos os que não tem não aparecem, por isto as colunas podem aumentar ou diminuir de quantidade. Preciso assim:
campo hora aula campo veiculo campo hora aula campo veiculo
07:00 corsa 07:00 pálio
... ... ... ...
21:00 corsa 21:00 pálio
Obrigado.
Marcelo
GOSTEI 0
Marco Salles
09/07/2011
O
DBCtrlGrid é um Container de Componentes DataWare ... Nas minhas configuraçoes eu adicioneu DOIS Dbedit ao DbCtrlGrid ... Os Demais que vc vê na figura é de responsabilidade do Contaiber de Instancia-los e destrui-los , tudo automaticamente sem nenhuma intervenção.. A dica foi colocar esses dois DbEdits com a propriedade Align para que ocupe toda a posição a direira e a esquerda de uma Coluna do DbCtrlGrid;; Inicialmente determinei duas colunas para o DbCtrlGrid e cinco Linha para o mesmo e dimensionei a largura dessas colunas com o Padrão da Largura dos
DbEdits ... A cada inserção é criado dois novos DbEdits
Outra dica é Indexar de modo correto a sua GRID para que os dados apresentados fiquem na Ordem que vc quer
Imagine vir 07:00 Hrs na primeira coluna , depois 10:00 Hrs e volta 07:00 enfim apresentação dos dados de forma desordenada
Se vc observar o meu exemplo verá por se tratar de dois campos Strings eles não estão defidamente ordenados ... Isto é 10 e menor do que 2 ( por de tratar de String)
Baseado neste passos simples acredito que vc consiga resolver seu proplema
DbEdits ... A cada inserção é criado dois novos DbEdits
Outra dica é Indexar de modo correto a sua GRID para que os dados apresentados fiquem na Ordem que vc quer
Imagine vir 07:00 Hrs na primeira coluna , depois 10:00 Hrs e volta 07:00 enfim apresentação dos dados de forma desordenada
Se vc observar o meu exemplo verá por se tratar de dois campos Strings eles não estão defidamente ordenados ... Isto é 10 e menor do que 2 ( por de tratar de String)
Baseado neste passos simples acredito que vc consiga resolver seu proplema
GOSTEI 0
Marcelo Vieira
09/07/2011
Veja bem, no dbgrid eu consigo este efeito:
Só que no lugar onde consta a segunda coluna do palio preciso que apareça outro veículo entendeu, quando ao dbctrlgrid, tentei mas deu o mesmo resultado, estou tentando com outros componentes, como listview ou stringgrid. Acho que como o dbgrid está ligado à consulta ele para no último registro e repete o mesmo várias vezes, que é o número de veículos que consta na tabela.
Veja o código.
ibqVeiculos.Close;
ibqVeiculos.Params[0].Value := Date;
ibqVeiculos.Open;
ibqVeiculos.First; while not ibqVeiculos.Eof do
begin
ibqBuscaAgenda.Close;
ibqBuscaAgenda.Params[0].Value := Date;
ibqBuscaAgenda.Params[1].Value := ibqVeiculosPLACA.Value;
ibqBuscaAgenda.Open; DBGrid1.Columns.Add.Field := ibqBuscaAgendaDT_AULA;
DBGrid1.Columns.Add.Field := ibqBuscaAgendaHORA_INICIAL;
DBGrid1.Columns.Add.Field := ibqBuscaAgendaVEICULO;
DBGrid1.Columns.Add.Field := ibqBuscaAgendaNOME_ALUNO;
ibqVeiculos.Next;
end; Marcelo
ibqVeiculos.Params[0].Value := Date;
ibqVeiculos.Open;
ibqVeiculos.First; while not ibqVeiculos.Eof do
begin
ibqBuscaAgenda.Close;
ibqBuscaAgenda.Params[0].Value := Date;
ibqBuscaAgenda.Params[1].Value := ibqVeiculosPLACA.Value;
ibqBuscaAgenda.Open; DBGrid1.Columns.Add.Field := ibqBuscaAgendaDT_AULA;
DBGrid1.Columns.Add.Field := ibqBuscaAgendaHORA_INICIAL;
DBGrid1.Columns.Add.Field := ibqBuscaAgendaVEICULO;
DBGrid1.Columns.Add.Field := ibqBuscaAgendaNOME_ALUNO;
ibqVeiculos.Next;
end; Marcelo
GOSTEI 0
Marco Salles
09/07/2011
eu acho que com o listview ou stringgrid vc consegue.. MAs com o dbctrlgrid vc também consegue
È porque vc não esta Indexando corretamante
A idéia é indexar de modo que fique
campo hora aula campo veiculo campo hora aula campo veiculo 07:00 corsa 07:00 pálio ... ... ... ... 21:00 corsa 21:00 pálio
Olha a indexação .... Vc indexa por dois campos .. O Data e o Hora
Assim na mesma linha do dbctrlgrid vai aparecer os REgsitros que tenha a mesma Data e também a mesma Hora
È porque vc não esta Indexando corretamante
A idéia é indexar de modo que fique
campo hora aula campo veiculo campo hora aula campo veiculo 07:00 corsa 07:00 pálio ... ... ... ... 21:00 corsa 21:00 pálio
Olha a indexação .... Vc indexa por dois campos .. O Data e o Hora
Assim na mesma linha do dbctrlgrid vai aparecer os REgsitros que tenha a mesma Data e também a mesma Hora
GOSTEI 0
Marcelo Vieira
09/07/2011
Está indexado pela hora pois não busco várias datas, e sim apenas a selecinada.
Marcelo
GOSTEI 0
Marco Salles
09/07/2011
Está indexado pela hora pois não busco várias datas, e sim apenas a selecinada.
Marcelo
Então pelo DbCntrlGrid vc consegue.. Porque se vc o Divide em duas colunas , a primeira e a segunda coluna a ser prenchida sera
07:00 ... Um Carro .... Outro Carro
GOSTEI 0
Marcelo Vieira
09/07/2011
Ele para no último registro, não aparece os outros carros, veja:
Os dbedits só é possivel colocar na primeira coluna, não é isto mesmo ou tem alguma outra configuração?
GOSTEI 0
Marco Salles
09/07/2011
A imagem sua não esta com boa resolução ... Não da para enxergar e consequentemente entender o que vc esta querendo dizer
Mas deixa claro que so tem DbEdits na primeira coluna ... Isto é estranho ...Ele deve preencher a primeira e a segunda coluna respectivamente como eu mostrei com a minha imagem
Coloque o Wiew as Text do DFM para ver coom vc esta configurando este DbCtrlGrid
Mas deixa claro que so tem DbEdits na primeira coluna ... Isto é estranho ...Ele deve preencher a primeira e a segunda coluna respectivamente como eu mostrei com a minha imagem
Coloque o Wiew as Text do DFM para ver coom vc esta configurando este DbCtrlGrid
GOSTEI 0
Marcelo Vieira
09/07/2011
Marco, primeiramente obrigado pela ajuda, mas consegui resolver com o stringgrid, veja o resultado como ficou, agora só falta algumas formatações, segue tb o código:
var
I, J : Integer;
begin
ibqHorarios.Close;
ibqHorarios.Open; ibqHorarios.First; I := 1;
while not ibqHorarios.eof do
begin
StringGrid2.Cells[0,0] := 'H. INICIAL';
StringGrid2.Cells[1,0] := 'H. FINAL';
StringGrid2.Cells[0,I] := TimeToStr(ibqHorariosHORA_INICIAL.Value);
StringGrid2.Cells[1,I] := TimeToStr(ibqHorariosHORA_FINAL.Value);
I := I + 1;
StringGrid2.RowCount := I + 0;
ibqHorarios.Next;
end; ibqVeiculos.Close;
ibqVeiculos.Params[0].Value := Date;
ibqVeiculos.Open; ibqVeiculos.First; while not ibqVeiculos.Eof do
begin ibqBuscaAgenda.Close;
ibqBuscaAgenda.Params[0].Value := Date;
ibqBuscaAgenda.Params[1].Value := ibqVeiculosPLACA.Value;
ibqBuscaAgenda.Open; ibqBuscaAgenda.First;
I := 1;
J := StringGrid1.ColCount;
While not ibqBuscaAgenda.eof do
Begin
StringGrid1.Cells[J,0] := 'VEÍCULO';
StringGrid1.Cells[j,I] := ibqBuscaAgendaVEICULO.Value;
I := I + 1;
StringGrid1.RowCount := I + 0;
StringGrid1.ColCount := J + 1;
ibqBuscaAgenda.Next;
End;
ibqBuscaAgenda.First;
I := 1;
J := StringGrid1.ColCount;
While not ibqBuscaAgenda.eof do
Begin
StringGrid1.Cells[J,0] := 'ALUNO';
StringGrid1.Cells[j,I] := ibqBuscaAgendaNOME_ALUNO.Value;
I := I + 1;
StringGrid1.RowCount := I + 0;
StringGrid1.ColCount := J + 1;
ibqBuscaAgenda.Next;
End; ibqBuscaAgenda.First;
I := 1;
J := StringGrid1.ColCount;
while not ibqBuscaAgenda.eof do
begin
StringGrid1.Cells[J,0] := 'INSTRUTOR';
StringGrid1.Cells[j,I] := ibqBuscaAgendaNOME_INSTRUTOR.Value;
I := I + 1;
StringGrid1.RowCount := I + 0;
StringGrid1.ColCount := J + 1;
ibqBuscaAgenda.Next;
end; ibqVeiculos.Next;
end;
I, J : Integer;
begin
ibqHorarios.Close;
ibqHorarios.Open; ibqHorarios.First; I := 1;
while not ibqHorarios.eof do
begin
StringGrid2.Cells[0,0] := 'H. INICIAL';
StringGrid2.Cells[1,0] := 'H. FINAL';
StringGrid2.Cells[0,I] := TimeToStr(ibqHorariosHORA_INICIAL.Value);
StringGrid2.Cells[1,I] := TimeToStr(ibqHorariosHORA_FINAL.Value);
I := I + 1;
StringGrid2.RowCount := I + 0;
ibqHorarios.Next;
end; ibqVeiculos.Close;
ibqVeiculos.Params[0].Value := Date;
ibqVeiculos.Open; ibqVeiculos.First; while not ibqVeiculos.Eof do
begin ibqBuscaAgenda.Close;
ibqBuscaAgenda.Params[0].Value := Date;
ibqBuscaAgenda.Params[1].Value := ibqVeiculosPLACA.Value;
ibqBuscaAgenda.Open; ibqBuscaAgenda.First;
I := 1;
J := StringGrid1.ColCount;
While not ibqBuscaAgenda.eof do
Begin
StringGrid1.Cells[J,0] := 'VEÍCULO';
StringGrid1.Cells[j,I] := ibqBuscaAgendaVEICULO.Value;
I := I + 1;
StringGrid1.RowCount := I + 0;
StringGrid1.ColCount := J + 1;
ibqBuscaAgenda.Next;
End;
ibqBuscaAgenda.First;
I := 1;
J := StringGrid1.ColCount;
While not ibqBuscaAgenda.eof do
Begin
StringGrid1.Cells[J,0] := 'ALUNO';
StringGrid1.Cells[j,I] := ibqBuscaAgendaNOME_ALUNO.Value;
I := I + 1;
StringGrid1.RowCount := I + 0;
StringGrid1.ColCount := J + 1;
ibqBuscaAgenda.Next;
End; ibqBuscaAgenda.First;
I := 1;
J := StringGrid1.ColCount;
while not ibqBuscaAgenda.eof do
begin
StringGrid1.Cells[J,0] := 'INSTRUTOR';
StringGrid1.Cells[j,I] := ibqBuscaAgendaNOME_INSTRUTOR.Value;
I := I + 1;
StringGrid1.RowCount := I + 0;
StringGrid1.ColCount := J + 1;
ibqBuscaAgenda.Next;
end; ibqVeiculos.Next;
end;
GOSTEI 0
Marco Salles
09/07/2011
Com o StringGrid dá para fazer , o inconveniente é o Nest que vc tem que fazer
Com o DbCntrGrid do jeito que esta sua Grade também dá para fazer
Enfim que bom que vc resolveu
Com o DbCntrGrid do jeito que esta sua Grade também dá para fazer
Enfim que bom que vc resolveu
GOSTEI 0