Ajuda Table.Last - Mancada da Borland, MS, ou minha?

Iniciado por cebolaaa, 09 de Fevereiro , 2008, 09:53:22 AM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

cebolaaa

Ola. Seguinte pessoal, fiz um code q funciona pra pegar no ultimo registro de uma table o valor de um campo seu, somar + 1 a este, e jogar num edit.

Ta, funciona? SIM, logico q funciona,,, porem, as veses, da pau... ele joga no registro Last ta tabela, so q nao retorna valor algum do campo, sendo q se vc abrir a DB vc ve la q o registro em last em seu campo pedido ta com valor sim....

olha ae:

...

If AdoQrySearchCliByCod.FieldByName('Codigo').AsString = EdtCodCli.Text Then
        Begin
          AdoQrySearchCliByCod.Close;
          CBoxTipoEmissao.Enabled := False;
          BtnConfirmaCodCliCompra.Caption := 'OK!';
          EdtCodCli.Enabled := False;
          CBTypeOfPayment.Enabled := False;
          MECodCheque.Enabled := False;
          MECodCartao.Enabled := False;
          If EdtCodOs.Text = '' Then
            Begin
              DataModule1.ATComprasEfetuadas.Close;
              DataModule1.ATComprasEfetuadas.Open;
              DataModule1.ATComprasEfetuadas.Last;
              If DataModule1.ATComprasEfetuadas.FieldByName('NumNota').AsString = '' Then
                Begin
                  VNumNotaSTR := '0';
                  VNumNotaDB := StrToCurr(VNumNotaSTR);
                  VNumNotaDB := VNumNotaDB + 1;
                  VNumNotaSTR := CurrToStr(VNumNotaDB);
                  EdtCodOs.Text := VNumNotaSTR;
                  DataModule1.ATComprasEfetuadas.Close;
                  Exit;
                end
              Else If  DataModule1.ATComprasEfetuadas.FieldByName('NumNota').AsString <> '' Then
                Begin
                  //QdoQrySearchNumNota.Close;
                  //qdoqrysearchnumnota.open;
                  //QdoQrySearchNumNota.Last;
                  //QdoQrySearchNumNota.ExecSQL;
                  //VNumNotaSTR := QdoQrySearchNumNota.FieldByName('NumNota').AsString; {OBS:. Na DB este campo tem que ser iniciado com o valor "0".}
                  VNumNotaSTR := DataModule1.ATComprasEfetuadas.FieldByName('NumNota').AsString;
                  VNumNotaDB := StrToCurr(VNumNotaSTR);
                  VNumNotaDB := VNumNotaDB + 1;
                  VNumNotaSTR := CurrToStr(VNumNotaDB);
                  EdtCodOs.Text := VNumNotaSTR;
                  //QdoQrySearchNumNota.Close;
                  DataModule1.ATComprasEfetuadas.Close;
                  Exit;
                end;
            end;
        end
...

ta,,, entao, ele fecha tabela, dps abre, dps da um LASt pra pegar o ultimo reg,,, ai ve se existe de fato um ultimo reg, se nao tiver nenhum reg, ele cria um, se tiver, ele pega o valor do campo e soma + 1....

so q as veses o access nao retorna o valor msm tendo,,, sera q eh pau dele, do delphi ou eu fiz algo errado ae em cima?

ty, t+