PDA

Visualizza la versione completa : [DELPHI] Errore "DB not in edit or insert mode"


Gfff
04-01-2009, 15:27
Mi esce questo errore ma il codice è il seguente:
Uso il database paradox e le componenti BDE.
procedure TForm1.Button1Click(Sender: TObject);
var i,l:integer;
begin
namelist:= TStringList.Create;
FilesList:= TStringList.Create;
Table1.Open;
Table1.Edit;
for i:= 0 to FilesList.Count-1 do
begin
Table1.Insert;
l:= Table1.RecordCount+1;
Table1ID.Value:= IntToStr(l+i);
Table1Name.Value:= nameList.Strings[i]; <- mi indica questa riga come riga d'errore
Table1Dir.Value:= FilesList.Strings[i];
Table1.Post;
end;
FilesList.Free;
NameList.Free;
end;

sbaglio qualcosa?

Grazie anticipatamente!

Gfff
10-01-2009, 19:38
up

123delphi321
10-01-2009, 20:12
Originariamente inviato da Gfff
Mi esce questo errore ma il codice è il seguente:
Uso il database paradox e le componenti BDE.
procedure TForm1.Button1Click(Sender: TObject);
var i,l:integer;
begin
namelist:= TStringList.Create;
FilesList:= TStringList.Create;
Table1.Open;
Table1.Edit;
for i:= 0 to FilesList.Count-1 do
begin
Table1.Insert;
l:= Table1.RecordCount+1;
Table1ID.Value:= IntToStr(l+i);
Table1Name.Value:= nameList.Strings[i]; <- mi indica questa riga come riga d'errore
Table1Dir.Value:= FilesList.Strings[i];
Table1.Post;
end;
FilesList.Free;
NameList.Free;
end;

sbaglio qualcosa?

Grazie anticipatamente!

ciao

che errore esce?
quando posti un problema cerca anche di dare quante piu' indicazioni possibili...

come hai dichiarato queste variabili???
namelist
FilesList


io penso che nel momento che crei nomelist la stessa variabile e' vuota,... di conseguenza come fai ad estrargli un valore nameList.Strings[i] ???

fai attenzione BDE sono componenti un poco obsoleti... quando li stavo usando io mi consigliarono di utilizzare un databese diverso: Interbase/Firebird

Gfff
10-01-2009, 20:25
L'errore che mi esce è: 'Table1: dataset not in insert or edit mode'
cmq ho tolto la parte dell'utilizzo delle stringlist per abbreviare il codice

procedure TForm1.Button1Click(Sender: TObject);
var i,l:integer;
begin
Table1.Open;
Table1.Edit;
for i:= 0 to FilesList.Count-1 do
begin
Table1.Insert;
l:= Table1.RecordCount+1;
Table1ID.Value:= IntToStr(l+i);
Table1Name.Value:= nameList.Strings[i]; <- mi indica questa riga come riga d'errore
Table1Dir.Value:= FilesList.Strings[i];
Table1.Post;
end;
FilesList.Free;
NameList.Free;
end;

ho pensato che dopo il Post il dataset si chiudesse quindi ho provato così:
open;
edit;
begin for
insert;
end for
post;

nnt

ho provato anche così:
begin for
open;
edit;
insert;
post;
end for;

nnt anche qui...ho provato anche su Delphi 7...stesso errore.

Ci seve essere qualcosina che nn va. Il programma deve inserire una serie di record duramte il ciclo for. I record sono tanti(migliaia).

Le informazioni sono utili?

123delphi321
10-01-2009, 20:55
prova

table1.append

al posto di table1.insert

ciao

Gfff
10-01-2009, 21:39
grazie tante!

alka
13-01-2009, 12:23
L'errore è probabilmente dovuto al fatto che invochi il metodo Edit e poi il metodo Insert, non si sa bene perché... :)



Table1.Open;
Table1.Edit;
for i:= 0 to FilesList.Count-1 do
begin
Table1.Insert;
l:= Table1.RecordCount+1;
Table1ID.Value:= IntToStr(l+i);
Table1Name.Value:= nameList.Strings[i]; <- mi indica questa riga come riga d'errore
Table1Dir.Value:= FilesList.Strings[i];
Table1.Post;
end;


Togli la chiamata al metodo Edit, che non serve.

Ciao! :ciauz:

Gfff
13-01-2009, 16:32
ok ora provo...grazie=) :ciauz:
edit perchè avevo letto così in una guida, programmo da poco. =)

Gfff
13-01-2009, 16:44
Ora il problema è risolto, però ,mi esce l'errore: ' Key Violation '

La tabella è strutturata così:
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

alka
13-01-2009, 17:19
Originariamente inviato da Gfff
edit perchè avevo letto così in una guida
Sì, però immagino fosse inserito in un contesto, e comunque non assieme a Insert. :stordita:


Originariamente inviato da Gfff
Ora il problema è risolto, però ,mi esce l'errore: ' Key Violation '

Hai inserito un record che ha la stessa chiave primaria (che lo identifica univocamente) uguale a quella di un altro record già presente.

Ciao! :ciauz:

Loading