PDA

Visualizza la versione completa : [DELPHI] Errore inserimento in tabella dopo svuotamento (con BDE e Paradox)


Gfff
04-01-2009, 12:46
Salve a tutti,
Programmo con Delphi 2009, la mia applicazione deve accedere al Db Paradox e cancellare tutti i record, per farlo uso il componente Ttable: setto active su false e uso la funzione emptytable.
Dopo che cancella tutti i record, andando a insere nuovi record, imposto active su true. al momento in cui Ttable.active passa da false a true esce quest'errore:

EAccessViolation with message 'Access violation at address 4BE25C05 in module 'IDAPI32.DLL'. Read of address 00000006'. Process Project1.exe (5248)

Non capisco come devo fare per risolverlo, nn posso fare nessuna operazione sul database.sapete aiutarmi? Grazie anticipatamente.

Gfff
10-01-2009, 19:37
up

Gfff
13-01-2009, 09:08
Nessuno mi sa aiutare?

123delphi321
13-01-2009, 09:56
non ho mai lavorato con Paradox....

perche' imposti la tabella su active=False?????

non e' che cerchi di eliminare qualche record referenziato in altra tabella?

posta la struttura del tuo database

alka
13-01-2009, 11:21
Credo anche io siano necessarie ulteriori informazioni, almeno uno stralcio di codice, per poter indagare più a fondo sul problema e ipotizzare una soluzione: l'errore potrebbe anche annidarsi in un utilizzo errato o improprio dei metodi del componente, o altrove.

Ciao! :ciauz:

Gfff
13-01-2009, 16:23
ecco: =)
Form1.Table1.Active:= False;
Form1.Table1.Exclusive:= True;
Form1.Table1.Open;
Form1.Table1.EmptyTable;
Form1.Table1.Close;
Form1.Table1.Exclusive:= False;

ma l'errore esce ogni qualvolta accedo al DB dopo aver eseguito il cpmando emptytable

La struttura cmq è questa:
ID string primaryindex size=5
Name string secondary index size=255
Type string secondary index size=40
Year smallint secondary index
Dir string size=255
Details memo size=240
campo6 memo size=240
campo7 graphics size=240

nessun record referenziato. Solo questo.

Gfff
13-01-2009, 21:27
STRANEZZE!!!

L'errore accade solo in delphi 2009, io sto scrivendo due applicazioni differenti una in D7 e l'altra in D2009, per prova sto la stesse righe di codice. I risultati sono i seguenti.

Dopo che cancello tutti i record con delphi con le righe precedentemente postate o queste:



x:=0;
repeat
Form1.Table1.RecNo:= x;
Form1.Table1.Delete;
x:= x+1;
until Form1.Table1.RecNo=0;


esce lo stesso tipo di errore alla fine. Ho provato a scollegare Table1 runtime per poi riattivarlo: ogni volta che si riattiva esce l'errore.

Delphi 7 invece gestisce tutto correttamente(ho provato sl a collegarmi allo stesso DB vuoto, non mi da nessun errore, e con la procedure descritta nell'altro post l'ho ripopolato).
Dopo averlo ripopolato l'applicazione in D2009 è ritornata a funzionare.
Cm lo spiegate? Sbaglio qualcosa io?

Mi piacerebbe chiederlo al "Guru" Marco Cantù.=)

123delphi321
13-01-2009, 21:46
devi per forza usare le BDE?

Gfff
13-01-2009, 22:18
Che mi suggerisci di utilizzare?

123delphi321
13-01-2009, 22:24
io mi sono trovato benissimo utilizzando Firebird.... all'epoca mi consigliò Alka, e certamente non cambiere!

Loading