+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Impossibile eliminare record

  1. #1
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    71

    Impossibile eliminare record

    Buongiorno a tutta la comunità e auguri di buon anno a chiunque mi legga,
    Vi sottopongo un problema riscontrato con una tabella mdb (access)
    Quando cerco di effettuare un
    codice:
    Adotable.delete
    Su un record che rappresenta l' eof della tabella
    Mi viene restituita una eccezione
    '...il record è l'inizio o la fine del file, impossibile eliminare,...'
    Tutto fila liscio se il record è posizionato 'in mezzo'
    Per sicurezza ho estrapolato il problema dall'applicazione principale
    Creando una semplice form con una dbgrid en adoconnection un adotable
    Un adodatasource ed un button che esegue
    codice:
    Adotable1.delete
    Stessa cosa.....
    Qualcuna sa darmi una dritta ?

    ...dimenticavo....
    il problema si genera solo sotto Windows 10...........
    Ultima modifica di Monti; 06-01-2018 07:56 

  2. #2
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    Luogo
    Reggio Emilia
    Post
    1,068
    Potrebbe anche trattarsi di un bug dei componenti dbGo for ADO, non si può mai dire.

    Riusciresti a isolare il problema all'interno di un progetto che faccia solo quella operazione, giusto per verificare che si ripeta e per avere un prototipo valido da testare e sottoporre eventualmente al portale Quality Central nel caso si trattasse di un bug vero e proprio?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Homepage | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  3. #3
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    71

    isolato il problema

    fatto:
    codice:
    program Project1;
    
    uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};
    
    {$R *.res}
    
    begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    e la sua unit :
    codice:
      TForm1 = class(TForm)
        ADOConnection1: TADOConnection;
        ADOTable1: TADOTable;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
       adotable1.delete;
    end;
    Tutte le impostazioni della TADOConnection e della TADOTAble
    sono relative alla configurazione di default, tranne che per la
    proprietà LookType di ADOTAble che è settata a : LtBatchOptimistic
    al fine di poter usare la transizioni multiple.
    La proprietà cursorType si setta automaticamente a : ctStatic per Access...

    procedo con il test...

  4. #4
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    71
    Credo di aver trovato il 'problema':
    Io uso la proprietà 'CacheSize' di ADOTable settata a + di 1 !!!
    convinto, erroneamente, che servisse a stabilire quante connessioni
    simultanee si potessero effettuare contemporaneamente alla tabella !!!!
    Mentre, riguardando i manuali, sono tutt'altra cosa !!
    Impostando il valore a '1', come di default l'eccezione sparisce...
    Solo con Windows10 questo errore è stato evidenziato, con le versioni
    precedenti filava liscio ugualmente.

  5. #5
    Monti non è in linea Scolaretto
    Luogo
    Lecce
    Post
    71
    continuando a testare mi pare di capire che il 'limite' sia imposto
    dal Provider: Microsoft Jet 4.0
    ....correggetemi se sbaglio

    anche se, utilizzando il recente 'Microsoft Office 12.0 Access database Engine',
    non cambia nulla.

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi