Newsgroup: it.comp.lang.delphi
Titolo: Tabella .DB Danneggiata

Ciao a tutti, purtroppo, a causa di un Black Out della rete elettrica, mi si 
è danneggiata una tabella paradox .db, ora infatti se cerco salvare su di 
essa qualche dato mi compare il seguente errore:
Key Violation
Siccome la tabella contiene parecchi dati importanti non esiste qualche modo 
per farla tornare in "vita".
Grazie 1000
ciao ciao
-- 
Lorenzo Mendini Iz2FOS
ICQ: 26993628 (Ayrton)
http://www.polopositivo.org
 (Home Page) 

 per farla tornare in "vita".
Puoi tentare di "ripararla" usando *Database Desktop*, un programma che 
viene fornito dall'alba dei tempi con Delphi. :-)
Il risultato non è garantito...è un po' lo "scotto" che si paga 
abbastanza frequentemente utilizzando database di tipo file based.
Ciao!
-- 
Marco «Alka» Breveglieri
  ABLS Team S.n.c. - Software & Web
  Via De Gasperi, 14
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it

Scusa ma dove devo andare (intendo in Database Desktop) per riparala?
Che comando devo usare? Grazie 

 Che comando devo usare? Grazie 
Scegli la voce di menu [Tools|Utilities|Restructure...], selezioni dalla 
finestra di dialogo l'alias BDE o il percorso fisico della tabella e 
confermi la selezione...poi vedi cosa accade incrociando le dita. :-)
Magari, fai prima una copia di backup nel caso in cui la situazione 
peggiori (e magari qualcun altro conosce soluzioni migliori per il 
recupero della tabella originale danneggiata).
Ciao! :-)


Ho provto ma purtroppo non riparte, lui ristruttura, salva ma poi al momento 
dell'utilizzo la tabella da sempre lo stesso errore...

 dell'utilizzo la tabella da sempre lo stesso errore...
Comunque, l'errore *Key Violation* mi pare più dovuto ad una violazione 
di chiave, cioè al tentativo di salvare nella tabella un record con un 
valore per la chiave primaria identico a quello utilizzato per un record 
preesistente.
Sei sicuro che questo problema abbia a che fare proprio con il blackout?
Qual è la chiave primaria della tua tabella?



Tanto tempo fa (in una galassia lontana lontana) avevo avuto dei
problemi con gli indici, spulciando tra il vecchio codice ho trovato
questo, provalo, male non gli fa ;-)
procedure TMain.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    ReindexTable (OpenDialog1.FileName);
end;
procedure TMain.ReindexTable (FileName : String);
begin
  if MessageDlg (Format ('Sei sicuro di voler reindicizzare la tabella
%s?',
                 [LowerCase (FileName)]), mtConfirmation, [mbYes,
mbNo], 0) <>
    mrYes then Exit;
  Screen.Cursor := crHourGlass;
  try
    with Table1 do begin
      TableName := FileName;
      Exclusive := True;
      Open;
      try
        Check(DbiRegenIndexes(Table1.Handle));
        MessageDlg ('Ricostruzione indici terminata.', mtInformation,
[mbOk], 0);
      finally
        Close;
        Exclusive := False;
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;
Table1 è una TTable
Ciao.
-- 
Ore 18.30: premo invio.

Se l'errore è : Key Violation dovresti essere a cavallo.
Devi riaprire la tabella come ti ha detto Marco Breveglieri e poi cambi il
tipo del campo autoincremental o+/- con integer o small integer. E Salvi.
Contrlli l'ultimo record ecc....
A questo punto dovresti eseguire il processo inverso ossia cambiare il campo
da Integer ... a Autoincremental e salvare il tutto.
Ciao
Mario -(
mari...@inwind.it
)
P.S. se la tabella ti dà questi problemi ti conviene creare una sottodir di
back up. E qui copiare sia la tabella che tutti i file di indice. Questi ti
serviranno quando si ripresenterà il problema.
Oppure se proprio vuoi essere sicuro creare 2 back up uno dell'ultimo
aggiornamento ed un'altro del penultimo aggiornamento.
Devi sempre copiare tutti i file dalla dir del database.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 elettrica, mi si è danneggiata una tabella paradox .db, ora infatti
Se vuoi ho una utility "reind.exe" che ti fa selezionare l'alias Bde , poi
la tabella e puoi fare la verifica e la ricostruzione indici.
Fammi sapere ...
Giulio

Grazie a tutti, ho risolto con paradox Rebuilder, grazie 1000 alla prossima