Clube da Programação e Hardware

Tutorial, dicas, Programação, Hardware entre outros assuntos.
 
InícioInício  CalendárioCalendário  FAQFAQ  BuscarBuscar  MembrosMembros  GruposGrupos  Registrar-seRegistrar-se  Login  

Compartilhe | 
 

 Botão gravar [Resolvido]

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
Douglas_fc



Mensagens : 4
Data de inscrição : 15/09/2012

MensagemAssunto: Botão gravar [Resolvido]   Sab Set 15, 2012 8:26 am

bom dia galera

tenho um aduvida eu usava muito post, edit e não tinha problemas mais resolvi mudar usar SQL mesmo ai onde fiquei na duvida.

O botão gravar é o mesmo pra gravar a inclusão e a edição como seria a logica pra quando eu incluir ele leia o sql de insert e na edição leia o update, em relação o codigo tranquilo do insert e update o negocio é a logica pra usar um ou o outro.



Última edição por Douglas_fc em Seg Set 24, 2012 4:01 pm, editado 1 vez(es)
Voltar ao Topo Ir em baixo
Ver perfil do usuário
volverine



Mensagens : 12
Data de inscrição : 28/01/2011

MensagemAssunto: Re: Botão gravar [Resolvido]   Sab Set 15, 2012 10:34 am

Para INSERIR

Código:
query1.close;
query1.SQL.Clear;
query1.SQL.Add('INSERT INTO NOME DA TABELA');
query1.SQL.Add('( CAMPOS DA TABELA QUE VAO RECEBER VALORES SEPARADOS POR VIRGULA )');
query1.SQL.Add('VALUES');
query1.SQL.Add('( NOVAMENTE OS CAMPOS DA TABELA QUE VÃO RECEBER VALORES MAS COM :NOME )');
query1.SQL.Parameters.parambyname('NOME DO CAMPO').value:= DADO P/ INCLUSAO;
query1.SQL.execsql;

Para ALTERAR

Código:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('UPDATE TABELA SET CAMPO=:PAR1 WHERE id = 2');
query1.Parameters.parambyname('PAR1').value := EDIT1.Text;
query1.SQL.execsql;

Para DELETAR

Código:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('Delete * from TABELA WHERE id = 1');
query1.execsql;

sendo o 1 uma variavel,ok.

É só Adaptar ai.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Douglas_fc



Mensagens : 4
Data de inscrição : 15/09/2012

MensagemAssunto: Re: Botão gravar [Resolvido]   Sab Set 15, 2012 12:07 pm

essa parte eu a sei a minha duvida é

se eu uso um botão pra gravar tanto insert como update como saber qual operação to fazendo alterando ou incluindo essa éa duvida, pensei em criar um variavel mais não sei como fazer
Voltar ao Topo Ir em baixo
Ver perfil do usuário
volverine



Mensagens : 12
Data de inscrição : 28/01/2011

MensagemAssunto: Re: Botão gravar [Resolvido]   Sab Set 15, 2012 2:16 pm

Douglas_fc escreveu:
essa parte eu a sei a minha duvida é

se eu uso um botão pra gravar tanto insert como update como saber qual operação to fazendo alterando ou incluindo essa éa duvida, pensei em criar um variavel mais não sei como fazer

explique melhor o que vc quer fazer?

esta rotia é pra um frmulario certo?

neste formulario é de cadastro ou alteração?
ou os dois em um só?

no formulario ou formulario vc usa edit ou dbedit?

na questão do Botão vc deseja que o mesmo botão faça insert e o update?

O comando SQL “UPDATE” permite modificar dados de um ou mais registros. o insert é para inserir dados usando“INSERT” e depois alterá-los com “UPDATE”.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Douglas_fc



Mensagens : 4
Data de inscrição : 15/09/2012

MensagemAssunto: Re: Botão gravar [Resolvido]   Seg Set 17, 2012 2:53 pm


o meu formulario é de cadastro seria assim

botões

[novo] [gravar] [editar]

no meu botão gravar ele tanto vai gravar um insert quanto o update

então vou ter os dois codigos

insert

update

quando eu for gravar como o sistema vai entender que estou gravando uma alteração ou uma inclusão???


Voltar ao Topo Ir em baixo
Ver perfil do usuário
volverine



Mensagens : 12
Data de inscrição : 28/01/2011

MensagemAssunto: Re: Botão gravar [Resolvido]   Ter Set 18, 2012 8:58 pm

Douglas_fc escreveu:

o meu formulario é de cadastro seria assim

botões

[novo] [gravar] [editar]

no meu botão gravar ele tanto vai gravar um insert quanto o update

então vou ter os dois codigos

insert

update

quando eu for gravar como o sistema vai entender que estou gravando uma alteração ou uma inclusão???




Bém pelo que eu entendi deste o inicio do post, vc disse que conhece a codificação
usando sql.

e vc relata que no mesmo botão gravar, vc quer que seja executado o insert ou update.

vc quer saber como o sistema vai interpretar se é pra executar um ou outro.

neste caso é logica de programação!.


um exemplo:


Código:
try
          with qrylocal do
          begin
            close;
            sql.clear;
            sql.add (' select * from centrocustoind          ');
            sql.add (' where idclientes = :cod                ');
            sql.add (' and cdcentrocustoind = :pidcentrocusto ');
            parambyname ('cod').asinteger:= varcadclie;
            parambyname ('pidcentrocusto').asstring := dm.centrocusto.FieldByName('cdcentrocusto').asstring;
            open;
            if (isempty) then
            begin
              sql.clear;
              sql.add (' insert into centrocustoind                    ');
              sql.add (' (idclientes, idempresas, cdcentrocustoind,    ');
              sql.add (' descricaocentroind, tipocentroind)            '); // TIPOCENTROIND
              sql.add (' values(                                      ');
              sql.add (' :idclientes, :idempresas, :cdcentrocustoind,  ');
              sql.add (' :descricaocentroind, :tipocentroind)          ');
            end else
            begin
              sql.clear;
              sql.add (' update centrocustoind set                    ');
              sql.add (' idclientes            = :idclientes,        ');
              sql.add (' idempresas            = :idempresas,        ');
              sql.add (' cdcentrocustoind      = :cdcentrocustoind,  ');
              sql.add (' descricaocentroind    = :descricaocentroind, ');
              sql.add (' tipocentroind          = :tipocentroind      ');
              sql.add (' where (idclientes      = :idclientes)        ');
              sql.add ('  and (cdcentrocustoind = :cdcentrocustoind)  ');
            end;
            parambyname('idclientes').asinteger        := varcadclie;
            parambyname('idempresas').asinteger        := strtoint(frmprincipal.lblidempr.caption);
            parambyname('cdcentrocustoind').asstring  := dm.centrocusto.FieldByName('cdcentrocusto').asstring;
            parambyname('descricaocentroind').asstring := descricaocentro.text;
            parambyname('tipocentroind').asstring    := '1';
            execsql; //executa um dois dois comandos insert ou update
            dm.connection.commit; 
          end;
         
        except
        on e:Exception do
          begin
            raise exception.Create('Erro! Não foi possível alterar os dados.');
            dm.connection.Rollback;
            application.terminate;
            exit;
          end;
        end;



Explicando o código.

Primeiro vc faz um select para saber se tem os campos que esta sendo passado via parametro no banco de dados,
se não tiver como mostra o ISEMPTY, vc pode reparar é feito um INSERT (via sql) dos dados.
agora o ELSE vai ver se o ISEMPTY for NOT então faz um UPDATE (via sql).
e por final voce pode ver que passa os dados dos EDITS, LABELS ETC para o parametro.

Logo em seguida executo o EXECSQL (depende do componente) e commito as transações com o banco.
tudo esta envolvido no bloco try/except caso der erro entra no except e da um ROLLBACK. na tabela.

é isto basta ajustar ai na sua aplicação.

caso o exemplo tenha resolvido pra vc, no incio do topico no tiulo e acrescente para (Resolvido)

se não exponha as duvidas se ainda tiver,ok.
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Douglas_fc



Mensagens : 4
Data de inscrição : 15/09/2012

MensagemAssunto: Re: Botão gravar [Resolvido]   Seg Set 24, 2012 4:01 pm

era exatamente o q eu tava querendo valeu mesmo!!
Voltar ao Topo Ir em baixo
Ver perfil do usuário
Conteúdo patrocinado




MensagemAssunto: Re: Botão gravar [Resolvido]   Hoje à(s) 5:12 am

Voltar ao Topo Ir em baixo
 
Botão gravar [Resolvido]
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» [RESOLVIDO] Dinâmica de água
» [Resolvido]Problema com terreno acidentado
» [Resolvido] Como saber qual objeto esta mais perto?
» [Resolvido] Criptografar Imagem
» [Resolvido]Salvar sprite como gif animado durante o jogo

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Clube da Programação e Hardware :: PROGRAMAÇÃO :: Delphi-
Ir para: