Comando INSERT em mais de uma linha!?!?

Delphi

02/12/2003

Pessoal,

em um cadastro via SQL, como procedo para ter meu comando insert em mais de uma linha (continuacao do comando uma linha abaixo da outra) para evitar que a linha de comando seja muito extensa??? Imaginem se possuo o cadastro de 50 campos, isso se torna impossível executar em apenas uma única linha.. muitos caracteres..

como procedo ? faço minha inclusao da seguinte forma....

Query1.Active := False;
Query1.SQL.Clear;
Query1.Sql.Add(´insert into tabela1 (nome, cidade, endereco, .... values (´+´´´´+editNome.text+´´´´+´,´+´´´´+editCidade.text+´´´´+´,´ .....)

uso o q para continuar na linha de baixo ????


Ce

Ce

Curtidas 0

Melhor post

Deus

Deus

03/12/2003

Não se preocupe, não há problema ao utilizar comandos em mais de uma linha em SQL. Você pode tranquilamente usar:

Query1.Active := False; 
Query1.SQL.Clear; 
Query1.Sql.Add(´insert into tabela1 (nome, cidade, endereco, ´);
Query1.Sql.Add(´campo2, campo3, campo 4, .... )´);
Query1.Sql.Add(´values (´ + ´´´´ + editNome.text + ´´´´, ... ); 


Pode quebrar o insert em qq canto, pq, assim como em delphi, tanto faz se você escrever

if (i > 10) then
begin
  doSomething;
  doSomethingelse;
end
else
begin
  doThis;
  doThat;
end


e

if (i > 10) then begin doSomething; doSomethingelse; end
else begin doThis; doThat; end


Pq, no final das contas, o compilador não vai se importar com quebras de linha nem nada, o que realmente importa é se a sintaxe está correta.

Espero ter ajudado! :) Abraços, dEUS.


GOSTEI 1

Mais Respostas

Aroldo Zanela

Aroldo Zanela

02/12/2003

Colega,

Na prática, você poderia fazer da sequinte forma:

Query1.Active := False;
Query1.SQL.Clear;
Query1.Sql.Add(´insert into tabela1 (nome, cidade,´+
´endereco, .... values (´+´´´´+editNome.text+´´´´+´,´+´´´´+editCidade.text+´´´´+´,´ .....)


Ou seja, fechar o delimitador ´´´ e adicionar um operador de concatenação ´+´, passar para o outra linha e abrir o delimitador ´´´.
Mas a utilização do método ADD vai facilitar a leitura do fonte e evitar problema de estouro de string.


GOSTEI 0
Ce

Ce

02/12/2003

OK Aroldo !! Funcionou 100¬ .. obrigado..
mas.. e se tiver um campo memo ? como faço para inserir os dados do memo no meu insert ? Tenho declarado o Memo na tabela como tipo TEXT .. mas e no form, como faço para gravar ?


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

Na prática, você poderia fazer da sequinte forma:

Query1.Active := False;
Query1.SQL.Clear;
Query1.Sql.Add(´insert into tabela1 (nome, cidade,´+
´endereco, .... values (´+´´´´+editNome.text+´´´´+´,´+´´´´+editCidade.text+´´´´+´,´ .....)


Ou seja, fechar o delimitador ´´´ e adicionar um operador de concatenação ´+´, passar para o outra linha e abrir o delimitador ´´´.
Mas a utilização do método ADD vai facilitar a leitura do fonte e evitar problema de estouro de string.[/quote:f42d8e2c0c]


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

02/12/2003

Colega,

Mais fácil ainda, veja o exemplo:

  Query1.SQL.Text := Memo1.Lines.Text;



GOSTEI 0
Cristiane.spl

Cristiane.spl

02/12/2003

tente assim
WITH DM.qrytabela1 DO
BEGIN
CLOSE;
SelectSQL.Clear;
SelectSQL.Add(´INSERT INTO tabela1´);
SelectSQL.Add(´(CAMPO1,CAMPO2,CAMPO3)´);
SelectSQL.Add(´VALUES´);
SelectSQL.Add(´(´´´+edtCAMPO1+´´´,´);
SelectSQL.Add(´´´´+edtCAMPO2+´´´,´);
SelectSQL.Add(´´´´+edtCAMPO3+´´´)´);
ExecSQL;
END;


GOSTEI 0
POSTAR