PDA

Visualizza la versione completa : [delphi 5] Errore Strano Sul Post


niquesca
21-12-2004, 14:42
Salve !

Utilizzo Delphi 5 Paradox e BDE 5.01 durante il salvaggio record ho il seguente errore.

Si è verificata un eccezione sul database n. 10030 con messaggio invalid BLOB handle in record buffer


Il database ha 3 campi MEMO e un campo FORMATTED MEMO CON 179 RECORD.
L'HO GIA' RISTRUTTURATO CON SUCCESSO....NON SO PIU' COSA FARE....

HELP ME!
GRAZIE

alka
21-12-2004, 15:13
Originariamente inviato da niquesca
Utilizzo Delphi 5 Paradox e BDE 5.01 durante il salvaggio record ho il seguente errore [...]

Senza avere sotto osservazione il codice che opera sulla tabella, è improbabile riuscire ad individuarne la causa.

Questo errore si verifica sempre ad ogni tentativo di salvataggio oppure solo in particolari occasioni?

Ciao! :ciauz:

P.S.: ma quando morirà definitivamente questo BDE? :D

AlbertoPicca
21-12-2004, 15:32
Originariamente inviato da alka
P.S.: ma quando morirà definitivamente questo BDE? :D
Dai, non dire così! Per le piccole cose può ancora andare bene...


Originariamente inviato da niquesca
Utilizzo Delphi 5 Paradox e BDE 5.01 ...

Che versione usi di Paradox?

:ciauz:

niquesca
21-12-2004, 15:33
Ciao Alka...

Direi che si verifica quasi sempre quando salvo!

ciao ciao

alka
21-12-2004, 15:35
Originariamente inviato da niquesca
Direi che si verifica quasi sempre quando salvo!

Bisognerebbe vedere le differenze di quello che avviene quando si rientra nel caso del quasi e quando invece si rimane fuori. :)

niquesca
21-12-2004, 20:06
Hai perfettamente ragione, il punto è che non riesco a capire da cosa dipenda, anche perchè ha sempre funzionato bene, oggi ad un certo punto è uscito l'errore, così ho ripristinato un vecchio
database l'ho riempito con i dati che mancavano ed ora pare che funzioni. Ma mi chiedo è possibile che un file ristrutturato con successo, possa invece nascondere delle problematiche cos' importanti al punto da non farti salvare il nuovo record? anche perchè il problema si verifica solo facendo un inserimento...non vorrei tra un pò di tempo ritrovarmi con lo stesso problema.

Hai qualche idea per caso?

AlbertoPicca
21-12-2004, 20:57
Che versione usi di Paradox?

alka
22-12-2004, 09:42
Originariamente inviato da niquesca
il punto è che non riesco a capire da cosa dipenda, anche perchè ha sempre funzionato bene, oggi ad un certo punto è uscito l'errore, così ho ripristinato un vecchio
database l'ho riempito con i dati che mancavano ed ora pare che funzioni. Ma mi chiedo è possibile che un file ristrutturato con successo, possa invece nascondere delle problematiche cos' importanti al punto da non farti salvare il nuovo record? anche perchè il problema si verifica solo facendo un inserimento...non vorrei tra un pò di tempo ritrovarmi con lo stesso problema.

Il problema che hai riscontrato è comune a tutti i database di tipo "file based", cioè basati su file.

Questa famiglia di database è estremamente sensibile a "danneggiamenti". Basta un calo di tensione con un improvviso spegnimento del PC a renderne irrecuperabili tutti i dati, poichè essendo regolati dall'accesso diretto ai file delle tabelle, se qualcosa va storto durante la scrittura di informazioni, il rischio minore è la perdita di dati ridondanti, il rischio maggiore è la perdita dell'intera tabella.

Il database Paradox appartiene a questo gruppo.

L'unico modo per mettersi al riparo (il più possibile) da eventi di questo genere è adottare un formato di database che, seppure basato su file, gestisca informazioni ridondanti e file aggiuntivi in grado di consentire un recupero di informazioni in caso di emergenza.

L'alternativa molto valida, che è quella che io suggerisco, consiste nell'adottare un database di tipo client/server, come InterBase o FireBird (ampiamente utilizzabili nell'ambiente Borland), accedendo attraverso componenti nativi (come "InterBase Express" per InterBase) oppure attraverso "dbExpress" (da Delphi6 in poi).

Nei casi più delicati, è possibile spostare la componente "server" su un PC dedicato, magari alimentandolo con un gruppo di continuità per maggiore sicurezza, e accedere a tale PC per interrogare la base dati dalle macchine in rete che fungono da "client", riducendo il traffico di dati, ottimizzando le prestazioni e operando in sicurezza.

La semplicità di alcuni di questi database, che richiedono comunque un minimo di "know how" iniziale per essere sfruttati al meglio, è tale da renderli una valida e sicura alternativa anche per le applicazioni più semplici, soprattutto da quando vengono prodotti in versione "embedded", senza la necessità di installare software manualmente ma incorporando tutto il necessario nella propria applicazione.

I componenti disponibili per l'accesso a questo tipo di database spesso sono leggeri, portabili, performanti, non richiedono "alias" o altre amenità del genere, semplificando così la distribuzione (deploy) delle applicazioni, la loro installazione e configurazione, con tutti i vantaggi derivanti.

Per il tuo problema specifico, concludendo, posso solo suggerirti di dotare la tua applicazione di meccanismi automatici per il backup dei dati (copia dei file delle tabelle), magari più volte al giorno oppure all'avvio dell'applicazione, in modo da scongiurare il più possibile perdite gravi di dati, come i documenti fiscali archiviati in un intero anno di attività. Non risolvi prettamente il problema, ma ti ripari al meglio.

Ad ogni modo, non sottovaluterei il passaggio ad un DB un po' più...serio. :)

Ciao! :ciauz:

Loading