Comando INSERT em mais de uma linha!?!?
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 ????
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
Curtidas 0
Melhor post
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:
Pode quebrar o insert em qq canto, pq, assim como em delphi, tanto faz se você escrever
e
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.
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
02/12/2003
Colega,
Na prática, você poderia fazer da sequinte forma:
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.
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
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:
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]
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
02/12/2003
Colega,
Mais fácil ainda, veja o exemplo:
Mais fácil ainda, veja o exemplo:
Query1.SQL.Text := Memo1.Lines.Text;
GOSTEI 0
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;
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