Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda em fazer um Update!


robinhocne

Pergunta

Bom, sei mexer pouco com esse negocio de Update, e tenho que fazer assim em um update.

Preciso salvar um campo de Observação que é da tabela de Praticas fazendo isso no form dos Alunos, então fiz assim, eu vizualizo as aulas marcadas dos alunos e tipo assim eu escolho a linha lá dá data e horario dá aula do aluno para colocar a Observação, clicando nessa linha eu mostro os seguinte campo nos edits, o campo do codigo do instrutor, categoria, data e horario da aula, ai escrevo a observação em um memo que coloquei, e salva em um outro botão só para isso, mas primeiro ele salvou em todas as aulas daquele aluno a observação e segundo ele trocou todos os horários pelo um mesmo dia do aluno, esse é o que eu fiz, preciso de ajuda de alguém....! :unsure:

Aqui eu fiz um up para cada campo, mas acho que fiz errado :huh:

procedure Tfrmalunos.SpbSalvaClick(Sender: TObject);
begin
   If (QryPratica.RecordCount > 0) then
     Begin
        with DtmIza.QryUpMemo do
           Begin
              Close;
              SQL.Clear;
              SQL.Add ('Update Praticas');
              SQL.ADD ('Set Observacao = ' + QuotedStr(MemoObs.text));
              SQL.Add ('where aluno = '+txtmat.Text);
              ExecSQL;
              Transaction.Commit;
              Select;
           end;
        end;

   If (QryPratica.RecordCount > 0) then
     Begin
        with DtmIza.QryUpIns do
           Begin
              Close;
              SQL.Clear;
              SQL.Add ('Update Praticas');
              SQL.ADD ('Set Instrutor = ' + QuotedStr(TxtIns.text));
              SQL.Add ('where aluno  = ' + txtmat.text);
              ExecSQL;
              Transaction.Commit;
              Select;
           end;
        end;

   If (QryPratica.RecordCount > 0) then
     Begin
        with DtmIza.QryUpCat do
           Begin
              Close;
              SQL.Clear;
              SQL.Add ('Update Praticas');
              SQL.ADD ('Set Categoria = ' + QuotedStr(TxtCateg.text));
              SQL.Add ('where aluno = ' + txtmat.text);
              ExecSQL;
              Transaction.Commit;
              Select;
           end;
        end;

           If (QryPratica.RecordCount > 0) then
     Begin
        with DtmIza.QryUpHora do
           Begin
              Close;
              SQL.Clear;
              SQL.Add ('Update Praticas');
              SQL.ADD ('Set Horario  = '+(QuotedStr(FormatDateTime('hh:nn',(StrToDate(TxtHor.Text) ) ))) );
              SQL.Add ('where aluno = ' + txtmat.text);
              ExecSQL;
              Transaction.Commit;
              Select;
           end;
        end;
   If (QryPratica.RecordCount > 0) then
     Begin
        with DtmIza.QryUpData do
           Begin
              Close;
              SQL.Clear;
              SQL.Add('UPDATE Praticas');
              SQL.Add('SET Data = '+(QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) ))) );
              SQL.Add('WHERE aluno = '+txtmat.Text);
              ExecSQL;
              Transaction.Commit;
              Select;
           end;
        end;

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
ai escrevo a observação em um memo que coloquei, e salva em um outro botão só para isso, mas primeiro ele salvou em todas as aulas daquele aluno a observação e segundo ele trocou todos os horários pelo um mesmo dia do aluno

OBS: o erro pode estar aqui ( SQL.Add ('Update Praticas' ) ) ele pegou a seleção pelo nome ou pela matricula e não pelo dia, por isso ele trocou todas as aulas daquele aluno.

SQL.Add('WHERE aluno = '+txtmat.Text);

mude esta clausula onde voce seleciona o registro

SQL.Add('WHERE (aluno = '+txtmat.Text + ') and (dia = ' + <colocar a data especifica >)');

abraço

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

  • 0
ai escrevo a observação em um memo que coloquei, e salva em um outro botão só para isso, mas primeiro ele salvou em todas as aulas daquele aluno a observação e segundo ele trocou todos os horários pelo um mesmo dia do aluno

OBS: o erro pode estar aqui ( SQL.Add ('Update Praticas' ) ) ele pegou a seleção pelo nome ou pela matricula e não pelo dia, por isso ele trocou todas as aulas daquele aluno.

SQL.Add('WHERE aluno = '+txtmat.Text);

mude esta clausula onde voce seleciona o registro

SQL.Add('WHERE (aluno = '+txtmat.Text + ') and (dia = ' + <colocar a data especifica >)');

abraço

Jhonas, bom deixei só um up, e fiz dessa maneira:

If (QryPratica.RecordCount > 0) then

Begin

with DtmIza.QryUpMemo do

Begin

Close;

SQL.Clear;

SQL.Add ('Update Praticas');

SQL.ADD ('Set Observacao = ' + QuotedStr(MemoObs.text));

SQL.Add ('where aluno = '+txtmat.Text +' and Data = '+(QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) )))) ;

ExecSQL;

Transaction.Commit;

Select;

Mas ele continua mudando todas as datas cadastradas pela selecionada e cadastrando em todas com a mesma data.

Obs.: Para especificar melhor tipo assim, eu teria que pegar a data e horario dá aula para cadastrar.

Link para o comentário
Compartilhar em outros sites

  • 0

vamos entender o que esta acontecendo:

SQL.ADD ('Set Observacao = ' + QuotedStr(MemoObs.text));
SQL.Add ('where aluno = '+txtmat.Text +' and Data = '+(QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) ))));

a clausula where diz que se o aluno for igual a (txtmat.Text) e a Data for igual a (QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) )))) então todos esses registros terão um Update em seus registros...

se voce que fazer um Upate em apenas um registro, este registro deve ser unico, ou seja, deve ter um campo que o valor não seja igual a um outro.

verifique com calma os registros da sua tabela.

Link para o comentário
Compartilhar em outros sites

  • 0
vamos entender o que esta acontecendo:

SQL.ADD ('Set Observacao = ' + QuotedStr(MemoObs.text));
SQL.Add ('where aluno = '+txtmat.Text +' and Data = '+(QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) ))));
a clausula where diz que se o aluno for igual a (txtmat.Text) e a Data for igual a (QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) )))) então todos esses registros terão um Update em seus registros... se voce que fazer um Upate em apenas um registro, este registro deve ser unico, ou seja, deve ter um campo que o valor não seja igual a um outro. verifique com calma os registros da sua tabela.
Consegui resolver, fiz dessa maneira:
If (QryPratica.RecordCount > 0) then
     Begin
        with DtmIza.QryUpPraticas do
           Begin
              Close;
              SQL.Clear;
              SQL.Add ('Update Praticas');
              SQL.ADD ('Set Observacao = ' + QuotedStr(MemoObs.text));
              SQL.Add ('where aluno = '+ QuotedStr(txtmat.Text) + ' and Data = '+ QuotedStr(FormatDateTime('dd.mm.yyyy',(StrToDate(TxtData.Text) ) ) ) +
                       ' and Horario = ' + QuotedStr(TxtHor.Text)  );
              ExecSQL;
              Transaction.Commit;
              Select;
           end;
        end;
    MemoObs.Text := '';

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...