REVELAR

Fórum Problemas com inserçao de registros #322332

27/05/2006

0

ola.
To usando este codigo aqui para antes de inserir um registro em uma tabela cdsMsg, este codigo e suposto de checar se o mesmo ja esta inserido.Mas vale lembrar que o mesmo nome pode estar inserido , desde q o email seje outro ou mesmo se o nome e o email sao iguais o status do cliente for diferente pode ser inserido:

  if not cdsMsg.Locate(´Nome´,lstClientes.Items[lstClientes.ItemIndex],[]) then
   Begin
    frmMain.ClientDataSet1.Locate(´Nome´,lstClientes.Items[lstClientes.ItemIndex],[]);
    Nome := frmMain.ClientDataSet1.FieldByName(´Nome´).AsString;
    Email := frmMain.ClientDataSet1.FieldByName(´Email´).asString;
    Status := frmMain.ClientDataSet1.FieldByName(´Status´).asString;
    Msg := lstMsg.Items[lstMsg.ItemIndex];
    if  not frmMain.cdsEnviados.Locate(´Nome´,Nome,[]) then
     Begin
      cdsMsg.Insert;
      cdsMsg.FieldByName(´Nome´).asString := Nome;
      cdsMsg.FieldByName(´Email´).AsString := Email;
      cdsMsg.FieldByName(´Msg´).AsString := Msg;
      cdsMsg.FieldByName(´dtEnvio´).AsString := DateToStr(Date);
      cdsMsg.FieldByName(´Status´).asString := Status;
      cdsMsg.Post;
     End
    Else
     Begin
       //encontrou registro q ja foi mandado.//aqui eu checo se o email e difrente, mas acontece q o fieldbyname(email) ta vindo vazio , mesmo no banco estando preenchido dai ele grava de novo
       if frmMain.cdsEnviados.FieldByName(´Email´).AsString <> Email then
        Begin
          cdsMsg.Insert;
          cdsMsg.FieldByName(´Nome´).asString := Nome;
          cdsMsg.FieldByName(´Email´).AsString := Email;
          cdsMsg.FieldByName(´Msg´).AsString := Msg;
          cdsMsg.FieldByName(´dtEnvio´).AsString := DateToStr(Date);
          cdsMsg.FieldByName(´Status´).asString := Status;
          cdsMsg.Post;
        End
       Else
        Begin
          //é o  mesmo email a mesma pessoa
          if frmMain.cdsEnviados.FieldByName(´Status´).AsString <> Status then
           Begin
            cdsMsg.Insert;
            cdsMsg.FieldByName(´Nome´).asString := Nome;
            cdsMsg.FieldByName(´Email´).AsString := Email;
            cdsMsg.FieldByName(´Msg´).AsString := Msg;
            cdsMsg.FieldByName(´dtEnvio´).AsString := DateToStr(Date);
            cdsMsg.FieldByName(´Status´).asString := Status;
            cdsMsg.Post;
           End//do if status
          Else
           Begin
            MessageDlg(´Este cliente já recebeu esta mensagem este mês.´, mtInformation, [mbOK], 0);
           End;
        End;//do else email
     End;//do else do if do locate do nome pra ver se ja foi enviado
   End
  Else
   Begin
    MessageDlg(´Este Cliente já foi inserido.´, mtInformation, [mbOK], 0);
   End;

[/code]


Ecptavares

Ecptavares

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar