Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Fallo en el refresh de una ADOTable (https://www.clubdelphi.com/foros/showthread.php?t=93972)

Alfonso Jurado 30-05-2019 14:10:55

Fallo en el refresh de una ADOTable
 
Tengo un botón en el que elimino tanto las lineas como la cabecera de un albarán de expedición.
Una vez borradas usando querys, quiero refrescar la tabla de la cabecera para que en la ventana donde se pintan los datos la información se vea correctamente. El problema es que use un refresh (ya se que no debe de funcionar) o use un requery siempre me sale el error "Could not convert variant type (Null) into type (Boolean)".

El código que he usado es este:
Código Delphi [-]
procedure TfrmControlExpedicion.CategoryButtons1Categories0Items2Click(Sender: TObject);
var
 SavePlace : TBookmark;
begin
   if tControlExpedicion.FieldValues['id']<>null then begin
     if MessageDlg('¿Seguro que desea eliminar este registro?', mtConfirmation, [mbOK,mbNo], 0) = mrOK then begin
     
        Screen.Cursor := crHourGlass;
    borraLineas.active:=false;
    borraLineas.sql.text:='delete from  controlExpedicionLineas where idControlExpedicion='+inttostr(tControlExpedicion.FieldValues['id']);
    borraLineas.execSQL;
    
    qConsultaLineas.active:=false;
    qConsultaLineas.active:=true;
    
    
    
    borraLineas.active:=false;
    borraLineas.sql.text:='delete from  controlExpedicion where id='+inttostr(tControlExpedicion.FieldValues['id']);
    borraLineas.execSQL;
    Screen.Cursor := crDefault;
    Application.MessageBox ('Registro eliminado.', 'Eliminado', MB_ICONINFORMATION);
    
    SavePlace := tControlExpedicion.GetBookmark;
    tControlExpedicion.Requery();
    tControlExpedicion.GotoBookMark(SavePlace);
    tControlExpedicion.FreeBookMark(SavePlace);
    
     end;
   end
   else begin
    Application.MessageBox ('ATENCION! No existe ningún registro para ser eliminado', 'Error', MB_ICONWARNING);
   end;
end;

¿Alguien sabría decirme que está pasando? Gracias

Casimiro Notevi 30-05-2019 15:03:32

Si no dices dónde sale el error.

oscarac 30-05-2019 21:28:10

debes dar mas informacion
como por ejemplo

llega a borrar el registro?

porque el mensaje te esta diciendo que no puede convertir una variable tipo Null en booleana

quiza el tema esté en el query que estas ejecutando

yeyo 31-05-2019 08:30:56

yo no utilizaría fieldvalues. Intentalo con fieldbyname('id').asstring en todas partes. Al margen del error, el código será más rápido puesto que no estará convirtiendo continuamente de variant a string. ¿tienes algún motivo especial en utilizar fieldvalues['id']?

newtron 31-05-2019 09:16:52

¿Es posible que al hacer el "requery" se pierdan los valores de los bookmarks?

Alfonso Jurado 06-06-2019 11:44:39

Efectivamente, cuando hace el requery se pierden los valores de los bookmarks. He intentado almacenar en que posición de la tabla estoy, en plan coger el anterior o el posterior registro ( SavePlace := tControlExpedicion.GetBookmark... ) pero el error sale siempre el mismo.

El borrado lo hace,tanto de las lineas como de la cabecera, pero el refresco no. En la tabla no tengo programado ningún evento para después de borrar o similar.


La franja horaria es GMT +2. Ahora son las 00:32:40.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi