Fórum Inserir items de um ListBox em memo quebrando por nº de palavras #498480
20/10/2014
0
Olá pessoal,
Trabalho com Delphi 7 e estou tentando fazer o seguinte:
Num ListBox tenho todos os campos de uma tabela. Quero passar esses campos para um memo, mas com um detalhe, que sejam jogadas em cada linha 7 palavras, ou seja, sete campos em cada linha para compor um select.
Sendo mais claro, perciso disso:
No ListBox tenho os itens:
Campo1
Campo2
Campo3
Campo4
Campo5
Campo6
Campo7
Campo8
Campo9
Campo10
Campo11
Campo12
Campo13
Campo14
Campo15
Apóes percorrer o ListBox, no memo fique assim:
(Na linha 0) SELECT Campo1, Campo2, Campo3, Campo4, Campo5, Campo6, Campo7,
(Na linha 1) Campo8, Campo9, Campo10, Campo11, Campo12, Campo13, Campo14,
(Na linha 2) Campo15 FROM NOME_DA_TABELA
Alguém teria uma sugestão?
Grato,
Ilano.
Trabalho com Delphi 7 e estou tentando fazer o seguinte:
Num ListBox tenho todos os campos de uma tabela. Quero passar esses campos para um memo, mas com um detalhe, que sejam jogadas em cada linha 7 palavras, ou seja, sete campos em cada linha para compor um select.
Sendo mais claro, perciso disso:
No ListBox tenho os itens:
Campo1
Campo2
Campo3
Campo4
Campo5
Campo6
Campo7
Campo8
Campo9
Campo10
Campo11
Campo12
Campo13
Campo14
Campo15
Apóes percorrer o ListBox, no memo fique assim:
(Na linha 0) SELECT Campo1, Campo2, Campo3, Campo4, Campo5, Campo6, Campo7,
(Na linha 1) Campo8, Campo9, Campo10, Campo11, Campo12, Campo13, Campo14,
(Na linha 2) Campo15 FROM NOME_DA_TABELA
Alguém teria uma sugestão?
Grato,
Ilano.
Ilano Caldas
Curtir tópico
+ 0
Responder
Posts
20/10/2014
Ilano Caldas
Bom pessoal,
Fiz um negócio meio estranho, mas funcionou. Se alguém souber como melhorar, o que acredito que tenha como melhorar sim, por favor, esteja à vontade.
procedure TFrmListarCampos.BtnGerarSQLClick(Sender: TObject);
Var
I, C, F : Integer;
pCampos : String;
begin
pCampos:='';
C:=0;
F:=0;
cxListBox1.Items.Clear;
cxSQL.Lines.Clear;
For I:=0 To clbCampos.Items.Count - 1 Do
Begin
If clbCampos.Items.Items[I].Checked = True Then
C:=C + 1;
ENd;
For I:=0 To clbCampos.Items.Count - 1 Do
Begin
If clbCampos.Items.Items[I].Checked = True Then
Begin
F:=F + 1;
cxListBox1.Items.Add(clbCampos.Items.Items[I].Text);
End;
End;
F:=cxListBox1.Items.Count;
C:=0;
For I:=0 To cxListBox1.Items.Count - 1 Do
Begin
pCampos:=pCampos + cxListBox1.Items.Strings[I] + ', ';
If (C >= 7) AND (I < F) Then
Begin
cxSQL.Lines.Add(pCampos);
pCampos:='';
C:=0;
End
Else
If (C <= 7) AND (I = F - 1) Then
Begin
cxSQL.Lines.Add(LeftStr(pCampos, (Length(pCampos) - 2)));
cxSQL.Lines.Add('FROM ' + LbTabela.Caption + ' (NOLOCK)')
End;
C:=C + 1;
End;
cxSQL.Lines.Strings[0]:='SELECT TOP 1000 ' + cxSQL.Lines.Strings[0];
BtnConfirmar.Enabled:=True;
end;
Fiz um negócio meio estranho, mas funcionou. Se alguém souber como melhorar, o que acredito que tenha como melhorar sim, por favor, esteja à vontade.
procedure TFrmListarCampos.BtnGerarSQLClick(Sender: TObject);
Var
I, C, F : Integer;
pCampos : String;
begin
pCampos:='';
C:=0;
F:=0;
cxListBox1.Items.Clear;
cxSQL.Lines.Clear;
For I:=0 To clbCampos.Items.Count - 1 Do
Begin
If clbCampos.Items.Items[I].Checked = True Then
C:=C + 1;
ENd;
For I:=0 To clbCampos.Items.Count - 1 Do
Begin
If clbCampos.Items.Items[I].Checked = True Then
Begin
F:=F + 1;
cxListBox1.Items.Add(clbCampos.Items.Items[I].Text);
End;
End;
F:=cxListBox1.Items.Count;
C:=0;
For I:=0 To cxListBox1.Items.Count - 1 Do
Begin
pCampos:=pCampos + cxListBox1.Items.Strings[I] + ', ';
If (C >= 7) AND (I < F) Then
Begin
cxSQL.Lines.Add(pCampos);
pCampos:='';
C:=0;
End
Else
If (C <= 7) AND (I = F - 1) Then
Begin
cxSQL.Lines.Add(LeftStr(pCampos, (Length(pCampos) - 2)));
cxSQL.Lines.Add('FROM ' + LbTabela.Caption + ' (NOLOCK)')
End;
C:=C + 1;
End;
cxSQL.Lines.Strings[0]:='SELECT TOP 1000 ' + cxSQL.Lines.Strings[0];
BtnConfirmar.Enabled:=True;
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)