Como gravar usando SQL?

Delphi

28/07/2006

Boa tarde amigos Delphianos, gostaria de saber como gravar em SQL este codigo

dm.TBconta.Last;
    ProxNum:=dm.TBconta.FieldByName(´sequencia´).AsInteger +1;
    dm.TBconta.Append;
    dm.TBconta.Edit;
    dm.TBconta.FieldByName(´sequencia´).AsInteger:=ProxNum;
    dm.TBconta.fieldbyname(´contad´).value:=e1.text;
    dm.TBconta.fieldbyname(´numcontad´).value:=et1.text;
    dm.TBconta.fieldbyname(´nomecd´).value:=label12.caption;
    dm.TBconta.fieldbyname(´numconta´).value:=et1.text;
    dm.TBconta.fieldbyname(´nomeCONTA´).value:=label12.caption;
    dm.TBconta.fieldbyname(´valord´).value:=e3.text;
    dm.TBconta.fieldbyname(´valor´).value:=e3.text; //valor fixo p/calculo soma
    dm.TBconta.fieldbyname(´conta´).value:=e1.Text;
    dm.TBConta.FieldByName(´DC´).value:=´D´;
    dm.TBconta.fieldbyname(´descricao´).value:=r1.text;
    dm.tbconta.fieldbyname(´data´).value:=maskedit1.text;
    DM.tbconta.FieldByName(´dataextenso´).value:=uppercase(formatdatetime(´MMMM´,(STRTODATE(Maskedit1.TEXT)))
    +´ / ´+formatdatetime(´YYYY´,(STRTODATE(MaskEdit1.TEXT))));
    DM.tbconta.FieldByName(´mes´).value:=uppercase(formatdatetime(´MM´,(STRTODATE(Maskedit1.TEXT))));
    DM.tbconta.FieldByName(´ANO´).value:=uppercase(formatdatetime(´YYYY´,(STRTODATE(Maskedit1.TEXT))));
    dm.TBconta.fieldbyname(´historico´).value:=r1.text;
    dm.TBconta.POST;
    //-grava credito--------------
    dm.TBconta.Append;
    dm.TBconta.Edit;
    aguardedadoson;
    dm.TBconta.FieldByName(´sequencia´).AsInteger:=ProxNum;
    dm.TBconta.fieldbyname(´contac´).value:=e2.text;
    dm.TBconta.fieldbyname(´numcontac´).value:=et2.text;
    dm.TBconta.fieldbyname(´nomecc´).value:=label13.caption;
    dm.TBconta.fieldbyname(´numconta´).value:=et2.text;
    dm.TBconta.fieldbyname(´nomecONTA´).value:=label13.caption;
    dm.TBconta.fieldbyname(´valorc´).value:=e3.text;
    dm.TBconta.fieldbyname(´valor´).value:=e3.text; //valor fixo p/calculo soma
    dm.TBconta.fieldbyname(´conta´).value:=e2.Text;
    dm.TBConta.FieldByName(´DC´).value:=´C´;
    dm.TBconta.fieldbyname(´descricao´).value:=r1.text;
    dm.tbconta.fieldbyname(´data´).value:=maskedit1.text;
    DM.tbconta.FieldByName(´dataextenso´).value:=uppercase(formatdatetime(´MMMM´,(STRTODATE(Maskedit1.TEXT)))
     +´ / ´+formatdatetime(´YYYY´,(STRTODATE(MaskEdit1.TEXT))));
    DM.tbconta.FieldByName(´mes´).value:=uppercase(formatdatetime(´MM´,(STRTODATE(Maskedit1.TEXT))));
    DM.tbconta.FieldByName(´ANO´).value:=uppercase(formatdatetime(´YYYY´,(STRTODATE(Maskedit1.TEXT))));
    dm.TBconta.fieldbyname(´historico´).value:=r1.text;
    dm.TBconta.POST;


Mudar pra essi

with dm.qtbcontalan do
    begin
    close;
    sql.clear;
    SQL.Add(´Insert into qtbcontalan (sequencia, contad,nomecd, numconta, nomeconta, valord,
    valor, conta, dc, descricao, data, dataextenso, mes, ano, historico) values (´+´´´´+edit1.Text+´´´´+´) ´);
ExecSQL;



Veja bem num quero que ninguem fassa o SQL só me explicar como coloco o que esta dentro do edit nos campos igaul essi

dm.TBconta.fieldbyname(´numcontac´).value:=et2.text;

me sql como seria?

Outra coisa gravo em dupicidade estes campos tem como fazer em SQL tambem, e esti outro campo como gravarei em SQL

DM.tbconta.FieldByName(´dataextenso´).value:=uppercase(formatdatetime(´MMMM´,(STRTODATE(Maskedit1.TEXT)))
+´ / ´+formatdatetime(´YYYY´,(STRTODATE(MaskEdit1.TEXT))));
DM.tbconta.FieldByName(´mes´).value:=uppercase(formatdatetime(´MM´,(STRTODATE(Maskedit1.TEXT))));
DM.tbconta.FieldByName(´ANO´).value:=uppercase(formatdatetime(´YYYY´,(STRTODATE(Maskedit1.TEXT))));


Agora antes de fazer o codigo SQL a pergunta, compensa gravar usando o insert into ou usar o ttable mesmo?


Jlimajr

Jlimajr

Curtidas 0

Respostas

Paullsoftware

Paullsoftware

28/07/2006

voce pode criar os valores como parametros tipo:
´values (:Campo1, :Campo2, :CampoN)´;
ParamByName(´Campo1´).AsString := Edit1.Text;
ParamByName(´Campo2´).AsString := Edit2.Text;
ParamByName(´CampoN´).AsString := EditN.Text;

depois da o ExecSql; espero ter ajudado :wink:


GOSTEI 0
Jlimajr

Jlimajr

28/07/2006

Entendi colega, muito bom, agora a pergunta, é melhor usar ou seja incluir usando SQL ou usando da forma que está acima tipo append e depois post


GOSTEI 0
Paullsoftware

Paullsoftware

28/07/2006

Entendi colega, muito bom, agora a pergunta, é melhor usar ou seja incluir usando SQL ou usando da forma que está acima tipo append e depois post

Creio que as duas maneiras são corretas, porém até onde sei os comandos SQL são processados de forma mais rápida sem contar que os dados são gravados direto no banco...


GOSTEI 0
Jlimajr

Jlimajr

28/07/2006

No caso preciso usar commit e rollback tambem em SQL?

to usando firebird 1.5 delphi 5.0


GOSTEI 0
Jlimajr

Jlimajr

28/07/2006

opa esqueci de mencionar qui tambem uso a aba interbase com ibquery, ibtransaction e ibtable.

e o applyupdates(0) naum sei pra que serve.

desculpe sou iniciante.


GOSTEI 0
Raserafim

Raserafim

28/07/2006

applyupdates é uma função do ClientDataSet que grava os dados para o Banco de Dados. entre parênteses é o parâmetro que é especificado quantos erros são permitidos.

ex: se fizer assim: if ClientDataSet.ApplyUpdates(0) then

quer dizer que se a atualização ocorrer sem nenhum erro então...


GOSTEI 0
POSTAR